C语言的问题,我不知道错在哪?

来源:百度知道 编辑:UC知道 时间:2024/05/28 02:17:50
请C高手指出程序上有什么不对的,再编个正确答案让我想想.
1.题目要求是输出1000内的"自恋数(?)",也就是:
这个数字=它的百位数的立方+十位数的立方+个位数的立方
我的程序:
#include<stdio.h>
main()
{ int i,a,b,c;
for(i=0;i<=1000;i++)
{ a=i/100;
b=(i-a)/10;
c=i-a-b;
if(i==a*a*a+b*b*b+c*c*c) printf("%d,",i);
}
}
程序运行后只输出0和1,问题在哪里?
2.题目要求是:输入一个5*5的数组,要求具有下列功能:
(1)求出该数组对角线的数之和;
(2)求出其对角线上的数之积;
(3)输出对角线上的最大值,并输出它在数组中的位置;
我的程序:(我在想对角线应该是要求两条的吧,我的只有一条,希望能指导一下怎么编)
#include<stdio.h>
main()
{ int a[5][5],j,k,b,c,t,m,i;
for(i=0;i<5;i++)
{ for(j=0;j<5;j++)
{scanf("%d",&a[i][j]);
}
}
for(i=0;i<5;i++)
{ for(j=0;j<5;j++)
{ if(i==j)
{ k+=a[i][j];
b*=a[i][j];
if(a[i][j]<[++i][++j])
{ c=a[++i][++j];
t=++i;m=++j;
}
}

1.
#include<stdio.h>
main()
{ int i,a,b,c;
for(i=0;i<=1000;i++)
{ a=i/100;
b=i%100/10;
c=i%10;
if(i==(a*a*a+b*b*b+c*c*c)) printf("%d",i);
}
}
2.
#include<stdio.h>
main()
{ int a[5][5],i,j,k,sum=0,ji=1,max=a[0][0];
for(i=0;i<5;i++)
{
sum+=a[i][i];
sum+=a[i][4-i];
ji*=ji[i][i];
ji*=ji[i][4-i];
if(a[i][i]>max)
{max=a[i][i];
j=i;
k=i;
}
if(a[i][4-i])
{max=a[i][4-i];
j=i;
k=4-i;
}
}
printf("%d%d%d%d%d",sum,ji,max,j,k,);
}
你的问题这样回答成不,
我就2提解释以下:
对角线上的角标是有特点的,用一个控制变量就可以了,
但在一次循环中(也就是一行中)有两的对角线元素,都可以用i 表示,但要在一次循环中做两次你的操作,
我的表达能力特差!!
如果还不明白,你再问我!!

1. a=i/100;
b=(i-a)/10; //b=(i-a*100)/10;
c=i-a-b; //c=i-a*100-b*10;

2.
for(i=0;i<5;i++)
{ for(j=0;j<