程序改错2

程序改错2
程序改错2

【程序改错-1】

题目:在一个一维整型数组中找出其中最大的数及其下标。程序中共有4条错误语句,请改正错误。『错误答案』:

1 int fun(int *a,int *b,int n)

2 *b=c-a;}

3 scanf("%d",&a[i]);

4 max=fun(a,&p,N); 【程序改错-2】

题目:为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换;输出数组元素。程序中共有4条错误语句,请改正错误。

『错误答案』:

1 scanf("%d",p++);

2 max=p;

3 if(★max★==★arr ★)

4 for(i=0;ii;i++) 或

for(p=arr;p

『Turbo C——程序改错』【程序改错-3】

题目:用起泡法对10个整数从小

到大排序。程序中共有4条错误语句,请改正错误。

『错误答案』:

1 void sort(int *x,int n)

2 for(j=0;j<★n★-1★-i★;j++) 或 for(j=0;★n★-1

★-i★>j;j++) 或

for(j=0;j

★)>j;j++)

3 if(x[j]>x[★j★+★1★]) 或 if(x[★j★+★1]★

4 sort(a,n);

『Turbo C——程序改错』【程序改错-4】

题目:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。程序中共有4条错误语句,请改正错误。

『错误答案』:

1

scanf("%d",&number);

2 for(i=N-2;i>=0;i--) 或 for(i=N-2;0<=i;i--)

3 a[★i★+★1

★]=a[i];

4 break;}

『Turbo C——程序改错』【程序改错-5】

题目:将一个字符串中第m个字符开始的全部字符复制成为另一

个字符串。

程序中共有4条错误语句,请改正错误。

『错误答案』:

