程序改错题-答案
1. 程序调试题1(X_2_1.C)
调试要求:下列程序不能得到正确的结果,它包含2个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。将结果(包括X_2_1.C文件和X_2_1.EXE文件)保存到目录C:\KS\中。
功能说明:计算半径为1~n的圆的面积,仅打印超过50 的圆面积。
如输入:6
则输出:
r=4,square=50.265488
r=5,square=78.539825
r=6,square=113.097351
带错误原程序:
#include
main()
{
int r,n;
float area;
scanf("%d",&n);
for (r=1,r<=n;r++)
{
area=3.141593*r*r;
if (area<50.0) continue;
printf("r=%d,square=%d\n",r,area);
}
getch();
}
答案
#include
main()
{
int r,n;
float area;
scanf("%d",&n);
for (r=1;r<=n;r++)/*modified*/
{
area=3.141593*r*r;
if (area<50.0) continue;
printf("r=%d,square=%f\n",r,area);/*modified*/
}
getch();
}
2. 程序调试题2(X_2_2.C)
调试要求:下列程序不能得到正确的结果,它包含3个错误,请按题中的功能要求,调试并
修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。将结果(包括X_2_2.C文件和X_2_2.EXE文件)保存到目录C:\KS\中。
功能说明:将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符串形式输出。
如输入:79 则输出:4F
又输入:1234 则输出:4D2
带错误原程序(见C:\KS\X_2_2.C):
#include
int DtoH(int n,char *str)
{
int i,d;
for (i=0;n!=0,i++)
{
d=n%16;
if (d>=10)
str[i]='0'+d;
else
str[i]='A'+d-10;
n/=16;
}
return i;
}
main()
{
int i,k,n;
char str[80];
scanf("%d",&n);
k=DtoH(n,str);
for (i=k-1;i>=0;i--)
printf("%c",str(i));
getch();
}
答案
#include
int DtoH(int n,char *str)
{
int i,d;
for (i=0;n!=0;i++)/*modified*/
{
d=n%16;
if (d<10)/*modified*/
str[i]='0'+d;
else
str[i]='A'+d-10;
n/=16;
}
return i;
}
main()
{
int i,k,n;
char str[80];
scanf("%d",&n);
k=DtoH(n,str);
for (i=k-1;i>=0;i--)
printf("%c",str[i]);/*modified*/
getch();
}
3. 程序调试题3(X_2_3.C)
调试要求:下列程序不能得到正确的结果,它包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。将结果(包括X_2_3.C文件和X_2_3.EXE文件)保存到目录C:\KS\中。
功能说明:函数fun分别统计字符串中大写字母和小写字母的个数,main()函数完成字符串的输入和统计数的输出。
如输入:AAaaBBb123CCccccd
则输出:upper=6,lower=8
带错误原程序(见C:\KS\X_2_3.C):
#include
void fun(char *s, int *a, int *b)
{
while (*s=='\0')
{
if(*s>='A' && *s<='Z')
(*a)++;
if (*s>='a' || *s<='z')
(*b)++;
s++;
}
}
main()
char s[100];
int upper=0, lower=0;
gets(s);
fun(s,&upper,&lower);
printf("\nupper=%d,lower=%d\n",upper,&lower);
getch();
}
答案
#include
void fun(char *s, int *a, int *b)
{
while (*s!='\0')/*modified*/
{
if(*s>='A' && *s<='Z')
(*a)++;
if (*s>='a'&&*s<='z')/*modified*/
(*b)++;
s++;
}
}
main()
{
char s[100];
int upper=0, lower=0;
gets(s);
fun(s,&upper,&lower);
printf("\nupper=%d,lower=%d\n",upper,lower);/*modified*/
getch();
}
4. 程序调试题1(D_3_1.C)
调试要求:下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括D_3_1.c文件和D_3_1.exe文件)保存到指定目录中。
功能说明:以下程序计算并输出等差数列的累加和,数列的首项为a0,公差为d,项数为n。
如输入:-3 5 4
则输出:sumx=18
例示说明:-3为首项,5为公差,4为项数,前4项之和为18
原程序(见\D_3_1.C):
#include
int sumx( int a0, d, n )
int i, k, s=0;
k = a0;
for ( i=0; i s += k; k += d; return s; } void main() { int a0, d, n; scanf( "%d%d%d", &a0, &d, &n ); printf( "sumx=%d\n", sumx(a0,d,n) ); } 答案 #include int sumx( int a0, int d, int n ) /*modified*/ { int i, k, s=0; k = a0; for ( i=0; i { s += k; k += d;} return s; } void main() { int a0, d, n; scanf( "%d%d%d", &a0, &d, &n ); printf( "sumx=%d\n", sumx(a0,d,n) ); } 5. 程序调试题2(D_3_2.C) 调试要求:下列程序有3处错误,请按题中的功能要求,在不改变程序结构(不增加、删除语句,不调整语句顺序)的情况下调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括D_3_2.c 文件和D_3_2.exe文件)保存到指定目录中。 功能说明:以下函数length返回字符串中字母A到字母Z所包含字符的长度。主程序输入一行字符串,调用length函数输出该字符串中大写字母A到Z的子串长度。如输入:Z2009-AShanghaiZ 则输出:Length=8 例示说明:从A到Z的子串为Shanghai,其长度为8 原程序(见\D_3_2.C): #include int length( char *p ) { char *q, *r; for ( q=p; *q!='\0' || *q!='A'; q++ ) ; for ( r=q; *r!='\0' && *r!='Z'; r++ ) ; return r-q; } void main() { char str[81]; int n; gets( str[0] ); n = length( str ); printf( "Length=%d\n", n ); } 答案 #include int length( char *p ) { char *q, *r; for ( q=p; *q!='\0' &&*q!='A'; q++ ) /*modified*/ ; for ( r=q; *r!='\0' && *r!='Z'; r++ ) ; return r-q-1; /*modified*/ } void main() { char str[81]; int n; gets( str ); /*modified*/ n = length( str ); printf( "Length=%d\n", n ); } 6. 程序调试题1(E_3_1.c) 调试要求:下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。将结果(包括E_3_1.c文件和E_3_1.exe文件)保存到指定目录中。 功能说明:统计一字符串中各个字母出现的次数,该字符串从键盘输入,统计时不区分大小写。对数字、空格及其他字符都不予统计。最后在屏幕上显示统计结果。 例如字符串:“abcdefgh23 ABCDEF abc”的统计结果与输出格式为: a b c d e f g h i j k l m n o p q r s t u v w x y z 出现的次数为:; 3 3 3 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #include #include void main( ) { int i, a[26]; char ch,str[80],*p=str; gets(&str); /* 获取字符串 */ for(i=0;i<26;i++) a[i]=0; /* 初始化字符个数*/ while(*p) { ch=(*p)++; /* 移动指针统计不同字符出现的次数 */ ch=ch>=’A’&&ch<=’Z’ ?ch+’a’-‘A’:ch; /* 大小写字符转换*/ if(’a’<=ch<=’z’) a[ch-‘a’]++; } for(i=0;i<26;i++) printf(“%2c”, ’a’+i); /*输出26个字母 */ printf(“出现的次数为:\n”); for(i=0;i<26;i++) printf(“%2d”,a[i]); /*输出各字母出现次数 */ printf(“\n”); } 答案 #include #include void main( ) { int i, a[26]; char ch,str[80],*p=str; gets(str);/*modified*/ for(i=0;i<26;i++) a[i]=0; /* 初始化字符个数*/ while(*p) { ch=*p++; /*modified*/ ch=ch>=?A?&&ch<=?Z? ?ch+?a?-…A?:ch; /* 大小写字符转换*/ if(?a?<=ch)&&(ch<=?z?) a[ch-…a?]++; /*modified*/ } for(i=0;i<26;i++) printf(“%2c”, ?a?+i); /*输出26个字母*/ printf(“出现的次数为:\n”); for(i=0;i<26;i++) printf(“%2d”,a[i]); /*输出各字母出现次数*/ printf(“\n”); } 7. 程序调试题2(E_3_2.C) 调试要求:下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。将结果(包括E_3_1.c 文件和E_3_1.exe文件)保存到指定目录中。 功能说明:递归算法求x n,即x n=x*x n-1,其中x为实数,n≥0。原程序(见\E_3_2.c) void main(){ float x, y; int n; scanf("%f%d",&x,&n); y=xn(x,n); printf("x^n=%f\n",y); } float xn(float x, int n){ fload z; if(n<0) { printf("n is a wrong number!\n"); exit(0); } if(n!=0) z=1; else z=xn(x,n); return z; } 答案 void main(){ float x, y,xn(float,int);/*modified*/ int n; scanf("%f%d",&x,&n); y=xn(x,n); printf("x^n=%f\n",y); } float xn(float x, int n){ fload z; if(n<0) { printf("n is a wrong number!\n"); exit(0); } if(n==0) z=1;/*modified*/ else z=x*xn(x,n-1); /*modified*/ return z; } 8. 程序调试题1 调试要求:下列程序包含2个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括B_2_1.C文件和B_2_1.EXE文件)保存到指定目录中。 功能说明:利用格里高利公式π/4=1-1/3+1/5-1/7+......求前n.项的π值。 如输入:5 则输出:pi=3.339683 又输入:10000 则输出:pi=3.141498 带错误原程序(见\B_2_1.C): #include main( ) { float pi=0,n,i; int sign=1; scanf("%f",n); for (i=1;i<=n;i++) { pi+=sign/(2*i-1); sign=-sign; } pi=4*pi printf("pi=%f\n",pi); getchar(); /*本句无错;暂停程序,按任意键继续*/ } 答案 #include void main() { int n, i; scanf( "%d", &n ); printf( "%d=1", n ); for ( i = 2; i <= n; ) { if ( n % i ==-0 ) /*modified*/ { printf( "*%d", i ); n=n/i; /*modified*/ } else i++; } } 9. 程序调试题2 调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括B_2_2.C文件和B_2_2.EXE文件)保存到指定目录中。 功能说明:从键盘输入一个非负十进制整数n(n<32768),转化成二进制存入数组a,输出二进制结果。 如输入:23 则输出:10111 又输入:1234 则输出:10011010010 带错误原程序(见\B_2_2.C): #include main() { int a[16],n; scanf("%d",&n); for (i=0;n<0;i++) { a(i)=n%2; n/=2; } while(i>0) printf("%d",a[--i]); getchar(); /*本句无错;暂停程序,按任意键继续*/ } 答案 #include void str_to_upper( char *s ) { while ( *s != '\0' ) /*modified*/ { if ( *s>='a' && *s<='z' ) /*modified*/ *s = *s + 'A' -'a'; /*modified*/ s++; } } void main() { char str[80]; gets( str ); str_to_upper( str ); puts( str ); } 10. 程序调试题3 调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括B_2_3.C文件和B_2_3.EXE文件)保存到指定目录中。 功能说明:程序从键盘输入一行字符串,所有字符依次向右循环移动m个位置并输出,移出的字符循环到最左边。 如输入: 123456789 则输出: 789123456 带错误原程序(见\B_2_3.C): #include #include void shift_s(char a[],int n,int m) /*a数组的n个字符右移m个位置*/ { int i,j,t; for(i=1;i { for (j=n;j>0;j--) a[j] = a[j+1]; /*移位并复制*/ a[0]=a[n]; } a[n]='\0'; } main() { char stra[80]; int i, n,m; gets(stra); n = strlen(stra); scanf("%d",&m); shift_s(stra,n,m); /*函数调用参数*/ puts(*stra); getchar(); /*本句无错;暂停程序,按任意键继续*/ } 答案 #include #include void shift_s(char a[],int n,int m) /*a数组的n个字符右移m个位置*/ { int i,j,t; for(i=0;i { for (j=n;j>0;j--) a[j] = a[j-1]; /*modified*/ a[0]=a[n]; } a[n]='\0'; } main() char stra[80]; int i, n,m; gets(stra); n = strlen(stra); scanf("%d",&m); shift_s(stra,n,m); /*函数调用参数*/ puts(stra); /*modified*/ getchar(); /*本句无错;暂停程序,按任意键继续*/ } 11. 程序调试题1 调试要求:下列程序包含2个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括C_2_1.C文件和C_2_1.EXE文件)保存到指定目录中。 功能说明:利用公式e = 1 + 1/1! + 1/2! + …+ 1/n! + …求前n项的e值。 如输入:4 则输出:2.708333 又输入:10 则输出:2.718282 带错误原程序(见\C_2_1.C): #include main() { int n,i; float e,a; scan("%d",&n); e=a=1.0; for (i=1;i<=n;i++) { a*=i; e+=1\a; } printf("%f\n",e); getchar(); /* 本句没错,程序暂停,按任意键继续*/ } 答案 #include main() { int n,i; float e,a; scanf("%d",&n); /*modified*/ e=a=1.0; for (i=1;i<=n;i++) { a*=i; e+=1/a; /*modified*/ } printf("%f\n",e); getchar(); /* 本句没错,程序暂停,按任意键继续*/ } 12. 程序调试题2 调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括C_2_2.C文件和C_2_2.EXE文件)保存到指定目录中。 功能说明:程序从键盘输入一行16进制字符串(字母必须大写),调用hexvalue函数转换为10进制,并输出转换结果。 如输入:1A 则输出:26 又输入:1AF8 则输出:6904 带错误原程序(见\C_2_2.C): #include long hexvalue(char *str) { long data=0; int n,i; for (i=0;str[i]!='\0',i++) { if (str[i]>='0' && str[i]<='9') n=str[i]-'0'; else if (str[i]>='A' || str[i]<='F') n=str[i]-'A'+10; else break; data=data*10+n; } return data; } main() { char s[80]; scanf("%s",s); printf("%ld",hexvalue(s)); getchar(); /* 本句没错,程序暂停,按任意键继续*/ } 答案 #include long hexvalue(char *str) { long data=0; int n,i; for (i=0;str[i]!='\0';i++) /*modified*/ { if (str[i]>='0' && str[i]<='9') n=str[i]-'0'; else if (str[i]>='A' && str[i]<='F') /*modified*/ n=str[i]-'A'+10; else break; data=data*16+n; /*modified*/ } return data; } main() { char s[80]; scanf("%s",s); printf("%ld",hexvalue(s)); getchar(); /* 本句没错,程序暂停,按任意键继续*/ } 13. 程序调试题3 调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括C_2_3.C文件和C_2_3.EXE文件)保存到指定目录中。 功能说明:程序从键盘输入一个整数n,将数组a的11个元素向左循环n次后输出。 如输入:3 则输出:3 4 5 6 7 8 9 10 0 1 2 带错误原程序(见\C_2_3.C): #include main() { int a[10]={0,1,2,3,4,5,6,7,8,9,10},n,i,j,p; scanf("%d",&n); for(i=1;i { p=a[0]; j=0; while(j<10) { a[j]=a[j+1]; j++; } a[10]=p; } for(i=0;i<=10;i++) printf("%d ",a(i)); getchar(); /* 本句没错,程序暂停,按任意键继续*/ } 答案 #include main() { int a[11]={0,1,2,3,4,5,6,7,8,9,10},i,j,n,p; /*modified*/ scanf("%d",&n); for(i=0;i { p=a[0]; j=0; while(j<10) { a[j]=a[j+1]; j++; } a[10]=p; } for(i=0;i<=10;i++) printf("%d ",a[i]); /*modified*/ getchar(); /* 本句没错,程序暂停,按任意键继续*/ } 14. 程序调试题1 调试要求:下列程序包含2个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括D_2_1.C文件和D_2_1.EXE文件)保存到指定目录中。 功能说明:打印从1~1000 能同时被3和 5 整除的前n个数。 如输入:3 则输出:15 30 45 带错误原程序(见C:\KS\D_2_1.C): #include main( ) { int k; scanf("%d",&n); for(k=1;k<=1000;k++) if(k%3==0&&k%5==0) { print("%d ",k); n--; if(n==0) break; } getchar(); /*本句没错,暂停程序,按任意键继续*/ } 答案 #include main( ) { int k,n; /*modified*/ scanf("%d",&n); for(k=1;k<=1000;k++) if(k%3==0&&k%5==0) { printf("%d ",k); /*modified*/ n--; if(n==0) break; } getchar(); /*本句没错,暂停程序,按任意键继续*/ } 15. 程序调试题2 调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括D_2_2.C文件和D_2_2.EXE文件)保存到指定目录中。 功能说明:从键盘输入一个十进制整数n,转化成八进制存入数组a,输出八进制结果。 如输入:70 则输出:106 带错误原程序(见C:\KS\D_2_2.C): #include main() { int a[10],n,i=0,j; scanf("%f",&n); do { a[i++]=n%8; n/=10; } while(n>0); for (j=i-1;j>=0;j--) printf("%d",a(j)); getchar(); /*本句没错,暂停程序,按任意键继续*/ } 答案 #include main() { int a[10],n,i=0,j; scanf("%d",&n); /*modified*/ do { a[i++]=n%8; n/=8; /*modified*/ } while(n>0); for (j=i-1;j>=0;j--) printf("%d",a[j]); /*modified*/ getchar(); /*本句没错,暂停程序,按任意键继续*/ } 16. 程序调试题3 调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括D_2_3.C文件和D_2_3.EXE文件)保存到指定目录中。 功能说明:函数myStrupr将字符串str中的小写字母转换为大写,并返回转换的小写字母数。程序输入一个长度小于80的字符串,调用myStrupr函数将小写字母转换为大写,如果输入串没有小写字母,则输出提示信息。 如输入:Hello, Everybody. 则输出:HELLO, EVERYBODY. 又输入:I AM BIG.?!@#$% 则输出:no lowercase 带错误原程序(见C:\KS\D_2_3.C): #include int myStrupr(char str[]) { int i,ct=0; for (i=0;Str[i]!='\0';i++) if (str[i]>='a' || str[i]<='z') { str[i]=str[i]-32; ct++; } return ct; } main() { char str[80]; gets(str); if (myStrupr(str)==0) puts(str); else printf("no lowercase\n"); getchar(); /*本句没错,暂停程序,按任意键继续*/ } 答案 #include int myStrupr(char str[]) { int i,ct=0; for (i=0;str[i]!='\0';i++) /*modified*/ if (str[i]>='a' && str[i]<='z') /*modified*/ { str[i]=str[i]-32; ct++; } return ct; } main() { char str[80]; gets(str); if (myStrupr(str)!=0) /*modified*/ puts(str); else printf("no lowercase\n"); getchar(); /*本句没错,暂停程序,按任意键继续*/ } 1 / 4 程序改错题(共15题) 1、在考生文件夹下,给定程序MODI.C 的功能是: 求一维数组a 中所有元素的平均值,结果保留两位小数。 例如,当一维数组a 中的元素为:10,4,2,7,3,12,5,34,5,9 程序的输出应为:The aver is: 9.10 。 #include 程序改错题 (注意:每小题只有1行有错误,答题时请指出错误位置并给出改正结果)1. 输出计算结果。 main() { int a=b=10; a+=b+5; b*=a+=10; printf("%d%d\n",a,b); } 2. 输出计算结果。 #include 输出程序运行结果。 #include 程序改错 一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。 1.求1?2?3?4? ?n main() { long int sum; int n,i=1; scanf("%d",n); printf(“\n”); while(i 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 1.给定程序MODI1.C中函数fun的功能是:根据以下公式求π值,并作为函数值返回。例如,给指定精度的变量eps输入0.0005时,应当输出Pi=30140578.。(1)“t=0;”改为“t=1;”。(2)改成“return(2*s);” 2.给定程序MODI1.C中函数fun的功能是:将长整型中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如:当s中的数为:7654321时,t中的数为:7531。(1)“void fun (long s, long *t)”(2)“sl = sl*10;” 3.给定程序MODI1.C中函数fun的功能是:用下面的公式求π的近似值,知道最后一项的近似值小于指定数(参数num)为止:例如程序0.0001,则程序输出 3.1414。(1) “while(t>=num)”改为 “while(fabs(t)>=num) ”。(2)“t=s%n;”改为 “t=s/n;”。 4.给定程序MODI1.C中函 数fun的功能是:把主函 数中输入的三个数,最大 的放在a中,最小的放在 c中,中间的放在b中。 例如a=55.0 b=34.0 c=12.0。(1)“float k;”。 (2)“if(*a<*c)”。 5. 给定程序MODI1.C中 函数fun的功能是:为一 个偶数寻找两个素数,这 两个素数之和等于该偶 数,并将这两个素数通过 形参指针传回主函数。(1) “y=1;”。(2)“d=a-i;”。 6. 给定程序MODI1.C中 函数fun的功能是:由形 参给定n个实数,输出平 均值以上(含平均值)的 实数个数。所的平均值为: 195.838745,在平均值以 上的实数个数应为:5。(1) “int j, c=0; double xa=0.0;”。(2)“if (x[j]>=xa)”。 7.例如:当s中的数为: 7654321时,t中的数为: 7531。(1)“*t=0;”(2) “if(d%2!=0)” 8.函数功能是:求出 以下分数序列的前n项 和。 2/1,3/2,5/3,8/5/13/ 8,21/13,…...。和值 通过函数值返回到 main函数。例如,n=5, 则应输出:8.391667。 (1)“fun(int n)”改为 “double fun(int n)”。 (2)“b+=c;”改为“b=c;”。 9.函数fun的功能是: 判断一个整数是否是 素数,若是返回1,否 则返回0。(1)“k++” 改为“k++;”(2) “if(m=k)”改为 “if(m==k)” 10.给定程序MODI1.C 中函数fun的功能是: 从整数1到55之间,选 出能被3整除、且有一 位上的数是5的那些 事,并且把这些数放 在b所指的数组中,这 些数作为函数值返回。 规定,函数中a1放个 位数,a2放十位数。 (1)“a2=k/10;”。(2) “return i;”。 11.给定程序MODI1.C 中函数fun的功能是: 计算小于形参k的最大 的10个能被13或17整 除的自然数之和。K的 值由主函数传入,若K 的值为500.则主函数 为4622。(1) “if((k%13==0)||(k%17 ==0))”。(2)“______” 填“}”。 12.已知一个数列从第 0项开始的前三项分别 是0、0、1以后的各项 都是它相邻的前三项 之和。给定程序 MODI1.C中函数fun的 功能是:计算并输出该 数列前n项的平方根之 和。n的值通过形参传 入。(1)“double fun(int n)”。(2)“return sum;”。 13.函数fun的功能是: 根据整形形参m的值: 计算如下公式的 值……例如:若m中的 值为5,则应输出: 0.536389。(1) “for(i=2; i<=m; i++)”(2) “y-=1.0/(i*i);”。 14.函数的功能是:将 字符串中的字符按逆 序输出,但不改变字符 串中的内容。例如字符 串abcd,则应输出dcba。 (1)“void fun(char *a)”。(2)“printf("%c", *a);”。 15.函数fun的功能是:求 三个数的最小公倍数。 X1=15 x2=11 x3=2(1) 改成“int fun(int x, int y, int z )”。(2)return j 16.函数fun的功能是:根 据整型形参m计算如下 公式的值。若主函数中输 入5,则应输出-0.283333。 (1)“t=t-1.0/i;”。 (2)填空“return t;” 17. 例如,若输入:edcba, 则应输出:abcde。(1) “for( i=strlen( t )-1; i; i- - )” (2)“if(t[j]>t[j+1])” 18.函数fun的功能是: 根据形参m的值 (2<=m<=9),在m行m 列的二维数组中存放 如下所示规律的数据, 由main函数输出。(1) “void fun(int a[][M], int m)”。(2) “a[j][k]=(k+1)*(j+1);”。 19.函数fun的功能是: 先从键盘上输入一个3 行3列矩阵的各个元素 第1题【程序改错】 欧阳学文 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的 字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为: “EDCBAABCDE”。 */ #include /**********FOUND**********/ t[i] = s[sli]; for (i=0; i 第2题【程序改错】 功能:求出以下分数序列的前n项之和。和值通过函数值返回main 函数。 2/1+3/2+5/3+8/5+13/8+21/13 …… 例如:若n = 5,则应输出:8.391667。 */ #include 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 C语言程序改错基本 题库 北京石油化工学院 12级复习题 程序改错 一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。 1.求1234n main() { long int sum; int n,i=1; scanf("%d",n); printf(“\n”); while(i 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 '以下程序段用于输出杨辉三角:结果样式如图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语言程序设计第五版习 题答案 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题(分)题号:400 难度:中第2章/*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能:编写函数fun求20以内所有5的倍数之积。 ------------------------------------------------------*/ 《 #define N 20 #include <> int fun(int m) { /**********FOUND**********/ int s=0,i; ; for(i=1;i s*=i; ) 第2题(分)题号:584 难度:中第1章/*-------------------------------------------------------【程序改错】 --------------------------------------------------------- 下列给定程序中函数fun()的功能是计算1/n!的值。 & 例如:给n输入5,则输出。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行, 也不得更改程序的结构。 , 试题程序: -------------------------------------------------------*/ #include <> #include <> /***********FOUND***********/ ~ int fun(int n) { double result =; if(n==0) return ; while(n>1 && n <170) /***********FOUND***********/ result *=n++ ; … result=1/result; return result; } void main() { 第12次上机程序改错第1题 【程序改错】 -------------------------------------------------------- 功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。 例如:输入圆的半径值:19.527 输出为:s = 598.950017。 ------------------------------------------------------*/ #include printf ( "Enter x: "); scanf ( "%f", &x ); printf (" s = %f\n ", fun ( x ) ); } 第2题【程序改错】 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。 ------------------------------------------------------*/ #include 【程序改错-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;i最新二级C语言考试题库及答案程序改错专项练习 精华版
程序改错题
程序改错基本题
2012计算机国二C语言等级考试题库(内部资料)程序改错
C语言程序改错题
计算机程序改错题,及答案
C语言程序改错基本题库电子版本
VB程序设计例题-程序改错程序填空程序设计
c语言程序设计第五版习题答案
计算机基础C++程序改错复习题
C语言程序改错题
程序改错2