搜索
您的当前位置:首页正文

程序改错

来源:好土汽车网
〖第1题〗『程序改错』(10分) 题目:函数fun的功能是: 求1到20的阶乘的和。

请改正程序中的错误,使它能得出正确的结果。 /*------------------------------------------------------*/

注意:不可以增加或删除程序行,也不可以更改程序的结构。 /*------------------------------------------------------*/ fun() { int n,j;

double s=0.0,t=1.0; for(n=1;n<=20;n++) {

/**********FOUND**********/ s=1;

for(j=1;j<=n;j++)

/**********FOUND**********/ t=t*n;

/**********FOUND**********/ s+t=s; }

/**********FOUND**********/ printf(\"jiecheng=%d\\n\

} main() { fun(); } 答案:

1). t=1; 或 t=1.0; 2). t=t*j; 或 t*=j; 3). s=s+t; 或 s+=t;

4). printf(\"jiecheng=%lf\\n\ 或 printf(\"jiecheng=%f\\n\

〖第2题〗『程序改错』(10分)

题目:给定程序MODI1.C中函数 fun 的功能是: 用选择法对数组中的n个元素按 从小到大的顺序进行排序。 #include #define N 20 void fun(int a[], int n) { int i, j, t, p;

for (j = 0 ;j < n-1 ;j++)

{/**********FOUND**********/

p=j

for (i = j;i < n; i++)

/**********FOUND**********/ if(a[i] >a[p])

/**********FOUND**********/ p=j;

t=a[p] ; a[p]=a[j] ; a[j]=t;} }

void main()

