Board logo

标题: 【求助】C语言改错。。。会的帮下。。日后一定好好灌水 [打印本页]

作者: dontcry    时间: 2007-7-10 20:11     标题: 【求助】C语言改错。。。会的帮下。。日后一定好好灌水

1、下面的程序的功能是输入整数n,通过递归调用函数fact()计算并输出n!.请找出其中的三处错误,并修改正确.
#include <stdio.h>
long fact(int n)
{ if (n==1||n==0)
          return (1);
          else
          return (fact(n-1));
}
main()
{ int n;
  printf("Input n: ");
  scanf("%d",n);
  printf("%d,%ld",n,fact);
}
错误1: 将第       行                     修改为                           ,
错误2: 将第       行                    修改为                           ,
错误3: 将第       行                    修改为                           .
2、下列程序的功能是计算矩阵A的主对角线上的元素之和并输出.该程序有三处错误,请指出错误并修改正确.
main()
{ int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},i,j;
  int sum=0;
  for (i=1;i<=4;i++)
    for (j=0;j<4;j++);
      if (i==j)
         sum=a[j];
   printf(“sum=%d\n”,sum);
}   
错误1: 将第       行                     修改为                           ,
错误2: 将第       行                    修改为                           ,
错误3: 将第       行                    修改为                           .
3、下面的程序用来求1—100中所有奇数之和,结果放入变量sum中,请找出并修改其中的三处错误.
main()
   {
int i, sum;
sum=1;
        for (i=0;i<100;i+=2)
        sum+=i;
        printf("sum=%f\n",sum);
}
错误1: 将第       行                     修改为                           ,
错误2: 将第       行                    修改为                           ,
错误3: 将第       行                    修改为                           .
4、下面程序的功能是输入100个整数,存入一维数组a[100]中,并将其中的元素按降序排序输出,请指出其中的三处错误并修改正确。
main()
{
int a[100],i,j,t;
for(i=0;i<=100;i++)
scanf("%d",a);
for (i=0;i<99;i++)
for(j=i+1;j<100;j++)
if (a<a[j])
{
t=a;
a[j]=a;
a[j]=t;
}
for (i=0;i<100;i++)
printf("%d ",a);
}

错误1: 将第       行                     修改为                           ,
错误2: 将第       行                    修改为                           ,
错误3: 将第       行                    修改为                           .
5、以下程序的功能是输出Fibonacci数列(这个数列的第一项和第二项都为1,从第三项开始,以后每一项都是它前面两项的和)的前20项。请找出其中的三处错误,并修改正确。
main()
{
int f[20]={1,1};                             
        for(i=0;i<20;i++)
        f=f[i-2]+f[i-1];                          
for(i=0;i<20;i++);
        printf("%9d",f);
}                                                
错误1: 将第       行                    修改为                           ,
错误2: 将第       行                    修改为                           ,
错误3: 将第       行                    修改为                           .
6、下列程序的功能是计算矩阵A的主对角线上的元素之和并输出。该程序有三处错误,请指出错误并修改正确。
main()
{
int a[3][3]={1,3,5,7,9,11,13,15,17},i,j;
  int sum=0;
          for (i=1;i<=3;i++)
          for (j=1;j<3;j++)
          if (i==j)
          sum=a[j];
          printf(“sum=%d\n”,sum);
}   
错误1: 将第       行                    修改为                           ,
错误2: 将第       行                    修改为                           ,
错误3: 将第       行                    修改为                           .
7、比赛有7个评委给每一位参赛者打分,去掉一个最高分和去掉一个最低分,得到该参赛者的平均分。以下程序的功能是求参赛选手的平均分,请找出其中的三处错误,并修改正确。
             main()
{
int i;
float a[7],max, min, aver=0;
for (i=0;i<7;i++)
scanf("%f", a);
max=min=aver=a[0];
for (i=1;i<7;i++);
{
if (max<a)     max=a;
  if (min>a)     min=a;
  aver=a;
}
aver=(aver-max-min)/5;
printf("Mark=%.2f\n",aver);
}
错误1: 将第       行                    修改为                           ,
错误2: 将第       行                    修改为                           ,
错误3: 将第       行                    修改为                           .
作者: 天使- -!!    时间: 2007-7-10 20:12

刚学这个东西…………我学的是C++
作者: storejoline    时间: 2007-7-10 20:15

长度比我二级考试时的要长很多..........
作者: 与星独白    时间: 2007-7-10 20:17

...我学得是VB
作者: NEIBOY    时间: 2007-7-11 08:53

我学的是N B
作者: T.细菌    时间: 2007-7-11 09:05

所有的scanf里面都掉了取地址符号&

例如第一个例子scanf("%d",&n);
作者: T.细菌    时间: 2007-7-11 09:16

2、下列程序的功能是计算矩阵A的主对角线上的元素之和并输出.该程序有三处错误,请指出错误并修改正确.
main()
{ int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},i,j;
  int sum=0;
  for (i=1;i<=4;i++)
    for (j=0;j<4;j++);
      if (i==j)
         sum=a[j];
   printf(“sum=%d\n”,sum);
}   
错误1: 将第 4 行 for (i=1;i<=4;i++) 修改为 for (i=0;i<4;i++)
错误2: 将第 5 行 for (j=0;j<4;j++); 修改为 for (j=0;j<4;j++)
错误3: 将第 7 行 sum=a[j]; 修改为 sum+=a[ i ][ j ];





