c语言 输入一个正整数n(3<=n<=7),输出水仙花数。水仙花数是一个n位正整数,

c语言
输入一个正整数n(3<=n<=7),输出所有的n位水仙花数。水仙花数指的是一个n位正整数,它的各位数字的n次幂之和等于它本身。例如153的各位数字的立方和1^3+5^3+363=153.编写程序,下面是我编的,初学者来的,我有个问题
貌似可以运行了这个程序,但是为什么我输入3,它出来结果了,接着想输入5就运行不了了,输入非3到7的值却可以运行 elseprintf输入错误,是我的while语句有问题?还是if语句有问题,求高手指教

#include<stdio.h>
#include<math.h>
int main()
{
int n,i,a=9,sum=0,b,t=1;
double c=0;
while(1)
{
printf("输入水仙花数n,3<=n<=7\n");

scanf("%d",&n);

if(n>=3 && n<=7)
{
for(i=1;i<=n;i++)
{
sum=sum+a;
a=a*10;
t=t*10;
}
t=t/10;
for(t;t<=sum;t++)
{
b=t;
while(b !=0 )
{
c=c+pow(b%10,n);
b=b/10;
}
if(c==t)
{
printf("输出水仙花数为:\n");
printf("%d\n",t);
}
else c=0;
}
}
else
printf("输入错误,n的值应该在3到7之间\n");
}
return 0;
}

你的sum, a, t每次循环开始要归为初始值。
还有你搞得太麻烦了,直接t = pow(10, n); sum = t * 10 - 1 就好了
温馨提示:内容为网友见解,仅供参考
无其他回答

c语言 输入一个正整数n(3<=n<=7),输出水仙花数。水仙花数是一个n位...
你的sum, a, t每次循环开始要归为初始值。还有你搞得太麻烦了,直接t = pow(10, n); sum = t * 10 - 1 就好了

c语言 输入一个正整数n(3<=n<=7),输出所有的n位水仙花数?
int main(){ int n,i,a,b=0,c1,c2,c3,c4,c5,c6,c7,s[1000];printf("输入位数:\\n");scanf("%d",&b);if(b<3||b>7) return 44;a=b;n=1;do{ n*=10;a--;}while(a);a=0;printf("%d\\n",b);for(i=n\/10;i<n;i++){ if(b==3){ c1=i%10;c2=i\/10%10;c3=i...

输出水仙花数。输入一个正整数n(3≤n≤7),输出所有的n位水仙花数,试
printf("请输入n的值:");scanf("%d",&n);while(n<3||n>7){ if(n>=3&&n<=7){ break;} printf("请输入一个大于等于3或小于等于7的数!\\n");printf("\\n");printf("请输入n的值:");scanf("%d",&n);} if(n==3){ printf("1000以内的水仙花数有:");for(i=100;i<=999...

C语言,输出水仙花数。输入3<=n<=7,输出所有的n位水仙花数。 为什么...
会有歧义{ int i=1, a=1; while(i<=y) { a = a * x; i++; } return a;}int main(void){ int i,h,n,s,m=0,b; printf("输入n位数字(3<=n<=7)"); scanf("%d",&n); for(

什么是水仙花数?
水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例 如:153 = 13 + 53+ 33。 本题要求编写程序,计算所有N位水仙花数。输入格式:输入在一行中给出一个正整数N(3<=N<=7)。输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。输入样例:3 输出样例...

C语言的水仙花数,怎么搞?
scanf("%d",&N);\/\/输入 for(i=pow(10,N-1);i<pow(10,N);i++)\/\/N是几位数,循环就从10的N-1次方至N次方,比如说N为3,那就是10的2次方(100)至10的3次方(1000){ sum=0;n=i;while(n){ sum+=pow(n%10,N);\/\/计算每一位的N次方的和至sum n=n\/10;} if(sum==i) ...

C语言编程输入一个三位正整数判断是否为”水仙花数”所谓水仙花是指一个...
\/\/提示:153 370 371 407 是水仙花数 include<stdio.h> void main(){ int i,j,k,n;printf("请输入一个三位整数\\n");scanf("%d",&n);i=n\/100; \/*分解出百位*\/ j=n\/10%10; \/*分解出十位*\/ k=n%10; \/*分解出个位*\/ if(i*100+j*10+k==i*i*i+j*j*j+...

c++题输入一个3到7的正整数n,输出所有n为数的水仙花数
一、水仙花数是指一个n位正整数(n>=3),如果这个数的每个位上的数字的n次幂之和等于它本身(例如:1^3 + 5^3 + 3^3 = 153),就称这个数为水仙数。所以,要判断一个数是不是水仙数,关键就是要取得各个位上的数字,然后累计它们的n次方和,再进行判断。取得各个位上的数字可以通过取余...

c语言中,如何输出所有的水仙花数
在C语言中,输出所有的水仙花数的步骤如下:1. 确定水仙花数的定义:水仙花数,也就是三位自幂数,指的是一个三位数,它的每个位上的数字的立方和等于它本身。2. 编写判断水仙花数的函数:这个函数需要提取输入数值的个位、十位和百位数字,计算它们的立方和,并与原数值比较以确定是否为水仙花数。3....

水仙花数c语言
C语言输出水仙花数的具体分析和实现流程如下:1、水仙花数的含义 “水仙花数”是一个三位数其各位数字的立方和等于该数本身。例如:3^3 + 7^3+ 0^3 = 370 2、算法分析 把给出的某个三位数的个位、十位、百位分别拆分,并求其立方和(设为sum),若sum与给出的三位数相等, 则为“水仙花数”...

相似回答