无法在代码中添加循环

标签 c loops

用户必须输入 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/

相关文章:

c++ - 需要有关使用 for 循环显示我的数组的帮助

c++ - nvcc编译后出现段错误

C: 方程式只出现一次

r - 尝试对多个数据帧重复相同的代码

python - 对两个文本文件求和

c - 虽然循环不会像 C 中预期的那样中断

c - 两个功能同时发生

c - float 的平方

c - C中数学计算的库是什么?

java - 如何完成这部分代码?