c语言高手们帮帮小弟答答题,万分感谢啊!!

来源:百度知道 编辑:UC知道 时间:2024/09/28 11:50:12
三、改错题
(1) 以下程序的功能是:打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字立方的和等于该数本身。例如:153是一个“水仙花数”,因为153=13 +53+33。请指出并改正该程序中的错误。

行号
1 main()
2 {
3 int i, j,k,n;
4 for(n=100;n>1000;n++)
5 {
6 i=n/100;
7 j=n/10%10;
8 k=n/10;
9 if(n==i*i*i+j*j*j+k*k*k)
10 printf("%-6d",n);
11 }
12 printf(”\n”);
13 }

(2) 以下程序的功能是:根据从键盘输入的整数m计算如下公式的值。请指出并改正该程序中的错误。
公式:

行号
1 double fun(int n)
2 {
3 double x;
4 x=1.0/(n*n);
5 return;
6 }
7 main()
8 {
9 double t;
10 int m,i;
11 t=1.0;
12 scanf("%d",&m);
13 for(i=2;i<=m;i++)
14 t=t+fun(i);
15 printf("t=%f\n",t);
16 }
(3)下面的程序中 有错误(每行程序前面的数字是行号)。
1 #include <stdio.h>
2 main()
3 {
4 float a[3];
5 int i;
6 for(i=0;i<3;

正解如下:
(1) 错误有两处
4行 改为for(n=100;n<1000;n++)//设定范围,三位数
8行 改为k=n%10; //求个位
还有楼主最后一个printf里用的是中文的引号,需改成英文的
(2)楼主没给出公式,应该是 1+1/(2*2)+....+1/(n*n)吧
没找出什么大的问题,不过double fun(int n),应该有返回值,
5行改为 return x; vc下编译通过。
(3)第六行出错了 应该是scanf("%f",&a[i]);,输入的时候是地址,还有类型也错了。不过6 7 行的++好象都是中文的~

第一个,
第4行应该是for(n=100;n<1000;n++)
第8行应该是:k=n % 10
第二个:
第5行,return没有返回值,应该是return x;
第三个:
第6行,输入语句的数据类型不匹配。数组a定义为float类型,所以在
scanf语句中就不能用d,而要用f。scanf("%f",a[i]);

for(n=100;n>1000;n++)
应该是
for(n=100;n<1000;n++)

不懂