1 { char *p1,*p2; 或{ char *p2,*p1;

2 p1= ★str1★+★m★

-1; 或 p1=-1+★str1★+★m★;

3 while(*p1)

4

strcopy(str1,str2,m);

【程序改错-6】

题目:以下程序的功能是求如下表达式:请改正程序中的错误,使程序能得到正确的运行结果。

『错误答案』:

1 scanf("%d",&n);

2 float fun(int n)

3 for(i=1;i<=n;i++)

或 for(i=1;n>=i;i++) 或

for(i=1;i

for(i=1;n+1>i;i++)

4 s+=1.0/t 或 s=★s★+★1.0★/(float)t; 或 s=★s★

+★1.0★/t; 或

s+=1.0/(float)t

【程序改错-7】

题目:下面程序的功能是利用二维数组输出如图所示的图形。请改正程序中的错误,使程序能得到正确的运行结果。『错误答案』:

1 #define N 7

2 a[i][j]=' ';

3 z=z-1; 或 z--; 或

z=-1+z; 或 z=(n+1)/2-1; 或

z=(1+n)/2-1

4

printf("%c",a[i][j]); 【程序改错-8】

题目:输入一行英文文本,将每一

个单词的第一个字母变成大『错误

答案』:

1 fun(char *p) 或

fun(char p[])

2 while(*p!='\0') 或

while(*p)

3 k=1;}

4 p++; 或 p=1+p; 或

++p; 或 p=p+1;

【程序改错-9】

题目:将一个字符串中的大写字母

转换成小写字母。

例如:输入aSdFG输出为

asdfg。

『错误答案』:

1 char fun(char *c)

2 return *c; 或

return (*c); 或 return(*c);

3 { char s[81],*p=s;

4 putchar(*p); 或

printf("%c",*p);

【程序改错-10】

题目:将若干学生的档案存放在一

个文件中,并显示其内容。错误答

案』:

1 { struct student *p

2 FILE *fp;

3 for(p=stu;p<★stu★

+★3★;p++) 或 for(p=stu;★

stu★+★3★>p;p++) 或

for(p=stu;p<=★stu★+★2

★;p++) 或 for(p=stu;★stu★+

★2★>=p;p++)

4

printf("%4d %-10s %4d\n",(*p)

.num ,p->name,(*p).age);

【程序改错-11】

题目:下列给定程序中,函数fun

的功能是:判断m是否为素数,若

是返回1,否则返回0。主函数的

功能是:按每行5个输出1-100

之间的全部素数。『错误答案』:

1 int fun( int m) 或

fun( int m)

2 for(i=2;i

for(i=2;m>i;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; 或

return(k);

【程序改错-12】

题目:函数fun的功能是:用下面

的和式求圆周率的近似值。直

到最后一项的绝对值小于

等于0.0001。

错误答案』:

1 #include "math.h"

2 float s=0,t=1,p=1;

或 float s=0,p=1,t=1; 或

float p=1,s=0,t=1; 或 float

p=1,t=1,s=0; 或 float

t=1,p=1,s=0; 或 float

t=1,s=0,p=1;

3 while(fabs(t)>1e-4)

或 while(0.0001

while(1e-4

while(fabs(t)>0.0001)

4 printf("pi=%f\n",★

s★*★4★);

【程序改错-13】

题目:下列给定程序中,函数fun

的功能是:求1到10的阶乘的

和。主函数和fun函数中,

各有两个错误,\『错误答案』:

1 for(i=1;i<=10;i++)

或 for(i=1;10>=i;i++) 或

for(i=1;i<11;i++) 或

for(i=1;11>i;i++)

2 s=★s★+★fac(i)★;

或 s+=fac(i);

3 float y=1.0; 或

float y=1;

4 return y; 或

return(y); 或 return (y);

【程序改错-14】

题目:函数fun的功能是:求1到

20的阶乘的和。请改正程序中的错

误,使它能得出正确的结果。

『错误答案』:

1 t=1; 或 t=1.0;

2 t=★t★*★j★; 或

t*=j;

3 s=★s★+★t★; 或

s+=t;

4

printf("jiecheng=%f\n",s);

【程序改错-15】

题目:函数fun的功能是:输出

Fabonacci数列的前20项,要求变

量类型定义成浮点型,输出

时只输出整数部分,输出项

数不得多于或少于20。

『错误答案』:

1 printf("%8.0f",f1);

或 printf("%f",f1);

2 for(i=1;i<20;i++)

或 for(i=1;20>i;i++) 或

for(i=2;i<=20;i++) 或

for(i=2;20>=i;i++) 或

for(i=1;i<=19;i++) 或

for(i=1;19>=i;i++)

3 f1=f2;

4 f2=f3;

【程序改错-16】

题目:函数fun的功能是:根据整

型形参m的值,计算如下公式的值。

1 1

1

t = 1- —— - —— - ...

- ——

2x2 3x3

mxm

『错误答案』:

1 for(i=2;i<=m;i++)

或 for(i=2;m>=i;i++) 或

2 y-=1.0/(i*i); 或

y=y-1.0/(i*i); 或 3

return y; 或 return (y);

【程序改错-17】

题目:函数fun的功能是:实现交

换两个整数的值。例如给a和b

分别输入3和6 ,输出为

a=6 b=3『错误答案』:

1 void fun (int *a,int

*b) 或 fun (int *a,int *b)

2 t=*a;

3 *a=*b;

4 *b=t;

【程序改错-18】

题目:函数fun的功能是:计算并

输出k以内最大的10个能被13

或17整除的自然数之和。k

的值由主函数传入,若k的值

为500,则函数值为4622。

请更改程序中的错误,使它

能得出正确的结果。

『错误答案』:

1 while (★(2<=k)★&&

★(mc<10)★) 或 while (★(k>=2)

★&&★(10

2 if (★(★k%17★==★

0)★||★(k%13★==★0)★) 或

if !((k%17!=0)&&(k%13!=0))

3 k--;

4 return m; 或

return(m);

【程序改错-19】

题目:函数fun的功能是:计算正

整数num的各位上的数字之积。

例如,输入252,则输出应

该是20。『错误答案』:

1 long k=1;

2 num/=10; 或

num=num/10;

3 scanf("%ld",&n);

4

printf("\n%ld\n",fun(n));

【程序改错-20】

题目:已知一个数列从第0项开始

的前三项分别为0、0、1,以

后的各项都是其相邻的前

三项的和。下列给定程序中,

函数fun的功能是:计算并

输出该数列的前n项的平方根

之和sum,n的值通过形参传

入。

『错误答案』:

1 double fun (int n)

2 sum=1.0;

3 s2=1.0;

4 for(k=4;k<=n;k++)

或 for(k=4;n>=k;k++)

【程序改错-21】

题目:函数fun的功能是:根据以

下公式求π值,并作为函数值

返回。例如,给指定精度的

变量eps输入0.0005时,应当

输出Pi=3.140578。

『错误答案』:

1 t=1; 或 t=1.0;

2 while (t>eps) 或

while (eps=eps)

或 while (eps<=t)

3 t=t*n/(2*n+1); 或

1.0*n/(2*n+1)*t 4

return (2*s); 或 return(2*s);

或 return (s*2); 或

return(s*2);

【程序改错-22】

题目:函数fun的功能是:求出两

个非零正整数的最大公约数,

并作为函数值返回。例如,

若给num1和num2分别输入49

和21,则输出的最大公约数

为7。

请改正程序中的错误,使它

能得出正确的结果。

『错误答案』:

1 a=b;

2 b=t;

3 r=a%b;}

4 return b; 或 return

(b); 或 return(b);

【程序改错-23】

题目:在主函数中从键盘输入若干

个数放入数组中,用0结束输

入并放在最后一个元素中。

下列给定程序中,函数fun的

功能是:计算数组元素中值

为正数的平均值(不包括0)。

例如,数组中元素的值依次

为39,-47,21,2,-8,15,

0,则程序的运行结果为

19.250000。

请改正程序中的错误,使它

能得出正确的结果。

『错误答案』:

1 double sum=0.0;

2 while(★s[i]★!=★0

★) 或 while!(s[i]==0) 或

while!(0==s[i])

3 sum/=c; 或

sum=sum/c;

4 return sum; 或

return (sum);

【程序改错-24】

题目:fun函数的功能是:先从键

盘上输入一个3行3列矩阵的各

个元素的值,然后输出主对

角线上的元素之和sum。

请改正程序中的错误,使它

能得出正确的结果。

『错误答案』:

1 sum=0;

2

scanf("%d",&a[i][j]);

3 sum=★sum★+★

a[i][i]★; 或 sum+=a[i][i];

4

printf("sum=%d\n",sum);

【程序改错-25】

题目:fun函数的功能是:给定n

个实数,输出平均值,并统计

在平均值以下(含平均值)

的实数个数。例如,n=6时,

输入23.5, 45.67, 12.1,

6.4,58.9, 98.4所得平均值

为40.828335,在平均值以

下的实数个数应为3。

请改正程序中的错误,使它

能得出正确的结果。

『错误答案』:

1 float xa=0; 或

float xa=0.0;

2 for(j=0;j

for(j=0;n>j;j++) 或

for(j=0;n-1>=j;j++) 或

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

3 for(j=0;j

for(j=0;n>j;j++) 或

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

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

4 return c; 或 return

(c);

【程序改错-26】

题目:fun函数的功能是:找出大

于m的最小素数,并将其作为

函数值返回。

请改正程序中的错误,使它

能得出正确的结果。

『错误答案』:

1 for(k=2;k

for(k=2;i>k;k++)

2 if(★i%k★==★0★) break;

3 if(i<=k) 或 if(k>=i) 或 if(★k★==★i★)

4 return i; 或 return

(i); 或 return(i);

【程序改错-27】

题目:fun函数的功能是:实现3

行3列矩阵的转置,即行列互换。

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

『错误答案』:

1

scanf("%d",&a[i][j]);

2 for(j=0;jj;j++) 或

for(j=0;j<=i;j++) 或

for(j=0;i>=j;j++) 或

for(j=i+1;j

for(j=i;j

3 t=a[i][j];

4 a[j][i]=t;

【程序改错-28】

题目:fun函数的功能是:求一个

3行4列矩阵的外框的元素值之

和,注意,矩阵四个角上的元素不能重复加。例如,矩阵

元素为1,2,3,4,5,6,7,8,9,10,11,12时,四

框元素值之和应为65。

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

『错误答案』:

1 int

i,j,s,s1=0,s2=0,s3=0,s4=0;

2 s2=★s2★+★

a[m-1][j]★; 或

s2+=a[m-1][j];

3 for(i=1;i

for(i=1;m-1>i;i++) 或

for(i=1;-1+m>i;i++) 或

for(i=1;i<=m-2;i++) 或

for(i=1;m-2>=i;i++)

4 s=s1+s2+s3+s4;

【程序改错-29】

题目:fun函数的功能是:实现两个字符串的连接。

例如:输入dfdfqe和12345时,则输出dfdfqe12345.

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

『错误答案』:

1 while(★s1[i]★!=★'\0'★)i++; 或

while!(s1[i]=='\0')i++;

2 while(★s2[j]★!=★'\0'★) 或

while!(s2[j]=='\0')

3 s1[i]=s2[j];

4 s1[i]='\0';

【程序改错-30】

题目:将字符串s中最后一次出现的子字符串t1替换成字符串t2,

所形成的新串放在w所指的数组中,在此处,要求t1和t2

所指字符串的长度相同。

例如,当s所指字符串中的内容为"abcdabfabc",t1中的

内容为"ab",t2中的内容为"99"时,结果w所指数组中的

内容应为"abcdabf99c"。

请改正程序中的语法错误,使它能运行出正确的结果。

『错误答案』:

1 while (*w) 或 while (*w!=0) 或 while (*w!='\0') 或for (;*w;) 或 for (;*w!='\0';)

2 if ( ★*r★ == ★*p ★ ) { r++; p++; }

3 if (★ *r ★==★

'\0'★ ) a = w; 或 if (★ *r ★==0 ) a = w;

4 *a=*r;

【程序改错-31】

题目:将s所指字符串的反序和正序进行连接形成一个新串放在

t所指的数组中。

例如:当s所指的字符串的内容为"ABCD"时,t所指数组中

的内容为"DCBAABCD"。

请改正程序中的语法错误,使它能运行出正确的结果。『错误答案』:

1 void fun (char

s[],char t[]) 或 void fun (char

t[],char s[])

2 d = strlen(s);

3 for (i = 0; i

或 for (i = 0; d>i; i++) 或 for

(i = 0; i<=d-1; i++) 或 for (i

= 0; d-1>=i; i++)

4 t[★2★*★d★] =

'\0';

【程序改错-249】

题目:下面程序的功能是:从键盘

输入十个学生的成绩,统计最

高分,最低分和平均分。max

代表最高分,min代表最低分,

avg代表平均分。

『错误答案』:

1 float

a[10],min,max,avg;

2 scanf("%f",&a[i]);

3 max=min=avg=a[0];

4 if (min>a[i])

【程序改错-250】

题目:以下程序输出前六行杨辉三

角形,既

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

…………

…………

『错误答案』:

1 for(i=0;i<6;i++) 或

for(i=0;i<=5;i++)

2 for(k=0;k<5-i;k++)

3 if(j==0||j==i)

4

a[i][j]=a[i-1][j-1]+a[i-1][j];

a[i][j]=a[i-1][j]+a[i-1][j-1]

;

【程序改错-251】

题目:有一数组内放10个整数,要

求找出最小数和它的下标,然后

把它和数组中最前面的元素即第

一个数对换位置.

『错误答案』:

1 scanf("%d",&a[i]);

2 for(i=1;i<10;i++)

或 for(i=0;i<10;i++) 或

for(i=1;i<=9;i++) 或

for(i=0;i<=9;i++)

3 if(a[i]

4 a[k]=a[0];

【程序改错-253】

题目:有一数组内放10个整数,要

求找出最小数和它的下标,然后

把它和数组中最前面的元素即第

一个数对换位置.

『错误答案』:

1 for(i=1;i<10;i++)

或 for(i=1;i<=9;i++)

2 float

score[10],aver;

3 scanf("%f",

&score[i]);

4

aver=average(score);

【程序改错-254】

题目:一个已排好序的一维数组,

输入一个数number,要求按原来

排序的规律将它插入数组中.

『错误答案』:

1 for(i=0;i<10;i++)

或 for(i=0;i<=9;i++)

2 end=a[9];

3 if(number>end)

a[10]=number;

4 if(a[i]>number)

【程序改错-255】

题目:用"起泡法"对输入的十个字

符排序后按从小到大的次序输出.

『错误答案』:

1 scanf("%s", str);

2 sort(str);

3

for(i=0;(i

');i++)

4 if(str[i]>str[i+1])

【程序改错-256】

题目:以下程序把两个数按由大到

小的顺序输出来.

『错误答案』:

1 swap( int *p1,int

*p2)

2

scanf("%d%d",&a,&b);

3 p1=&a;p2=&b;

4

printf("max=%d,min=%d\n",*p1,

*p2);

【程序改错-257】

题目:将6个数按输入时顺序的逆

序进行排列.

sort(*p,6);

for(i=0;i<=5;i++)

printf("%d",num[i]);

}

『错误答案』:

1 p1=p+i;

p2=p+(m-1-i);

2 char *p,num[6];

3

scanf("%d",&num[i]);

【程序改错-258】

题目:用指针作函数参数,编程序

求一维数组中的最大和最小的元

素值.

『错误答案』:

1 void maxmin(int

arr[ ],int *pt1,int *pt2,int n)

2 *pt1=*pt2=arr[0];

3 if(arr[i]>*pt1)

4 p1=&a;p2=&b;

程序改错C

程序改错 ================================================== 题号:7471 /*------------------------------------------------------ 【程序改错】:只允许修改错误代码,其他代码不允许修改! -------------------------------------------------------- 功能:计算正整数num的各位上的数字之积。 例如:若输入:252,则输出应该是:20。 若输入:202,则输出应该是:0。 ------------------------------------------------------*/ #include #include long fun (long num) { /**********ERROR**********/ long k=1 do { k*=num%10 ; /**********ERROR**********/ num\=10; /**********ERROR**********/ }while(!num) ; return (k) ; } void main( ) { long n ; printf("\Please enter a number:") ; scanf("%ld",&n) ; printf("\n%ld\n",fun(n)) ; } 答案: 位置 1: long k=1; 位置 2:

num/=10; 【或】 num=num/10; 位置 3: } while(num) ; 【或】 while(num!=0) 题号:7383 /*------------------------------------------------------ 【程序改错】:只允许修改错误代码,其他代码不允许修改! -------------------------------------------------------- 功能:统计出若干个学生的平均成绩,最低分以及得最低分的人数。例如:输入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;iarray [i]) Min=array [i]; /**********ERROR**********/ sum=+array [i]; } /**********ERROR**********/ ave=sum\n; for(i=0;i

程序改错题

程序改错题 (注意:每小题只有1行有错误,答题时请指出错误位置并给出改正结果)1. 输出计算结果。 main() { int a=b=10; a+=b+5; b*=a+=10; printf("%d%d\n",a,b); } 2. 输出计算结果。 #include main() { float x,y; scanf("%f",x); y=x*56/97; printf("%f\n",y); } 3. 输出计算结果。 main() { int x=2,y=3; z=(x++,y++); printf("%d",z); } 4. 输出运行结果。 main() { float a,b,c,v; a=2.0;b=3.0;c=4.0; v=a*b*c; printf("%f\n" ,v) } 5. 输出运行结果。 #include “stdio.h” main(){ float r,s; r=5.0; s=3.14159*r*r; printf("%d\n",s); }

输出程序运行结果。 #include main() { char ch; scanf("%c",ch); printf("%d\n",ch); } 7. 输入一整数判断是否能被13整除。main() { int i; scanf(“%d”,i); if(i%13==0) printf("yes"); else printf("no"); } 8. 输出程序运行结果。 main() { int a,b; float x,y,z; scanf("%f%f%f",&x,&y,&z); a=b=x+y+z; c=a+b; printf("%d%d%d",a,b,c); } 9. 输出程序运行结果。 #include main() { float x,y; scanf("%f",&x); y=2x+10; printf("%f\n",y); } 10. 输出程序运行结果。 main() { int a,b='B'; scanf("%d",a); printf("%c,",b++); printf("%d\n",b-a); }

c语言程序改错

【程序改错】 1.功能:利用递归函数调用方式,将所输入的5个字符,以相反顺序 打印出来。 char next; next=getchar(); palin(n-1); 2.功能:求广义菲玻那契级数的第n项。广义菲玻那契级数的前n 项为: 1,1,1,3,5,9,17,31,…… 项值通过函数值返回 main ( )函数。 例如:若 n = 15,则应输出:The value is: 2209。 for (k=4; k<=n; k++) a=b; return d; 3.功能:根据整型形参m,计算如下公式的值: y=1/2+1/8+1/18+...+1/2m*m double y=0.0; 4.功能:编制统计营业员一天的营业额的程序,设程序采用一个循环 实现,每次循环输入一笔交易金额并累计营业额。由于营 业员一天完成的交易次数是不确定的,为此以最后附加输 入一笔0或负数交易额作为交易金额已全部输入结束的标志。 float sale,sigma; scanf("%f",&sale); sigma=sigma+sale; 5.功能:读取7个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*。while(n<8) while(a<1||a>50); for(i=0;i

程序改错基本题

程序改错 一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。 1.求1?2?3?4? ?n main() { long int sum; int n,i=1; scanf("%d",n); printf(“\n”); while(ia[j]) { max=a[j]; m=j; } printf(“下标:%d\n最大值:%d”, j, max) } *3. 求3+4 int a=3,b=4; main() { int a,c; c=a+b; printf(“c=%d”); } 4.用一个函数求两个数之和。 sum(x,y) { float z; z=x+y; return; }

main() { float a,b; int c; scanf("%f,%f",&a,&b); c=sum(a,b); printf("\nSum is %f",sum); } 5.用指针作函数参数,对输入的两个整数按大小顺序输出。 swap(int *p1,*p2) { int *p; *p=*p1;*p1=*p2;*p2=*p; } main() { int a,b; int *q1,*q2; scanf("%d,%d",&a,&b); &q1=a,&q2=b; if(a

程序改错2

【程序改错-1】 题目:在一个一维整型数组中找出其中最大的数及其下标。程序中共有4条错误语句,请改正错误。『错误答案』: 1 int fun(int *a,int *b,int n) 2 *b=c-a;} 3 scanf("%d",&a[i]); 4 max=fun(a,&p,N); 【程序改错-2】 题目:为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换;输出数组元素。程序中共有4条错误语句,请改正错误。 『错误答案』: 1 scanf("%d",p++); 2 max=p; 3 if(★max★==★arr ★) 4 for(i=0;ii;i++) 或 for(p=arr;pj;j++) 或 for(j=0;jj;j++) 3 if(x[j]>x[★j★+★1★]) 或 if(x[★j★+★1]★ =0;i--) 或 for(i=N-2;0<=i;i--) 3 a[★i★+★1 ★]=a[i]; 4 break;} 『Turbo C——程序改错』【程序改错-5】 题目:将一个字符串中第m个字符开始的全部字符复制成为另一 个字符串。 程序中共有4条错误语句,请改正错误。 『错误答案』: 1 { char *p1,*p2; 或{ char *p2,*p1; 2 p1= ★str1★+★m★ -1; 或 p1=-1+★str1★+★m★; 3 while(*p1) 4 strcopy(str1,str2,m); 【程序改错-6】 题目:以下程序的功能是求如下表达式:请改正程序中的错误,使程序能得到正确的运行结果。 『错误答案』: 1 scanf("%d",&n); 2 float fun(int n) 3 for(i=1;i<=n;i++) 或 for(i=1;n>=i;i++) 或 for(i=1;ii;i++) 4 s+=1.0/t 或 s=★s★+★1.0★/(float)t; 或 s=★s★ +★1.0★/t; 或 s+=1.0/(float)t 【程序改错-7】 题目:下面程序的功能是利用二维数组输出如图所示的图形。请改正程序中的错误,使程序能得到正确的运行结果。『错误答案』: 1 #define N 7 2 a[i][j]=' '; 3 z=z-1; 或 z--; 或 z=-1+z; 或 z=(n+1)/2-1; 或 z=(1+n)/2-1 4 printf("%c",a[i][j]); 【程序改错-8】 题目:输入一行英文文本,将每一 个单词的第一个字母变成大『错误 答案』: 1 fun(char *p) 或 fun(char p[]) 2 while(*p!='\0') 或 while(*p) 3 k=1;} 4 p++; 或 p=1+p; 或 ++p; 或 p=p+1; 【程序改错-9】 题目:将一个字符串中的大写字母 转换成小写字母。 例如:输入aSdFG输出为 asdfg。 『错误答案』: 1 char fun(char *c) 2 return *c; 或 return (*c); 或 return(*c); 3 { char s[81],*p=s; 4 putchar(*p); 或 printf("%c",*p); 【程序改错-10】 题目:将若干学生的档案存放在一 个文件中,并显示其内容。错误答 案』: 1 { struct student *p 2 FILE *fp; 3 for(p=stu;p<★stu★ +★3★;p++) 或 for(p=stu;★ stu★+★3★>p;p++) 或 for(p=stu;p<=★stu★+★2 ★;p++) 或 for(p=stu;★stu★+ ★2★>=p;p++) 4 printf("%4d %-10s %4d\n",(*p) .num ,p->name,(*p).age); 【程序改错-11】 题目:下列给定程序中,函数fun 的功能是:判断m是否为素数,若 是返回1,否则返回0。主函数的 功能是:按每行5个输出1-100 之间的全部素数。『错误答案』: 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; 或 return(k); 【程序改错-12】 题目:函数fun的功能是:用下面 的和式求圆周率的近似值。直 到最后一项的绝对值小于 等于0.0001。 错误答案』: 1 #include "math.h" 2 float s=0,t=1,p=1; 或 float s=0,p=1,t=1; 或 float p=1,s=0,t=1; 或 float p=1,t=1,s=0; 或 float t=1,p=1,s=0; 或 float t=1,s=0,p=1; 3 while(fabs(t)>1e-4) 或 while(0.00010.0001) 4 printf("pi=%f\n",★ s★*★4★); 【程序改错-13】 题目:下列给定程序中,函数fun 的功能是:求1到10的阶乘的 和。主函数和fun函数中, 各有两个错误,\『错误答案』: 1 for(i=1;i<=10;i++) 或 for(i=1;10>=i;i++) 或 for(i=1;i<11;i++) 或 for(i=1;11>i;i++) 2 s=★s★+★fac(i)★; 或 s+=fac(i); 3 float y=1.0; 或 float y=1; 4 return y; 或 return(y); 或 return (y); 【程序改错-14】 题目:函数fun的功能是:求1到 20的阶乘的和。请改正程序中的错 误,使它能得出正确的结果。 『错误答案』: 1 t=1; 或 t=1.0; 2 t=★t★*★j★; 或 t*=j; 3 s=★s★+★t★; 或 s+=t; 4 printf("jiecheng=%f\n",s); 【程序改错-15】 题目:函数fun的功能是:输出 Fabonacci数列的前20项,要求变 量类型定义成浮点型,输出 时只输出整数部分,输出项 数不得多于或少于20。 『错误答案』: 1 printf("%8.0f",f1); 或 printf("%f",f1); 2 for(i=1;i<20;i++) 或 for(i=1;20>i;i++) 或 for(i=2;i<=20;i++) 或 for(i=2;20>=i;i++) 或 for(i=1;i<=19;i++) 或 for(i=1;19>=i;i++) 3 f1=f2; 4 f2=f3; 【程序改错-16】 题目:函数fun的功能是:根据整 型形参m的值,计算如下公式的值。 1 1 1 t = 1- —— - —— - ... - —— 2x2 3x3 mxm 『错误答案』: 1 for(i=2;i<=m;i++) 或 for(i=2;m>=i;i++) 或 2 y-=1.0/(i*i); 或 y=y-1.0/(i*i); 或 3 return y; 或 return (y); 【程序改错-17】 题目:函数fun的功能是:实现交 换两个整数的值。例如给a和b 分别输入3和6 ,输出为 a=6 b=3『错误答案』: 1 void fun (int *a,int *b) 或 fun (int *a,int *b) 2 t=*a; 3 *a=*b; 4 *b=t; 【程序改错-18】 题目:函数fun的功能是:计算并 输出k以内最大的10个能被13 或17整除的自然数之和。k 的值由主函数传入,若k的值 为500,则函数值为4622。 请更改程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 while (★(2<=k)★&& ★(mc<10)★) 或 while (★(k>=2) ★&&★(10=k;k++) 【程序改错-21】 题目:函数fun的功能是:根据以 下公式求π值,并作为函数值 返回。例如,给指定精度的 变量eps输入0.0005时,应当 输出Pi=3.140578。 『错误答案』: 1 t=1; 或 t=1.0; 2 while (t>eps) 或 while (eps=eps) 或 while (eps<=t) 3 t=t*n/(2*n+1); 或 1.0*n/(2*n+1)*t 4 return (2*s); 或 return(2*s); 或 return (s*2); 或 return(s*2); 【程序改错-22】 题目:函数fun的功能是:求出两 个非零正整数的最大公约数, 并作为函数值返回。例如, 若给num1和num2分别输入49 和21,则输出的最大公约数 为7。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 a=b; 2 b=t; 3 r=a%b;} 4 return b; 或 return (b); 或 return(b); 【程序改错-23】 题目:在主函数中从键盘输入若干 个数放入数组中,用0结束输 入并放在最后一个元素中。 下列给定程序中,函数fun的 功能是:计算数组元素中值 为正数的平均值(不包括0)。 例如,数组中元素的值依次 为39,-47,21,2,-8,15, 0,则程序的运行结果为 19.250000。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 double sum=0.0; 2 while(★s[i]★!=★0 ★) 或 while!(s[i]==0) 或 while!(0==s[i]) 3 sum/=c; 或 sum=sum/c; 4 return sum; 或 return (sum); 【程序改错-24】 题目:fun函数的功能是:先从键 盘上输入一个3行3列矩阵的各 个元素的值,然后输出主对 角线上的元素之和sum。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 sum=0; 2 scanf("%d",&a[i][j]); 3 sum=★sum★+★ a[i][i]★; 或 sum+=a[i][i]; 4 printf("sum=%d\n",sum); 【程序改错-25】 题目:fun函数的功能是:给定n 个实数,输出平均值,并统计 在平均值以下(含平均值) 的实数个数。例如,n=6时, 输入23.5, 45.67, 12.1, 6.4,58.9, 98.4所得平均值 为40.828335,在平均值以 下的实数个数应为3。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 float xa=0; 或 float xa=0.0; 2 for(j=0;jj;j++) 或 for(j=0;n-1>=j;j++) 或 for(j=0;j<=n-1;j++) 3 for(j=0;jj;j++) 或 for(j=0;j<=n-1;j++) 或 for(j=0;n-1>=j;j++) 4 return c; 或 return (c); 【程序改错-26】 题目:fun函数的功能是:找出大 于m的最小素数,并将其作为 函数值返回。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 for(k=2;kk;k++)

程序改错1

程序改错 1.计算下列分段函数的值,输入x输出y 的值 f(x)= x*2 x<0且x≠-3 sin(x) 0<=x<10 且x≠2且x≠3 x*x+x-1 其他 1)scanf(“%f,&x); 2)y=sin(3*x); 3)printf(“%f\n”,y); 2.输入两个整数n1,n2(n10); 3)in=in/10; 4.从键盘上输入20个元素的值存入以为数组m中,然后将下标为奇数的元素赋值给数组n,最后输出数组n的内容。 1)for(a=0;a<20;a++) 2)if(a%2==1) 3)b++; 4)for(a=0;a<10;a++)

5.从键盘输入10个学生的成绩,统计最高分max,最低分min和平均分avg。 1)float a[8],min,max,avg; 2)scanf(“%f”,&a[i]); 3)max=min=avg=a[0]; 4)if(a[i]

计算机程序改错题,及答案

11 *程序名:TEST.prg *检索选修课程门数等于3门或3门以上,每门课程成绩大于或等于70分的每个学生的 *学号,姓名,性别,平均成绩,最低分和选课门数,并将结果存储到表NEW_TEST中. *以下程序有三处错误,请改正 OPEN DA TABASE SDB SELECT STUDENT.学号,姓名,性别,A VG(成绩) 平均成绩,MIN(成绩) 最低分,COUNT(*) 选课门数; FROM STUDENT,SC; WHere STUDENT.学号= SC.学号AND 成绩>= 70 ; &&**********Error********** GROUP BY STUDENT.学号HA VING count(课程号) >= 3; &&**********Error********** inTO table NEW_TEST &&**********Error********** CLOSE ALL 9 *程序名:dbtest3.prg *定义一个视图VS1, *检索选课门数是3门以上的每个学生的学号、姓名、平均成绩、最低分、选课门数和院系编号, *并按平均成绩降序排序. *以下程序有三处错误,请改正 SET TALK OFF SET SAFETY OFF open DATABASE SDB &&****Error***修改本行的语法错误,不许注释掉本行或删除本行 CREATE VIEW VS1 SELECT STUDENT2.学号, 姓名, A VG(成绩) 平均成绩, MIN(成绩) 最低分, COUNT(*) 选课门数, 院系编号; FROM STUDENT2, sc; &&*************Error************* WHERE STUDENT2.学号= SC.学号; GROUP BY SC.学号HA VING COUNT(课程号) > 3; ORDER BY 平均成绩desc &&*************Error************* CLOSE DATABASE RETURN i=2 create table four(结果I) do while i<=1000 if i%3=0 insert into four values(i) &&错误语句请修改 endif

程序改错练习题

程序改错练习题 下面每个程序的划线处有语法或逻辑错误,请找出并改正,使程序符合题意。 1.求1?2?3?4? ?n main() { int sum; 正确:int sum=1; int n,i=1; scanf("%d",n); scanf(“%d”,&n); printf(“\n”); while(ia[j]) if(max

main() { float a,b; int c; float c; scanf("%f,%f",&a,&b); c=sum(a,b); printf("\nSum is %f",sum); printf("\nSum is %f",c); } 4. x , y两个数中,让x中存较大的数,y存较小的数 #include main( ){ int x , y=200 , z=0; x=180; if ( x

VB程序设计例题-程序改错程序填空程序设计

'以下程序段用于输出杨辉三角:结果样式如图1 ' Private Sub Form_Click() Const n = 10 Dim arr(n, n) As Integer For I = 1 To n arr(I, I) = 1 '**********SPACE********** 【arr(I, 1) = 1】 Next I For I = 3 To n For j = 2 To I - 1 '**********SPACE********** arr(i, j) =arr(i-1,j-1)+arr(i-1,j) Next j Next I For I = 1 To n For j = 1 To I '**********SPACE********** 【print arr(I,j)】 Next j Print Next I End Sub Option Explicit '------------------------------------------------ '【程序改错】 '------------------------------------------------ '题目:用自定义函数的方法求sum(x),求当-1≤x≤1时,' sum(x)=x/2!+x^2/3!+x^3/4!+……+x^n/(n+1)!, ' 当x〉1或x〈-1时,函数值为0。当n〈=0时,输入数' 据错误。X、N都是由用户输入。 '------------------------------------------------ '注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Command1_Click() Dim s As Single Dim n As Integer, x As Single, k As Integer n = Val(InputBox("Please input a integer value:"))

c语言程序设计第五版习题答案

c语言程序设计第五版习 题答案 Prepared on 24 November 2020

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、dowhile语句、switch语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么它由哪几部分组成 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { inta1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main()

{ inta1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* IloveCprograms! ************************* 【分析与提示】 ①要有文件包含语句#include<>。C语言中没有数据的输入、输出等功 能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf 等来实现的。这些函数的说明都包括在文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干 条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include<> main() { printf("************************\n"); printf("IloveCprograms!\n"); printf("************************\n"); } 第2章数据类型及其运算一.简答题 1.C语言中的数据类型主要有哪几类 【解答】短整型(shortint) 整型整型(int) 长整型(longint) 基本类型字符型(char)(float) 实型(浮点型) 双精度(double) 枚举类型(enum) 数组类型

程序改错

【程序改错】 1.下列给定程序中函数fun的功能是:删除s所指字符中所有的小写字母c 。 请改正程序中的错误,使它能得出正确的结果。 #include void fun( char *s ) { int I,j; for(i=j=0; s[i]!='\0'; i++) if(s[i]!='c') /***********FOUND***********/ s[j++]=s[i]; /***********FOUND***********/ s[j]='\0'; } main() { char s[80]; printf("Enter a string: "); gets(s); printf("The original string: "); puts(s); fun(s); printf("The string after deleted : "); puts(s);printf("\n\n"); } 2. 下列给定程序中,函数fun的功能是:根据整型参数m,计算如下公式的值。y=1/(100×100)+1/(200×200)+1/(300×300)+…+1/(m×m) 例如,若m=2000,则应输出0.000160。 请改正程序中的错误,使它能得出正确的结果。 #include #include #include /***********FOUND***********/ double fun (int m) { double y=0, d; int i; /***********FOUND***********/ for(i=100;i<=m;i+=100) {d=(double)i*(double)i; y+=1.0/d; } return(y); } void main() { int n=2000; system("CLS"); printf("\nThe result is %lf\n",fun(n)); } 3. 下列给定程序中函数fun的功能是:根据以下公式求π值,并作为函数值返回。

程序改错

1 已知C的公式表示如下: ' n! ' C=------------------ ' (n-m)!*m! 1). x=1 2). x=x*j 3). C = fac(n) / ( fac(n - m) * fac(m) ) 2题目:从计算机输入三个数, 找出中间数 1). If x < y Then 2). If y >= z Then 3). ElseIf x >= z Then 3'题目:求s=2!+4!+6!+8!,阶乘的计算用Function过程 ' fact实现 1). For i = 2 To 8 Step 2 2). Public Function fact(ByVal n As Integer) 3). fact = t 4 题目:编程求一个十进制整数n的各位数字之和,设n为小于或等于5位的数。 1). S1 = Trim(S1) 2). Ch = Mid(S1, i, 1) 3). Sum = Sum + Val(Ch) 5已知自然对数的底数e的级数表示如下: 1). x = x * i 2). n = 0 3). Loop While item >= 0.00000001 6下面的程序段用于实现以下功能:建立一顺序文件,存放10名同学的学号和三门功课成绩,显示 1). Open "c:\2.txt" For Output As #1 2). Open "c:\2.txt" For Input As #1 3). Input #1, n0, c1, c2, c3 7给定年号与月份,判断该年是否闰年,并根据给出的月份来判断是什么季节和该月有多少天? 1). If Year Mod 4 = 0 And Year Mod 100 <> 0 Or Year Mod 400 = 0 Then 2). Flag = 1 3). Select Case Month 8:一个两位的正整数,如果将它的个位数与十位数对调,则产生另一个正整数,我们把后者叫做前者的对调数,现给定一个两位的正数 1). h = k - g * 10 : m = h * 10 + g 2). For n = 11 To 99 3). End If 9程序功能为求解一元二次方程的实根,请修正程序中错误 1). work = b ^ 2 - 4 * a * c 2). root1 = (-b + Sqr(work)) / (2 * a) 3). root2 = (-b - Sqr(work)) / (2 * a) 10随机产生n个两位正整数(n由输入对话框输入,且n>0), ' 求出其中的偶数之和,并在标签框Label1上显示。 1). sum=0 2). rnddat = (10 + Int(90 * Rnd)) 3). If rnddat Mod 2 = 0 Then 11由输入对话框输入n(设n为大于零且小于30的自然数) 1). Do While n <= 0 Or n >= 30 2). k = k + 1 3). Loop Until k >= n 12判断给定的年月日是该年中的第几天。 1). Dim a(1 To 12) As Integer 2). days = days + a(i - 1) 3). days = days + day 13设窗体中有图片框Pic1,现要求在其中绘制10个同心圆, ' 然后将此图以Test.BMP作文件名存入磁盘。 1). for i=0 to 9 2). Do Until I < 0 3). I = I - 1 14给定三角形的三条边,计算三角形的面积。要求 ' 程序首先判断给定的三条边能否构成三角形。 1). If a + b < c Or b + c < a Or a + c < b Then 2). t = (a + b + c) / 2 3). s = Sqr(t * (t - a) * (t - b) * (t - c)) 15以下程序段用于计算5的N次方。 1). k=1 2). s=1 3). Loop 16随机产生n个两位正整数(n由输入对话框输入,且n>0), ' 求出其中的偶数之和,并在标签框Label1上显示。

有目录-程序改错部分试题及答案(2015-2016-1)

目录 功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。 (1) 功能:求如下表达式: (2) 功能:判断m是否为素数,若是返回1,否则返回0。 (4) 功能:用下面的和式求圆周率的近似值。直到最后一项的绝对值小于等于0.0001。 (5) 功能:求1到20的阶乘的和。 (6) 功能:输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出 整数部分,输出项数不得多于或少于20。 (7) 功能:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线上的 元素之和sum。 (8) 功能:找出大于m的最小素数,并将其作为函数值返回。 (9) 功能:有一数组内放10个整数,要求找出最小数和它的下标,然后把它和数组中最前 面的元素即第一个数对换位置. (10) 功能:一个已排好序的一维数组,输入一个数number,要求按原来排序的规律将 它插入数组中. (11) 第1题/*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。 ------------------------------------------------------*/ #include #define N 11 main() { int i,number,a[N]={1,2,4,6,8,9,12,15,149,156}; printf("please enter an integer to insert in the array:\n"); /**********FOUND**********/ scanf("%d",&number) printf("The original array:\n"); for(i=0;i

相关文档
最新文档