输入两个正整数m和n(m≥1,n≤1000),输出m到n之间的所有水仙花数。

作者&投稿:进颜 (若有异议请与网页底部的电邮联系)
输入两个正整数m和n(m≥1,n≤1000),输出m到n之间的所有水仙花数。~

inline int sqr(int a, int b)//a的 b次方.{ if(b == 0)return 1; int c = a; while(--b)c = c * a; return c;}int main(){ int min = 100, max = 1000000;//在这输入最小数和最大数.或换代码动态输入. int sum = 0, size, n[100];//最大支持100位的水仙花数 for(int i = min; i <= max; i++) { sum = i; size = 1; while(sum /= 10)size++;//sum 临时用来计算长度. sum = 0; for(int k = 0; k < size; k++) { n[k] = i / sqr(10, size - k - 1) % 10;//取出位数 sum += sqr(n[k], size);//本来是放在另一个循环里的,为了减少代码放在一起了. } if(sum == i) printf("%d
",i); }}

输入自己写。
for(int i=m; i<=n; i++){ int a,b,c; a=i/100; b=i/10%10; c=i%10; if(a*a*a+b*b*b+c*c*c==i){ //一个结果 }}

#include<stdio.h>
#include<math.h>
int main(void)
{
int m,n,i,sum,a;
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
//int sum ;
for(i=m;i<=n;i++){
a=i;
sum=0;//下一个数,sum要重新回零咯 ,找的我晕啊~
/*假设是153-153(没错)
do{

sum=sum+pow(a-10*(a/10),3);//获取个位上的数字
a=a/10;
}while(a!=0);
第一次:sum=sum+pow(a-10*(a/10),3);//获取个位上的数字 153-10*15 sum = 0+pow(3,3)
第二次:a = 15 sum=sum+pow(a-10*(a/10),3);//获取个位上的数字 15-10*1 sum = 9+pow(5,3)
第三次:a = 1 sum=sum+pow(a-10*(a/10),3);//获取个位上的数字 1-10*0 sum = 9+125+pow(1,1)
*/
do{
sum=sum+pow(a-10*(a/10),3);//获取个位上的数字
a=a/10;
}while(a!=0);
//printf("sum = %d\n",sum);//加个输出语句监听 发现 了错误!!
if(i==sum){
printf("%d\n",i);
}
}
return 0;
}
//同学,求采纳 ,呵呵 我可是认真 分析了很久

#include<stdio.h>
#include<math.h>
int main(void)
{
int m,n,i,sum,a;
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
for(i=m;i<=n;i++){
sum=0;
a=i;
do{
sum=sum+pow(a-10*(a/10),3);
a=a/10;
}while(a!=0);
if(i==sum){
printf("%d\n",i);
}
}
return 0;
}

输入自己写。

for(int i=m; i<=n; i++){
    int a,b,c;
    a=i/100;
    b=i/10%10;
    c=i%10;
    if(a*a*a+b*b*b+c*c*c==i){
        //一个结果
    }
}


sum在循环中没有确保每次的循环时初值都为0,当m和n都是153是可以的,有个范围就会有影响了


.输入两个正整数m和n,求其最大公约数和最小公倍数。
if(n<m)\/\/把大数放在n中,把小数放在m中.{temp=n;n=m;m=temp;} p=n*m;\/\/P是原来两个数n,m的乘积.while(m!=0)\/\/求两个数n,m的最大公约数.{ r=n%m;n=m;m=r;} printf("Its MAXGongYueShu:%d\\n",n);\/\/打印最大公约数.printf("Its MINGongBeiShu:%d\\n",p\/n);打印最...

输入2 个正整数m和n(1<=m,n<=500),统计并输出m 和n之间的素数的个数...
include <stdio.h>int IsPrime(int i){ int j=0; for(j=2;j<i;j++){ if(0==(i%j)){ return 0; } }return 1;}void main(){int m,n,i;scanf("%d %d",&m,&n);for(i=m+1;i<n;i++)if(IsPrime(i)==1)printf("%d ",i);} include <stdio.h>int...

C语言函数 【问题描述】输入2个正整数m和n(m>1,n<=500),统计并输出m...
r=1; for ( i=2;i<=m\/2;i++ ) if ( m%i==0 ) {r=0;break;} return r;}void main() { int m,n,i,k,s; scanf("%d,%d",&m,&n); k=s=0; for ( i=m;i<=n;i++ ) if ( prime(i) ) { k++; s+=i; } printf("count=%d,sum=%d\\n",k,s);} ...

输入两个正整数n和m(m<10),将其转换为m进制后输出。要求定义并调用函数...
Dectoo 函数参数1,是要转换的十进制数,参数二是 进制,小于10,参数三是 整型指针,指向 转换后的数存放的数组, 参数四是整型指针,返回转换后的数码位数。include <stdio.h> void Dectoo(int x, int base, int *r ,int *k){ int n=0,i,t;while (x>=1){ r[n]=x%base;x=x\/...

编写程序,输入两个正整数m和n,输出m和n之间的素数并统计素数的个数...
2、在窗体上添加控件:lable控件,text值为“输入一个数,判断是否是素数”;一个textbox控件(tb_inputvalue),用来输入要判断的素数。3、素数设计算法。4、素数设计算法:取消检测区间,提高程序效率。我们可以只判断2到n\/2之间的数,就可以知道他是不是素数了。5、获取前100之间的所有素数:从2到...

输入两个正整数m和n,求其最大公约数和最小公倍数c语言
include<stdio.h> main(){ int m,n,a,b,t,temp,h;printf("输入m和n\\n");scanf("%d%d",&m,&n);a=m;b=n;if(a

C语言编程:输入两个正整数m和n,求它们的最大公约数。
include <stdio.h> int gcd(int a,int b){ if(a%b)return gcd(b,a%b);return b;} int main(){ int m,n;scanf("%d%d",&m,&n);printf("%d\\n",gcd(m,n));return 0;}

.输入两个正整数m和n,求其最大公约数和最小公倍数
最大公因数n和最小公倍数mn

从键盘上输入两个正整数m,n,判断m能否被n整除,若能输出m与n的值,否 ...
include<stdio.h> void main() { int m,n;scanf("%d%d",&m,&n);if ( m%n==0 ) printf("%d,%d\\n",m,n);else { printf("%d: ",m); if ( m%2==0 ) printf("even\\n"); else printf("odd\\n");printf("%d: ",n); if ( n%2==0 ) printf("even\\n"); else ...

输入两个正整数N和M,求最大公约数和最小公倍数?高手帮忙呀!用C语言...
分析:求最大公约数的算法思想:(最小公倍数=两个整数之积\/最大公约数) (1) 对于已知两数m,n,使得m>n; (2) m除以n得余数r; (3) 若r=0,则n为求得的最大公约数,算法结束;否则执行(4); (4) m←n,n←r,再重复执行(2)。 例如: 求 m=14 ,n=6 的最大公约数....

西安市13113461376: C语言:输入两个正整数m和n(m≥1,n≤500),输出m和n之间的所有素数,每行输出6个 -
阎燕复方: if(flag==1&&n!=1) 这里错了你少了=

西安市13113461376: 输入2 个正整数m 和n(m≥1,n≤500),统计并输出m 和n 之间的素数的个数以及这些素数的和。
阎燕复方: 你的prime函数漏洞太多,改如下,自己看,可续问. int prime(int n){ int i; if(n==1) return 0; for(i=2;i&lt;=n/2;i++) if(n%i==0) return 0; return 1; } 应该没有问题了……

西安市13113461376: 输入两个正整数m和n(m≥1,n≤100),输出m和n之间的所有素数,数字之间用 -
阎燕复方: #include int main(void) { int count,i,x,y,m,n; count=0; printf("Input m: "); scanf("%d",&m); printf("Input n: "); scanf("%d",&n); if(m>n)//m,n如果不是m小的话,换一下 { i=m; m=n; n=i; } for(x=m;x

西安市13113461376: 输入两个正整数m和n(m≥1,n≤1000),输出m到n之间的所有水仙花数。 -
阎燕复方: inline int sqr(int a, int b)//a的 b次方.{ if(b == 0)return 1; int c = a; while(--b)c = c * a; return c; } int main() { int min = 100, max = 1000000;//在这输入最小数和最大数.或换代码动态输入. int sum = 0, size, n[100];//最大支持100位的水仙花数 for(int i = ...

西安市13113461376: C语言程序设计:输入2个正整数m和n(m≥1,n≤10 000),输出m ~n 之间所有的Fibonacci数.我错在哪? int fib(int x) {int a1=1,a2=1,a,i; if(x==1||x==2) a=1; else {a1=1;a2=1;
阎燕复方: 斐波那契数列数列是不断在增加的,你的数据范围在10000以内的,早就超出int类型了,不能使用这种方法去计算了,只能用大整形数据进行相加,用char[]进行模拟. double也是不行的

西安市13113461376: 还有这样一个问题:输入2个正整数m和n(m>=1,n -
阎燕复方:[答案] scanf("%d",&m);加个if判断就行了 if(m==1) m=2;

西安市13113461376: C语言输入2个正整数m和n(m≥1,n≤1000),输出m~n之?
阎燕复方: 函数factorsum改动如下: int factorsum(int n) { int i, s = 0; for (i = 1; i 全部

西安市13113461376: 3. 编程题.(P44 第4题) 输入三2个正整数m和n(m≥1,n≤1000),输出m到n之间的所有水仙 -
阎燕复方: #include <stdio.h>//#include <iostream> int main() { int i,j,k,n,m; printf("'water flower'number is m(m>=1),n(n<1000):"); scanf("%d%d",&m,&n); for(;m<=n;m++) { i=m/100;/*分解出百位*/ j=m/10%10;/*分解出十位*/ k=m%10;/*分解出个位*/ ...

西安市13113461376: 输入2个正整数m和n(m≥1,n≤500且m<n),输出m和n之间的所有素数,每行输出6个,且以整齐的表格形式输出. -
阎燕复方: //这样就对了,你的那个算法有问题,这只是一种方式,有很多种方式,你自己看一看,还有就是你不要把==写成=个,#include<stdio.h>#include<math.h> void main() { int n,m; int i,j,k,found,l,s; printf("请输入最小最大值"); scanf("%d%d"...

西安市13113461376: c语言 求水仙花数 -
阎燕复方: # include <stdio.h> int main (void) { int m,n,a,b,c,x; printf("Input m: "); scanf("%d",&m); printf("Input n: "); scanf("%d",&n); for(x=m;x<=n;x++) { a=x/100; b=x/10%10; c=x%10; if(x==(a*a*a+b*b*b+c*c*c)) {printf("%d\n",x); } } return 0; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网