3、下面的程序用来求1—100中所有奇数之和,结果放入变量sum中,请找出并修改其中的三处错误.
main()
   {
int i, sum;
sum=1;
        for (i=0;i<100;i+=2)
        sum+=i;
        printf("sum=%f\n",sum);
}
错误1: 将第4行 sum=1;修改为sum=0;                    
错误2: 将第5行for (i=0;i<100;i+=2)修改为 for (i=1;i<100;i+=2)或for (i=1;i<=99;i+=2)
错误3: 将第7行printf("sum=%f\n",sum);修改为printf("sum=%d\n",sum);



4、下面程序的功能是输入100个整数,存入一维数组a[100]中,并将其中的元素按降序排序输出,请指出其中的三处错误并修改正确。
main()
{
int a[100],i,j,t;
for(i=0;i<=100;i++)
scanf("%d",a);。。。。。。。。。。。。。。。。。。。。。。。。。scanf("%d",a[ i ]);
for (i=0;i<99;i++)
for(j=i+1;j<100;j++)
if (a<a[j])。。。。。。。。。。。。。。。。。。。。。。。。。。。。if (a[ i ]<a[j])
{
t=a;。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。t=a[ i ] ;
a[j]=a;。。。。。。。。。。。。。。。。。。。。。。。。。。。。。a[j]=a[ i ];
a[j]=t;
}
for (i=0;i<100;i++)
printf("%d ",a);。。。。。。。。。。。。。。。。。。。。。。。。。printf("%d ",a[ i ]);
}

错误1: 将第 4 行 for(i=0;i<=100;i++) 修改为 for(i=0;i<100;i++) 或 for(i=0;i<=99;i++)
错误2: 将第 5 行 scanf("%d",a); 修改为 scanf("%d",&a[ i ]);
错误3: 将第 11 行 a[j]=a; 修改为 a[ i ]=a[j];
我怀疑你是不是打掉了所有的[ i ]



5、以下程序的功能是输出Fibonacci数列(这个数列的第一项和第二项都为1,从第三项开始,以后每一项都是它前面两项的和)的前20项。请找出其中的三处错误,并修改正确。
main()
{
int f[20]={1,1};                             
        for(i=0;i<20;i++)
        f=f[i-2]+f[i-1];  。。。。。。。。。。。。。。。。。。。。。。。  f[ i ]=f[i-2]+f[i-1];                     
for(i=0;i<20;i++);
        printf("%9d",f);。。。。。。。。。。。。。。。。。。。。。printf("%9d",f[ i ]);
}      

错误1: 将第 3 行 int f[20]={1,1}; 修改为 int f[20]={1,1},i;
错误2: 将第 4 行 for(i=0;i<20;i++) 修改为 for(i=2;i<20;i++)
错误3: 将第 6 行 for(i=0;i<20;i++); 修改为 for(i=0;i<20;i++)




6、下列程序的功能是计算矩阵A的主对角线上的元素之和并输出。该程序有三处错误,请指出错误并修改正确。
main()
{
int a[3][3]={1,3,5,7,9,11,13,15,17},i,j;
  int sum=0;
          for (i=1;i<=3;i++)
          for (j=1;j<3;j++)
          if (i==j)
          sum=a[j];
          printf(“sum=%d\n”,sum);
}   
错误1: 将第 5 行 for (i=1;i<=3;i++) 修改为 for (i=0;i<3;i++)
错误2: 将第 6 行 for (j=1;j<3;j++) 修改为 for (j=0;j<3;j++)
错误3: 将第 8 行 sum=a[j]; 修改为 sum+=a[ i ][ j ];



7、比赛有7个评委给每一位参赛者打分,去掉一个最高分和去掉一个最低分,得到该参赛者的平均分。以下程序的功能是求参赛选手的平均分,请找出其中的三处错误,并修改正确。
             main()
{
int i;
float a[7],max, min, aver=0;
for (i=0;i<7;i++)
scanf("%f", a);
max=min=aver=a[0];
for (i=1;i<7;i++);
{
if (max<a)     max=a;
  if (min>a)     min=a;
  aver=a;
}
aver=(aver-max-min)/5;
printf("Mark=%.2f\n",aver);
}
错误1: 将第 6 行 scanf("%f", a); 修改为 scanf("%f", &a[ i ]);
错误2: 将第 12 行 aver=a; 修改为 aver+=a[ i ];
错误3: 将第 8 行 for (i=1;i<7;i++); 修改为 for (i=1;i<7;i++)

[ 本帖最后由 T.细菌 于 2007-7-11 13:29 编辑 ]
作者: 所罗门    时间: 2007-7-11 09:30

楼上牛x人啊 强
作者: 生梨    时间: 2007-7-11 13:35

全部都是C的基础题,没装VC就不改了,6楼的是不是有VC的给调试的啊
作者: T.细菌    时间: 2007-7-11 13:40

这个就是C啊,我没什么VC调试




欢迎光临 浆糊论坛-RO小站 (http://bbs.rohome.cn/) Powered by Discuz! 7.2