输入2个正整数m和n,输出m到n中所有水仙花数?用C语言怎么编

作者&投稿:笪宗 (若有异议请与网页底部的电邮联系)
c语言 输入两个正整数m和n(m>=1,n<10000),输出m到n之间的所有水仙花数。我编写的输不出来呀,求解~~

好久没弄C语言了,也不知道什么是水仙花数,你的程序应该是少了两个大括号导致的
换成下面的代码试试。没有大括号默认的执行范围是下面一行
也就是说你的循环只是作用在 gw=i%10;
#include
void main()
{
int m,n,gw,sw,bw,i;
printf("输入两个正整数:");
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++)
{
gw=i%10;
bw=i/100;
sw=i%100/10;
if(i==gw*gw*gw+sw*sw*sw+bw*bw*bw)
printf("%d
",i);
}
}

#include #include void main() { int i,j,k,t; int m,n; scanf("%d%d",&m,&n); if(m>n) { t=m; m=n; n=t; } for(t=m;t<=n;t++) { i=t/100;/*分解出百位*/ j=t/10%10;/*分解出十位*/ k=t%10;/*分解出个位*/ if(t==i*i*i+j*j*j+k*k*k) { printf("%d ",t); } } printf("
"); }

1.水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)

#include <stdio.h>

bool IsDaffodil(int num)
{
    if (num < 100)
        return false;
    int sum = 0, n = num, m;
    while (n)
    {
        m = n % 10;
        sum += m*m*m;
        n /= 10;
    }
    return sum == num;
}

int main()
{
    int n, m;
    printf("input n and m : ");
    scanf("%d %d", &n, &m);
    printf("Daffodil n ~ m has : ");
    for (int i = n; i <= m; i++)
        if (IsDaffodil(i))
            printf("%d ", i);
    return 0;
}



1.
水仙花数
是指一个
n
位数
(
n≥3
),它的每个位上的数字的
n
次幂之和等于它本身。(例如:1^3
+
5^3+
3^3
=
153)
#include <stdio.h>
bool IsDaffodil(int num)
{
    if (num < 100)
        return false;
    int sum = 0, n = num, m;
    while (n)
    {
        m = n % 10;
        sum += m*m*m;
        n /= 10;
    }
    return sum == num;
}
int main()
{
    int n, m;
    printf("input n and m : ");
    scanf("%d %d", &n, &m);
    printf("Daffodil n ~ m has : ");
    for (int i = n; i <= m; i++)
        if (IsDaffodil(i))
            printf("%d ", i);
    return 0;
}



/*一个for循环就行了,水仙花数没有大于1000的,可以用数学证明出来的*/

#include<stdio.h>
void main()
{
int m,n,i;
int a,b,c;

do{printf("input one integer\n");
scanf("%d",&m);
printf("input another integer\n");
scanf("%d",&n);
}while(m<100&&n<1000);

if(m<n)
{ i=m;
m=n;
n=i;
}
for(i=n;i<m;i++)
{
a=i/100; /*分解出百位*/
b=(i-a*100)/10; /*分解出十位*/
c=i%10; /*分解出个位*/
if(i==a*a*a+b*b*b+c*c*c)printf("%d\n",i);
}

}

可以输入任意两个正整数
#include <stdio.h>
int fun(int s,int c)
{
if(c==0)
return 1;
return fun(s,c-1)*s;
}
int main()
{
printf("请一次输入两个正整数:");
int m,n,k,temp,sum=0;
int str[10];
scanf("%d %d",&m,&n);
m=m>n?m:n;
int i,count;
int have=0;
for(i=100;i<m;i++)
{
count=0;
temp=i;
for(k=0;temp>0;k++)
{
str[k]=temp%10;
temp=temp/10;
count++;
}
for(k=0,sum=0;k<count;k++)
sum+=fun(str[k],count);
if(sum==i)
{
have=1;
printf("%d\n",i);
}
}
if(have==0)
printf("该范围内没有水仙花数!\n");
}

#include<stdio.h>
int main()
{
int m,n,i;
int a,b,c;

do{printf("input m\n");
scanf("%d",&m);
printf("input n\n");
scanf("%d",&n);
}while(m<100&&n<1000);

if(m<n){
i=m;
m=n;
n=i;
}
for(i=n;i<m;i++) {
a=i/100;
b=(i-a*100)/10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)printf("%d\n",i);
}
return 0;

}