{ int a[N]={9,6,8,3,-1},i, m = 5; printf(\"排序前的数据:\") ;

for(i = 0;i < m;i++) printf(\"%d \fun(a,m);

printf(\"排序后的数据:\") ;

for(i = 0;i < m;i++) printf(\"%d \} 答案: 1). p = j;

2). if(a[i] < a[p]) 或 if(a[p] > a[i]) 3). p = i;

〖第3题〗『程序改错』(10分)

题目:编写函数fun,求两个整数的最小公倍数, 然后用主函数main()调用这个函数并输出结果 ,两个整数由键盘输入。 #include \"stdio.h\" void main()

{ unsigned int m,n,q; printf(\"m,n=\");

scanf(\"%d,%d\ /**********FOUND**********/ q==fun(m,n);

printf(\"p(%d,%d)=%d\}

int fun(int m,int n) { int i;

/**********FOUND**********/ if (m=n) {i=m;m=n;n=i;} for(i=m;i<=m*n;i+=m)

/**********FOUND**********/ if(i%n==1) return(i); } 答案:

1). q=fun(m,n); 2). if (mm) 3). if(i%n==0)

〖第4题〗『程序改错』(10分)

题目:下列程序中,函数fun的功能是: 找出一个大于给定整数m且紧随m的素数, 并作为函数值返回。 #include #include int fun(int m)

/**********FOUND**********/ { int i;k;

for(i=m+1;;i++){ for(k=2;k/**********FOUND**********/ if(i%k!=0) break;

/**********FOUND**********/ if(k=i) return(i); } }

void main() { int n;

printf(\"\\nPlease enter n:\"); scanf(\"%d\ printf(\"%d\\n\} 答案:

1). { int i,k; 2). if(i%k==0) 3). if(k==i) 或 if(k>=i)

〖第5题〗『程序改错』(10分)

题目:打印出如下杨辉三角形(要求打印出6行). 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1

#include\"stdio.h\" void main() { int i,j; int a[6][6]; printf(\"\\n\");

/**********FOUND**********/ for(i=1;i<6;i++) { a[i][0]=1; a[i][i]=1; }

/**********FOUND**********/ for(i=1;i<6;i++) for(j=1;j/**********FOUND**********/

a[i][i]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<6;i++) {

/**********FOUND**********/ for(j=0;jprintf(\"%5d\ printf(\"\\n\"); } } 答案:

1). for(i=0;i<6;i++) 或 for(i=0;i<=5;i++) 2). for(i=2;i<6;i++) 或 for(i=2;i<=5;i++) 3). a[i][j]=a[i-1][j-1]+a[i-1][j];

4). for(j=0;j<=i;j++) 或 for(j=0;i>=j;j++) 或 for(j=0;j〖第6题〗『程序改错』(10分)

题目:给定程序MODI1.C中函数 fun 的功能是: 计算正整数num的各位上的数字之积。 例如,若输入:252,则输出应该是:20。

若输入:202,则输出应该是:0。 #include long fun (long num)

/**********FOUND**********/ {long k=1 do

{ k*=num%10 ;

/**********FOUND**********/ num\\=10;

/**********FOUND**********/ } while(!num) ; return (k) ; }

void main( ) { long n ;

printf(\"\\Please enter a number:\") ; scanf(\"%ld\printf(\"\\n%ld\\n\} 答案:

1). {long k=1;

2). num/=10; 或 num=num/10; 3). } while(num) ; 或 } while(num!=0) ;

〖第7题〗『程序改错』(10分)

题目:猴子吃桃问题:猴子第一天摘下若干个桃子, 当即吃了一半,还不过瘾,又多吃了一个, 第二天早上又将剩下的桃子吃掉一半,

又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。 到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 #include\"stdio.h\" void main() { int day,x1,x2; day=9;

/**********FOUND**********/ x2==1; while(day>0)

/**********FOUND**********/ { x1=(x2+1)/2; x2=x1;

/**********FOUND**********/

day++; }

printf(\"the total is %d\\n\} 答案: 1). x2=1; 2). {x1=(x2+1)*2;

3). day--; 或 day-=1; 或 day=day-1;

〖第8题〗『程序改错』(10分)

题目:一个5位数,判断它是不是回文数。

即12321是回文数,个位与万位相同,十位与千位相同。 #include\"stdio.h\" void main( ) {

/**********FOUND**********/ long ge,shi,qian;wan,x; scanf(\"%ld\

/**********FOUND**********/ wan=x%10000;

qian=x%10000/1000; shi=x%100/10; ge=x%10;

/**********FOUND**********/ if(ge==wan||shi==qian)

printf(\"this number is a huiwen\\n\"); else

printf(\"this number is not a huiwen\\n\"); } 答案:

1). long ge,shi,qian,wan,x; 2). wan=x/10000; 3).

if(ge==wan&&shi==qian)

if(shi==qian&&ge==wan)

〖第9题〗『程序改错』(10分)

题目:编写函数fun求20以内所有5的倍数之积。 #define N 20 #include \"stdio.h\" void main()

{ int sum; sum=fun(5);

printf(\"%d以内所有%d的倍数之积为: %d\\n\}

int fun(int m) {

/**********FOUND**********/ int s=0,i; for(i=1;i/**********FOUND**********/ if(i%m=0)

/**********FOUND**********/ s=*i; return s; } 答案:

1). int s=1,i; 2). if(i%m==0)

3). s=s*i 或 s=i*s 或 s*=i

〖第10题〗『程序改错』(10分)

题目:请编写一个函数fun,函数的功能是: 统计出若干个学生的平均成绩, 最低分以及得最低分的人数。 例如,输入10名学生的成绩分别为

92,87,68,56,92,84,67,75,92,66,则

输出平均成绩为77.9,最低分为56,得最低分的人数为1人。 #include \"stdio.h\" float Min=0; int J=0;

float fun(float array[],int n) { int i;float sum=0,ave; Min=array[0]; for(i=0;i{ if(Min>array [i]) Min=array [i]; /**********FOUND**********/ sum=+array[i]; }

/**********FOUND**********/ ave=sum\\n; for(i=0;i/**********FOUND**********/ if(array[i]=Min) J++;

return(ave); }

void main( ) { float a[10],ave; int i=0;

printf(\"Input 10 scores:\\n\"); for(i=0;i<10;i++)

scanf(\"%f\ ave=fun(a,10); printf(\"ave=%f\\n\ printf(\"min=%f\\n\ printf(\"Total:%d\\n\} 答案:

1). sum+=array[i];} 或 sum=sum+array[i]; } 2). ave=sum/n;

3). if(array[i]==Min) J++; 或 if(Min==array[i]) J++;

〖第11题〗『程序改错』(10分)

题目:有一数组内放10个整数,要求求出平均值,并打印. #include

float average(float array[10]) { int i;

float aver,sum=array[0]; /***********FOUND***********/ for(i=0;i<10;i++) sum=sum+array[i]; aver=sum/10.0; return(aver); }

void main( ) {

/***********FOUND***********/ int score[10],aver ; int i;

printf(\"input 10 scores:\\n\"); for(i=0;i<10;i++)

/***********FOUND***********/ scanf(\"%f\printf(\"\\n\");

/***********FOUND***********/ aver=average(score[10]);

printf(\"average score is %5.2f\} 答案:

1). for(i=1;i<10;i++) 或 for(i=1;i<=9;i++) 2). float score[10],aver; 3). scanf(\"%f\ 4). aver=average(score);

〖第12题〗『程序改错』(10分) 题目:利用递归方法求5!。 #include void main() { int fact(int j);

printf(\"5!=%d\\n\}

int fact(int j) { int sum;

/**********FOUND**********/

if(j=0)

/**********FOUND**********/ sum=0; else

sum=j*fact(j-1);

/**********FOUND**********/ return j; 答案:

1). if(j==0) 或 if(j==0 || j==1) 或 if(j==1 || j==0) 2). sum=1;

3). return sum;} 或 return(sum);} 或 return (sum);}

〖第13题〗『程序改错』(10分)

题目:编写函数求2!+4!+6!+8!+10+12!+14!。 #include \"stdio.h\" long sum(int n) {

/**********FOUND**********/ int i,j long t,s=0;

/**********FOUND**********/ for(i=2;i<=n;i++) {t=1;

for(j=1;j<=i;j++) t=t*j; s=s+t;}

/**********FOUND**********/ return(t); }

void main()

