gpt4 book ai didi

c - 找到小于给定整数的最大有趣数

转载 作者:行者123 更新时间:2023-11-30 16:55:46 24 4
gpt4 key购买 nike

如果一个数字翻转后能被它所包含的位数整除,那么这个数字就很有趣。因此程序应该从 SI 读取一个整数 n(n>9)。查找并打印小于n的最大有趣数字。如果输入的数字无效,则应打印“无效输入”。这是我写的代码,但我无法让它工作。我恳请您提供一些帮助。提前致谢

#include <stdio.h>
#include <stdlib.h>

int main()
{
int n, flippedNumber=0, remainder;
int count = 0, i;
scanf ("%d", &n);
int largestInteresting = n;
while ( n != 0)
{
n /= 10;
++count;
}
while (n > 9)
{
for (i = 0; i < n; i++)
{
remainder = n%10;
flippedNumber = flippedNumber*10 + remainder;
n /= 10;
}
--largestInteresting;
}
if ((flippedNumber % count) == 0 && largestInteresting > i)
printf ("%d", largestInteresting);
else
printf ("Invalid input");
return 0;
}

最佳答案

您的代码存在问题:您有效地销毁了 n 来进行数字计数,但随后尝试将其重新用于其他用途而不刷新其值(形成largestInteresting?);您不会在对输入数字进行倒计时的循环中进行有趣的数字检查,因此您永远找不到您要查找的内容;您可以等到循环完成后再进行有趣的数字测试,但如果您正在倒计时,一旦找到第一个有趣的数字,就不需要完成循环。

我下面的返工结合了上面我扭曲的解释以及一些风格调整:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int number;

(void) scanf ("%d", &number);

if (number < 10)
{
fprintf(stderr, "Invalid input\n");
return EXIT_FAILURE;
}

for (int n = number; n > 9; n--)
{
int digitCount = 0;
int temporary = n;

while (temporary != 0)
{
temporary /= 10;
++digitCount;
}

int flippedNumber = 0;
temporary = n;

for (int i = 0; i < digitCount; i++)
{
int remainder = temporary % 10;
flippedNumber = flippedNumber * 10 + remainder;
temporary /= 10;
}

if ((flippedNumber % digitCount) == 0)
{
printf("%d\n", n);
return EXIT_SUCCESS;
}
}

fprintf(stderr, "No interesting numbers found!\n");
return EXIT_FAILURE;
}

使用示例

> echo 10 | ./a.out
No interesting numbers found!
> echo 100 | ./a.out
89
> echo 1000 | ./a.out
999
> echo 10000 | ./a.out
8899
> echo 100000 | ./a.out
59999
> echo 1000000 | ./a.out
899997
>

关于c - 找到小于给定整数的最大有趣数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40197908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com