c语言程序设计,输入两个正整数m和n,求其最大公约数和最小公倍数?
include<stdio.h> int main(){ int a,b,num1,num2,temp;printf("please input two number:\\n");scanf("%d%d",&num1,&num2);if(num1<num2){ temp = num1;num1 = num2;num2 = temp;} a = num1;b = num2;while(b!=0){ temp = a%b;a=b;b=temp;} printf("gong...

2个数的最大公约数和最小公倍数 C语言怎么求?
输入两个正整数m和n,求其最大公约数和最小公倍数.<1> 用辗转相除法求最大公约数 算法描述:m对n求余为a,若a不等于0 则 m <- n,n <- a,继续求余 否则 n 为最大公约数 <2> 最小公倍数 = 两个数的积 \/ 最大公约数 include int main(){ int m,n;int m_cup,n_cup,res;\/*...

输入两个正整数m和n,求其最小公倍数 C语言程序设计
m == 0) return n;for(t = n;t <= n * m;t++) {if(t % m == 0 && t % n == 0)return t;}return m * n; \/\/ 永远得不到执行。}int main() {int m,n;while(scanf("%d%d",&m,&n) == 2) {printf("%d, %d 最大公约数为 : %d\\n",m,n,MaxFactor(m,n)...

从键盘上输入两个正整数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 ...

编写程序:输入两个正整数m和n,计算它们的最大公约数和最小公倍数。
return m * n \/ gcd(m, n) ;} int main(void){ int m ;cout << "input m: " ;cin >> m ;int n ;cout << "input n: " ;cin >> n ;cout << "The greatest common divisor is:" ;cout << gcd(m, n) << endl ;cout << "The least common multiple is: " ;cout ...

判断是否互质 【问题描述】判断两个整数m和n是否互质(即是否有公共的因...
原题意楼下的答案最好,如果没有限定方法,而是:输入两个正整数m和n,判断m和n是否互质,是,则输出Yes,否则,输出No。那么可以试试这个思路,用判断最大公约数是否大于1,用while语句就可以了。include <iostream> using namespace std;int main (){ int m,n,i=1;cin>>m>>n;while(m%i==...

输入2个正整数m和n,(m>1,n<=500)统计并输出m n之间的素数个数及这些素数...
for ( i = m; i <= n ; i ++ ){ if(i<=1) continue; if ( prime( i ) ==1 ) {count++; sum += i;} } printf("count=%d,sum=%d ", count, sum ) ; return 0;}int prime( int n ){ int i ; for ( i = 2; i < n ; i ++ ...

C语言。输入2个正整数m和n(m>=1,n<=1000),输入m和n之间的所有水仙花数...
include<stdio.h> int shuixianhua(int m){ int s=0,flag=0,a,b,c;a=m\/100;\/\/百位 c=m%10;\/\/个位 b=m\/10%10;\/\/十位 s+=a*a*a+b*b*b+c*c*c ;if(s==m){ flag=1;\/\/printf("a=%d, b=%d, c=%d, s=%d\\n", a, b, c, s);} return(flag);} main(){ int...

C语言求教输入两个正整数m和n(m≥100,n<1000),输出m和n之间的满足如下...
\/ m n = 100 1000 100 121 144 225 400 441 484 676 900 Press any key to continue \/ include <stdio.h>#include <math.h>int hasRepNum(int n) {int a,b,c;if(n < 100 || n > 1000) return 0;a = n % 10;n \/= 10;b = n % 10;n \/= 10;c = n % 10;if(a ...

输入2 个正整数m和n(1<=m,n<=500),统计并输出m 和n之间的素数的个数...
修改如下:include <stdio.h> include <math.h> int prime(int n){\/\/判断n是否是素数,若是素数则返回1,否则返回0 int i,k;if(n<2)return 0;k=sqrt(n);for(i=2;i<=k;++i){ if(n%i==0)return 0;} return 1;} void main(){ int m,n,c,sum,count;int prime(int );print...

清涧县19190167707: 用c语言编写程序,输入两个正整数m和n,计算m!+n! -
比刻冠心: #include <stdio.h> void main() {//计算阶乘数的加和float i,m,n,ji=1,sum=0,sum1=0,sum2=0;scanf("%f",&m);scanf("%f",&n);for(i=1;i<=m;i++){ji*=i;sum1+=ji;}for(i=1;i<=n;i++){ji*=i;sum2+=ji;}sum0=sum1+sum2;printf("阶乘的加和结果是:%.2f\n",sum0); }

清涧县19190167707: 编写程序,输入两个正整数m和n,计算m!+n! -
比刻冠心: #include<stdio.h> #include<stdlib.h> int main() {int q, m, n, x, z, s;scanf("%d%d", &m, &n);x = m > n ? n : m, z = m > n ? m : n;for (s = q = 1; q <= x; s *=q, q++)s *= 2;for (q = x + 1; q <= z; s *= q, q++)printf("result = %d\n", s);return 0; }

清涧县19190167707: c程:输入两个正整数 m 和 n输出 m 与 n之间(含m,n)的所有满足各位数字的立方和等于它本身的数. -
比刻冠心: 感觉算法上没问题 不过题目中对m n的大小关系没有约定 那么应该有可能有m>n的情况 所以在程序里面加一个判断 如果m>n的话 把m n值交换 试试吧

清涧县19190167707: 输入两个整数m和n,计算m到n之和 -
比刻冠心: 解:m+﹙m+1﹚+﹙m+2﹚+﹙m+3﹚+……+n =1/2﹙m+n﹚﹙m-n+1﹚

清涧县19190167707: C语言编程 输出m到n之间的素数 要求定义函数 请帮助我找出错误 -
比刻冠心: #include <stdio.h> #include <math.h> int prime (int n) { 5261int t,i,J=1;/*把J的初始值改了,如果J=1是素数*/t=(int)sqrt(n);for(i=2;i<=t;i++)/*改成了i<=t,我觉得要4102是不改对平方数的判断会出错*/{1653if(n%i==0){J=0;/*判别条件也改了...

清涧县19190167707: 输入两个正整数m和n(m<n),求m到n之间(包括m和n)所有素数的和,我写的运行错误,帮我改下 -
比刻冠心: 不好意思,这几天比较忙,现在才看到你的求助. 这个程序我建议你不要去用函数求,那样太麻烦了.楼上的这位写的一看就知道没有编译过,算法都错了. 这是我写的,已经编译通过,简明易懂,希望对你有帮助. #include<stdio.h> #...

清涧县19190167707: c语言 输入两个正整数m和n(m<n),求m到n之间(包括m和n)所有素数的和,我的运行错误,帮我看看 -
比刻冠心: #include <stdio.h> int is_prime(int x,int y) {int j,m=0;for(j=x;j<=y;j++){if(j%2==0){m=m+j;}} return m; } int main() {int sum,m,n;scanf("%d, %d",m, n);sum=is_prime(m,n);printf("%d\n",sum); }

清涧县19190167707: c语言 输入两个正整数m和n(m>=1,n<10000),输出m到n之间的所有水仙花数.我编写的输不出来呀,求解~ -
比刻冠心: 好久没弄C语言了,也不知道什么是水仙花数,你的程序应该是少了两个大括号导致的 换成下面的代码试试.没有大括号默认的执行范围是下面一行 也就是说你的循环只是作用在 gw=i%10; #include void main() { int m,n,gw,sw,bw,i; printf("输入两个正整数:"); scanf("%d%d",&m,&n); for(i=m;i

清涧县19190167707: c语言输入两个正整数m和n,求出[m,n]区间的所有素数 -
比刻冠心: for(j=2;j<=i;j++) { if(i%j==0) break; } if(j==i) { a[x]=i; x++; } 这段代码,你不感觉无论是哪一个数,都会被记录下来,最后输出吗?后面改成if(j!=i)//保证不是因为除以自身而跳出上面寻个循环的 { a[x]=i; x++; }

清涧县19190167707: 输入两个正数m和n,输出m和n之间的所有素数,每行输出5个.素数是只能被1和它本身整数,2是最小的素数 -
比刻冠心: //****************************************************************************** // 输入两个正数m和n,输出m和n之间的所有素数,每行输出5个. //****************************************************************************** #include#include using namespace std; ...

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