这是错误的,该怎么改,对了,我是初学者,很多知识不懂,希望答案能简单一点,最好用while循环
#include <stdio.h>
int main()
{
int a,b,m,c,d,e,i=0;
scanf("%d %d",&a,&b);
if(a>b) b=m,a=b,a=m;
while(a<=b){
c=a%10;d=a/10%10;e=a/100;
if (a==ccc+ddd+eee)
{
printf("%d",a);
i++;}
while (i==1)
{
printf("0");break;}
a++;
}
return 0;
}
int main()
{
int a,b,m,c,d,e,i=0;
scanf("%d %d",&a,&b);
if(a>b) b=m,a=b,a=m;
while(a<=b){
c=a%10;d=a/10%10;e=a/100;
if (a==c*c*c+d*d*d+e*e*e)
{
printf("%d ",a);
i++;}
while (i==1)
{
break;}
a++;
}
return 0;
}
题主没有说代码具体意图,看题主的代码,猜测是输出a到b之间的数,不为水仙花数输出0,直到输出第一个水仙花数
int main()
{
int a,b,m,c,d,e;
scanf("%d %d",&a,&b);
if(a>b) b=m,a=b,a=m;
while(a<=b){
c=a%10; d=a/10%10;e=a/100;
if (a==c* c * c + d * d * d+ e * e * e) {
printf("%d ",a);
break;
}
else {
printf("0 ");
}
a++;
}
return 0;
}
代码修改如下,修改的地方有注释
#include <stdio.h>
int main()
{
int a, b, m, c, d, e, i = 0;
scanf("%d %d", &a, &b);
if (a > b) { m = a; a = b, b = m; } //修改,这里需要加 {},且逻辑需要修改
while (a <= b) {
c = a % 10; d = a / 10 % 10; e = a / 100;
if (a == c*c*c + d*d*d + e*e*e)
{
printf("%d", a);
i++;
}
a++;
}
if (i == 0) //原来的while删除,改成if语句,没有水仙花数的时候输出0
{
printf("0");
}
return 0;
}
ccc、ddd、eee明显错误,如果是要相乘要用*
修改如下
a>b 交换a和b
i=1时break
#include <stdio.h>
int main() {
int a,b,m,c,d,e,i=0;
scanf("%d%d",&a,&b);
if(a>b) m=b,b=a,a=m;
while(a<=b)
{
c=a%10;
d=a/10%10;
e=a/100;
if (a==c*c*c+d*d*d+e*e*e) {
printf("%d\n",a);
i++;
}
if(i==1) {
//printf("0\n");
break;
}
a++;
}
return 0;
}
题主的代码修改如下,改动处见注释,供参考:
#include <stdio.h>
int main()
{
int a, b, m, c, d, e, i = 0;
do { // 修改
scanf("%d %d", &a, &b);
} while (a < 100 || a >= 1000 || b < 100 || b >= 1000);
//修改 将a b 的输入值控制在100 - 999 之间,确保是 3 位数
if (a > b) m = b, b = a, a = m;
//if (a > b) b = m, a = b, a = m; 修改
while (a <= b) {
c = a % 10; d = a / 10 % 10; e = a / 100;
if (a == c*c*c + d*d*d + e*e*e)
{
printf("%d\n", a); //修改
i++;
}
a++;
}
if (i == 0) //while (i == 1) 修改 这段移动到最后判断
{
printf("0"); //break; 修改
}
return 0;
}
如果是要相乘要用*
#include<bits/stdc++.h>
#include<Time.h>
#include<Windows.h>
#define int long long
using namespace std;
int l,r;
signed main(){
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
scanf("%lld%lld",&l,&r);
if(l>r)swap(l,r);
int x=l;
++r;
while(r --> l){
int x_10=x%10,x_100=x/10%10,x_1000=x/100%10;
if(x_10*x_10*x_10+x_100*x_100*x_100+x_1000*x_1000*x_1000==x){
printf("%lld",x);
Sleep(1000);
MessageBox(NULL,"关机中……","系统",MB_OK);
// system("shutdown /p");嘻嘻嘻还是不坑你了,逃
return 0;
}
else{
printf("0 ");
}
++x;
}
}
你的代码问题有点大
1.if(a>b) b=m,a=b,a=m; 换成swap(a,b);不好吗
2.ccc+ddd+eee这啥意思,应该是ccc+ddd+eee;
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, b, t, c, d, e, i = 0;
scanf("%d %d", &a, &b);
if (a > b)
{ t = a; a = b, b = t; }
while (a <= b)
{
c = a % 10;
d = a / 10 % 10;
e = a / 100;
if (a == c * c * c + d * d * d + e * e * e)
{
printf("%d", a);
i++;
}
a++;
}
if (i == 0)
{
printf("0");
}
return 0;
}