用户必须输入 1
之间的数字和9999
(例如 2345
)并且程序应检查以下关系是否成立:
(23)+(33)+(43)+(53) = 2345
并且它还必须检查从 1 到用户输入的数字的所有数字。
我的问题是:循环出了什么问题?
#include <stdio.h>
#include <math.h>
int main () {
int m, j, k, l; int i, q, n;
printf("Enter a number from 1 to 9999 \n");
scanf("%d", &n);
if (n<1 || n>9999) {
printf("the number is to low/high \n");
return 0;
}
for (i = 1; i <= n; i++) {
m = i % 10;
j = i / 10 % 10;
k = i / 10 / 10 % 10;
l = i / 10 / 10 / 10 % 10;
q = pow(l, 3) + pow(k, 3) + pow(j, 3) + pow(m, 3);
if (q == n) {
printf("%d \n", q);
}
}
return 0;
}
附注:几个月前我实际上解决了这个问题,但我删除了问题所在的文件夹,现在我不知道如何使这个循环再次工作。
最佳答案
当您检查结果时,问题就在这里:
if (q == n) {
您正在根据您选择的顶部数字(而不是当前数字)检查结果。
将其更改为与当前数字进行比较:
if (q == i) {
以 9999 作为输入,输出为:
1
153
370
371
407
关于无法在代码中添加循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34884845/