1163028233 发表于 2021-3-6 20:40:37

水仙花问题

#include<stdio.h>
int main(){
    int i, j , k, n, count=0;
    printf("找到的水仙花数有:\n");
    for(n=100;i<1000;i++){
      i=n/100; j=n/10%10; k=n%10;
      if(i*i*i+j*j*j+k*k*k==n){
            printf("%d, ", n);
            count++;
      }
    }
    printf("\n水仙花个数=%d\n", count);
    return 0;
}


然后在第五行for循环那i<1000处报错,想问下是什么情况

昨非 发表于 2021-3-6 21:19:41

小兄弟,
循环变量不是n吗?
   for(n=100;n<1000;n++)

1163028233 发表于 2021-3-6 21:36:55

昨非 发表于 2021-3-6 21:19
小兄弟,
循环变量不是n吗?
   for(n=100;n

用n也不对啊,程序也不能运行

baige 发表于 2021-3-6 22:21:21

#include<stdio.h>

int main(){
    int i, j , k, n, count=0;
    printf("找到的水仙花数有: \n");
    for(n=100;n<1000;n++) {
      i=n/100; j=n/10%10; k=n%10;
      if(i*i*i+j*j*j+k*k*k==n){
            printf("%d, ", n);
            count++;
      }
    }
    printf("\n水仙花个数=%d\n", count);
    return 0;
}

墙里秋千墙外荡 发表于 2021-3-6 22:22:37

本帖最后由 墙里秋千墙外荡 于 2021-3-6 22:23 编辑


#include<stdio.h>
int main(){
    int i, j , k, n, count=0;
    printf("找到的水仙花数有:\n");
    for(n=100;n<1000;n++){
      i=n/100; j=n/10%10; k=n%10;
      if(i*i*i+j*j*j+k*k*k==n){
            printf("%d, ", n);
            count++;
      }
    }
    printf("\n水仙花个数=%d\n", count);
    return 0;
}

运行结果(贴不了图啊)
找到的水仙花数有:
153, 370, 371, 407,
水仙花个数=4
Press any key to continue

bangbang-ande 发表于 2021-3-7 13:00:19

1163028233 发表于 2021-3-6 21:36
用n也不对啊,程序也不能运行

请发送一下报错内容

bangbang-ande 发表于 2021-3-7 13:00:49

1163028233 发表于 2021-3-6 21:36
用n也不对啊,程序也不能运行

我这边改了之后就可以运行了

好兄弟蹭波线 发表于 2021-3-7 22:39:48

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void test01()
{
        int hunderd;//百位
        int ten;//十位
        int ge;//个位

        for (size_t i = 100;i<1000;i++)
        {
                hunderd = i / 100%10;
                ten = i / 10 % 10;
                ge = i % 10;
                //判断是否为水仙花数
                if (i == (ge * ge * ge + ten * ten * ten + hunderd * hunderd * hunderd))
                {
                        printf("%d", i);
                }
        }
        printf("\n");
}

int main(int argc, char* argv[])
{
        test01();
        system("pause");
        return 0;
}

心驰神往 发表于 2021-3-8 08:09:06

#include <stdio.h>
#include <math.h>

int main()
{
        intm, i, count;
       
        printf("请输入位数:");
        scanf("%d", &m);
       
       
        i = pow(10,m - 1);
        count= 0;

        while (i < pow(10,m))
        {
                int j = i;//将i赋值给j进行循环,方便判断是否符合水仙花数的要求以及最后输出正确数字
                int sum = 0;
                while (j > 0)
                {
                        int n;
                        n = j % 10;//算出最后一位 ,因为不需要从第一个开始
                        j /= 10;//去掉最后一位
                        sum += pow(n, m);
                }
               
                if (sum == i)
                {
                        printf("%d\n", i);
                        count += 1;
                }
                i++;
        }
        printf("一共有%d个符合要求数字\n", count);
       
        return 0;
}
页: [1]
查看完整版本: 水仙花问题