{ printf(\"this sum=%ld\\n\ 答案:

1). int i,j;

2). for(i=2;i<=n;i=i+2) 或 for(i=2;i<=n;i+=2) 或 for(i=2;i<=n;i++,i++) 3). return(s);

〖第14题〗『程序改错』(10分)

题目:下列给定程序中,函数fun的功能是: 判断m是否为素数,若是返回1,否则返回0。

主函数的功能是:按每行5个输出1-100之间的全部素数。 #include

/**********FOUND**********/ void fun( int n) { int i,k=1; if(m<=1) k=0;

/**********FOUND**********/ for(i=1;i/**********FOUND**********/ if(m%i=0) k=0;

/**********FOUND**********/ return m; }

void main() { int m,k=0;

for(m=1;m<100;m++) if(fun(m)==1) {

printf(\"%4d\

if(k%5==0)printf(\"\\n\"); } } 答案:

1).int fun( int m) 或 fun( int m)

2).for(i=2;ii;i++) 或 for(i=2;i<=m-1;i++) 或 for(i=2;m-1=>i;i++) 3). if(m%i==0) k=0; 4). return k;

〖第15题〗『程序改错』(10分)

题目:求100以内(包括100)的偶数之和. #include \"stdio.h\" void main() {

/**********FOUND**********/ int i,sum=1;

/**********FOUND**********/ for(i=2;i<=100;i+=1) sum+=i;

/**********FOUND**********/ printf(\"Sum=%d \\n\";sum); } 答案:

1). int i,sum=0;

2). for(i=2;i<=100;i+=2) 或 for(i=2;i<=100;i=i+2) 3). printf(\"Sum=%d \\n\

〖第16题〗『程序改错』(10分)

题目:用起泡法对10个整数从小到大排序。 程序中共有4条错误语句,请改正错误。 #include

/**********FOUND**********/ void sort(int x,int n) { int i,j,k,t; for(i=0;i/**********FOUND**********/ for(j=0;j/**********FOUND**********/ if(x[i]>x[i+1])

{ t=x[j];x[j]=x[j+1];x[j+1]=t;} }

void main() { int i,n,a[100];

printf(\"please input the length of the array:\\n\"); scanf(\"%d\ for(i=0;iprintf(\"output the sorted array:\\n\"); for(i=0;i<=n-1;i++) printf(\"%5d\ printf(\"\\n\"); } 答案:

1). void sort(int *x,int n) 或 void sort(int x[],int n) 2).for(j=0;jj;j++)或 for(j=0;jj;j++) 3). if(x[j]>x[j+1]) 或 if(x[j+1]〖第17题〗『程序改错』(10分)

题目:函数fun的功能是:求出两个非零正整数 的最大公约数,并作为函数值返回。

例如,若给num1和num2分别输入49和21,则 输出的最大公约数为7。 #include int fun(int a,int b) { int r,t; if(a/**********FOUND**********/ b=a;

/**********FOUND**********/ a=t; } r=a%b; while(r!=0) { a=b; b=r;

/**********FOUND**********/ r=a/b;}

/**********FOUND**********/

return a; }

void main() { int num1,num2,a;

printf(\"Input two numbers:\\n\"); scanf(\"%d%d\ a=fun(num1,num2);

printf(\"the maximum common divisor is %d\\n\\n\} 答案: 1). a=b; 2). b=t; 3). r=a%b;}

4). return b; 或 return (b); 或 return(b);

〖第18题〗『程序改错』(10分)

题目:请编写一个函数fun,函数的功能是: 求出N×M整型数组的最小元素及其所在的行坐标

及列坐标(如果最小元素不唯一,选择位置在最前面的一个)。

如:输入的数组为:

9 2 3 4 15 6 12 1 9 10 11 2

求出的最小数为1,行坐标为2,列坐标为#define N 4 #define M 3 #include int Row,Col; void main()

{ int a[N][M],i,j,min,row,col; printf(\"input a array:\"); for(i=0;ifor(j=0;j1。 } min=fun(a);

printf(\"max=%d,row=%d,col=%d\}

int fun(int array[N][M]) { int min,i,j; min=array [0][0]; Row=0; Col=0;

for(i=0;i/**********FOUND**********/ { for(j=i;j/**********FOUND**********/ if(min /**********FOUND**********/ Col=i;} }

return(min); }

答案:

1). {for(j=0;jarray [i][j]) 3). Col=j;}

〖第19题〗『程序改错』(10分) 题目:求n!,n值由键盘输入。

程序中共有4条错误语句,请改正错误。 #include void main() { int n,i;

/**********FOUND**********/ int t;

printf(\"please input n(n>=0):\"); /**********FOUND**********/ scanf(\"%d\ i=1;

/**********FOUND**********/ t=0; while(i<=n)

/**********FOUND**********/

{ t+=i; i++; }

printf(\"%d!=%f\} 答案:

1). 2). 3). 4). float t; 或 double t; scanf(\"%d=1.0; 或 t=1; { t*=i; 或 { t=t*i;

因篇幅问题不能全部显示,请点此查看更多更全内容

Top