C语言程序改错总结(共31页).doc
精选优质文档-倾情为你奉上难度11、程序D1.c的功能是从键盘读入一个数并在屏幕上显示。int main(void) int xy2; /*Found*/ scanf("%s", &xy2); /改为:scanf("%d", &xy2); /*Found*/ printf("xy2=%5dn", &xy2); /改为:printf("xy2=%5dn",xy2); return 0;2、程序D2.c的功能是调用函数,显示两个实数间最大的一个。#include<stdio.h>float fmax(float x, float y);int main(void) /*Found*/ float l, 1; /i l = 3.0; i = 5.6f; /*Found*/ printf("fmax(%5.2f, %5.2f)=%5.2fn", i, l, fMax(i, l); / fmaxreturn 0;/*Found*/int fmax(float x, float y) /改:float if (x < y) return y; else return x;3、程序D4.c的功能是计算半径为2+3的圆的面积。#include<stdio.h>#define PI 3.14/*Found*/#define S(bj) PI*bj*bj /改: PI*(bj)*(bj)int main(void) /*Found*/ int mianJi; /改为:double mianJi = S(2+3); printf("mian ji=%5.2fn", mianJi);return 0;4、相似题:D3.C,程序D5.c的功能是将字符串yy显示在屏幕上。#include<stdio.h>int main(void) /*Found*/ char yy100 = "ok?n", /改为:; /*Found*/ prntf("%s", yy); /改:printfreturn 0;5、考查点:数据类型选择,/运算符的使用功能是计算1/1 + 1/2 + + 1/N之和并显示。#include<stdio.h>#define N 10int main(void) /*Found*/ long jieguo = 0; /改:float int fm; for (fm = 1; fm <= N; fm+) /*Found*/ jieguo += 1 / fm; /改:(float) 1 / fm printf("%8.6fn", jieguo);return 0;6、考查点:输入分隔格式控制,循环体的定义, D12.c的功能是从键盘读入a和b的值(输入格式限定为仅a,b),在屏幕上显示b行a。#include<stdio.h>int main(void) int a, b; /*Found*/ scanf("%d%d", &a, &b); /中间加, while (b > 0) /*Found*/ _ /括号 printf("%dn", a); b-; /*Found*/ _ /括号 printf("bye bye!n");return 0;7考查点:输入格式控制、变量交换,程序D1000.c的功能是从键盘输入3个浮点数a,b,c(输入时abc之间以空格相隔),首先按照输入顺序显示在屏幕上,然后按从小到大顺序把它们输出到屏幕上。#include<stdio.h>int main(void)float a, b, c, t;printf("please input three numbers:n");/*Found*/scanf("%f%f", &a, &b, &c); /改:%f%f%fprintf("before sort:a=%g,b=%g,c=%gn", a, b, c);if (a > b)t = a;a = b;/*Found*/b = a; /改:tif (a > c)t = a;a = c;c = t;if (b > c)t = b;b = c;c = t;printf("after sort:a=%g,b=%g,c=%gn", a, b, c);return 0;8考查点:格式化输出、数据类型的正确使用,程序D1001.c的功能是求分数序列:2/1,3/2,5/3,8/5,13/8,21/13,.前20项之和,要求显示的结果中小数部分有4位。#include<stdio.h>#define T 20int main(void)int n;/*Found*/long i, j, temp, sum;i = 2;j = 1;sum = 0;for (n=1; n<=T; n+)sum = sum + i / j;temp = i;i = i + j;j = temp;/*Found*/printf("2/1+3/2+5/3+8/5+13/8+.=%5.2fn", sum); /改:.4return 0; 9考查点:用算术表达式实现数据交换,程序D1002.c的功能是实现两数交换。#include<stdio.h>int main(void)int x = 5, y = 9;x = x + y;y = x - y;/*Found*/x = y - x; /改:x y;printf("x=%d, y=%dn", x, y);return 0;10考查点:整型常量表示、输出项表示,程序D1003.c的功能是将16进制数100转换为10进制数输出。#include<stdio.h>int main(void)/*Found*/int i = 100; /0x100/*Found*/printf("%dn", &i); /改:去掉&return 0;11、程序D1004.c的功能是输入姓名,屏幕输出问候。#include<stdio.h>int main(void)char s10;printf("please input your name:");/*Found*/scanf("%c", s); /改%sprintf("hello ");/*Found*/puts(s10); /改:sreturn 0; 12考查点:输入数据分隔,输出项表示,程序D1005.c的功能是从键盘读入两个整数并在屏幕上显示。要求:输入时限定两数之间仅以逗号隔开。#include<stdio.h>int main(void)int a, b;/*Found*/scanf("%d%d", &a, &b); /改:中间加,/*Found*/printf("a=%d,b=%dn", &a, &b); /去掉&return 0; 13、考查点:输入格式控制、if语句,程序D1006.c的功能是判断输入的数据是否与已经给出的数据j相等。#include<stdio.h>int main(void)long int i = 79870, j = 23;/*Found*/scanf("%f", &i); /改:%ld/*Found*/if (j = i);printf("Equal!");elseprintf("Not equal!");return 0;14、考查点:字符输入函数使用,分支条件表示,程序D1007.c的功能是使用getchar方式从键盘读入一个字符,判断该字符是否大写字符。#include<stdio.h>int main(void)char ch;/*Found*/getchar(ch); / ch = getchar();/*Found*/if ('A' <= ch, ch <= 'Z') /&&printf("yes");elseprintf("no");return 0; 15、考查点:switch语句结束、case后常量表示,程序D1008.c的功能是判断用户是不是输入的整数0。#include<stdio.h>int main(void)int n;scanf("%d", &n);/*Found*/switch (n); /去掉;/*Found*/case0: /中间加空格printf("Zeron");break;default:printf("Non-Zero");break;return 0;16、考查点:switch语句、case后常量表示,程序D1009.c的功能是输入一个整数,如果为1时输出100,为2时输出200,其它输出0。#include<stdio.h>int main(void)int x, y;scanf("%d", &x);switch (x)/*Found*/case x = 1: /改:1y = 100;break;/*Found*/case x = 2: /改:2y = 200;break;default:/*Found*/y = 500; /改:0break;printf("%dn", y);return 0;17、考查点:switch语句case常量表示,循环条件表示,程序D1010.c的功能是输入若干字符数据(回车表示输入结束),分别统计其中A、B、C的个数。#include<stdio.h>int main(void)char c;int k1 = 0, k2 = 0, k3 = 0;/*Found*/while (c = getchar() != 'n') /加括号()switch (c)/*Found*/case A: /加k1+;break;case 'B':k2+;break;case 'C':k3+;break;default :;printf("A=%d,B=%d,C=%dn", k1, k2, k3);return 0;18、考查点:一维数组定义、数组元素引用、输入和输出,程序D1016.c的功能是从键盘输入5个整数,保存到一整型数组变量中(此数组只能保存5个数),并在屏幕上按逆序输出。#include<stdio.h>int main(void)/*Found*/int n=5, i, an; /改为5printf("ninput 5 numbers:");/*Found*/for (i=1; i<n; i+)scanf("%d", &ai);for (i=n-1; i>=0; i-)printf("%dt", ai);return 0;19、考查点:数组的输入和数组元素的引用,程序D1017.c的功能是输入10个浮点数,并输出这组数中的最大值和最小值。#include<stdio.h>int main(void)float a10, max, min;int i;printf("Please input 10 floats");for (i=0; i<10; i+)/*Found*/scanf("%f", _); / &aimax = min = a0;for (i=1; i<10; i+)/*Found*/if (_) / max < aimax = ai;if (min > ai)min = ai;printf("Max number is:%.2fnMin number is:%.2fn", max, min);return 0;20、考查点:函数声明,静态变量使用,程序D1021.c的功能是依次输出31到35。#include<stdio.h>/*Found*/int f(n); /用定义形式:int nint main(void)int i;for (i=1; i<=5; i+)printf("%dn", f(3);return 0;int f(int n)/*Found*/int p = 1; /改: static intp = p * n;return p;21、考查点:静态变量使用,函数调用,程序D1023.c的功能是函数outnum输出自己是第几次被调用。#include<stdio.h>void outnum(void);int main(void)int i;for (i=0; i<5; i+)/*Found*/outnum(i); /改: outnum()return 0;void outnum(void)/*Found*/int i = 0; /改:static int i = 0;i+;printf("%dn", i);22、考查点:函数调用、函数定义,程序D1024.c的功能是调用子函数Average()求两数的平均值,并输出到屏幕上。#include<stdio.h>/*Found*/int Average(x, y); /用定义形式:int x, int yint main(void)int a = 12;int b = 24;int ave;/*Found*/ave = Average(int a, int b); /用使用形式:a, bprintf("Average of %d and %d is %d.n", a, b, ave);return 0;/*Found*/int Average(x, y) /int x, int yint result;result = (x + y) / 2;return result;23、考查点:函数一般调用和静态变量,程序D1025.c的功能是输入一整数n(n>0),main()函数中调用子函数Func()n次,并在屏幕上打印出每次调用该子函数的次数。#include<stdio.h>void Func(void);int main(void)int i, n;printf("ninput a data:");scanf("%d", &n);for (i=0; i<n; i+)/*Found*/_ / Func()return 0;void Func(void)/*Found*/_ / static int times = 0;times+;printf("Func() was called %d time(s).n", times);难度21、考查点:用指针访问字符数组元素,程序D3.c的功能是将字符串yy在屏幕上输出。#include<stdio.h>int main(void) /*Found*/ char yy200 = "ok?n" /改为:*yy /*Found*/ fol (; *yy; yy+) /改为:for putchar(*yy); return 0;2、考查点:字符数组定义,字符串输出控制,标准字符串函数的使用,程序D6.c的功能是从键盘读入一行字符(包括空格、TAB等字符)并在屏幕上显示。#include<stdio.h>int main(void) /*Found*/ char yy<128> /改为:yy128 /*Found*/ getchar(yy); /改为:gets /*Found*/ printf("%y", yy); /改为:%sreturn 0;3、考查点:if-else形式条件的分析,数据类型选择,程序D7.c的功能是判断x和y是否相等,相等则显示x=y,不等则显示x<>y。#include<stdio.h>int main(void) /*Found*/ char x, y; /改为:int x = 39270; y = 41001; /*Found*/ if (x != y) /改为:= printf("x=y"); /*Found*/ else; /去掉; printf("x<>yn"); return 0;4、考查点:文件路径名表示,文件打开方式选择,文件打开成功判断,程序D8.c的功能是打开文件d:te.c用于读并判断打开是否成功。#include<stdio.h>int main(void) FILE *fp; /*Found*/ char fileName = "d:te.c" /改为: /*Found*/ fp = fopen(fileName, "w"); /改为:r /*Found*/ if (fp is NULL) /改为:= puts("File Open Error!"); return 1; putchar(fgetc(fp); fclose(fp);return 0;5、考查点:指针,内存分配、内存释放函数的使用,程序D9.c的功能是申请100个字节的内存空间,显示其首地址,然后释放申请到的内存空间。#include<stdio.h>#include<stdlib.h>int main(void) /*Found*/ char pch2; /改为:*pch /*Found*/ if (pch = (char *)malloc(100) = NULL) /将红色部分括起来 printf("malloc memory fail!n"); return 1; printf("%pn", pch); /*Found*/ close(pch); /改为:freereturn 0;6、考查点:指针作函数参数,函数调用,程序D14.c的功能是调用函数swap,将a和b的值交换,最后在屏幕上显示交换后的a,b之值。#include<stdio.h>/*Found*/void swap(int x, int y); /改为:int *x, int *yint main(void) int a = 3, b = 4; /*Found*/ swap(a, b); /改为:&a, &b printf("a=%d b=%dn", a, b);return 0;/*Found*/void swap(int x, int y) /改为:int *x, int *y int tmpX; /*Found*/ _ / tmpX =*x; *x = *y; /*Found*/ *y = x; /改为:*y = tmpX;7、考查点:结构体变量定义,结构体成员的输入、输出,程序D16.c的功能是worker2的信息使用结构体存储,从键盘读入其各项信息并显示。#include<stdio.h>int main(void) struct WKER long ID; long int num; char name20; char sex; /*Found*/ ; /改为:worker2; worker2.ID = 1L; /*Found*/ scanf("%s %s %s", &worker2.num, worker2.name, &worker2.sex); /改:%ld%s%c /*Found*/ printf("worker's info: num=%s name=%s sex=%sn", worker2.num, worker2.name, worker2.sex);/改为:%ld %creturn 0;8、考查点:复合语句、变量作用域,程序D18.c的功能是从键盘上读入10个大于0的数,调用函数dispMaxNum显示其中最大的一个。 #include <stdio.h>int maxiNum = 0;void dispMaxNum();int main(void) int i, oneNumber, maxNumber = 0; printf("Please input 10 int number:"); int maxNumber = 0; /*Found*/ _ / for (i = 0; i < 10; i+) scanf("%d", &oneNumber); if (oneNumber > maxNumber) maxNumber = oneNumber; /*Found*/ _ / maxiNum = maxNumber /*Found*/ _ / dispMaxNum();return 0;void dispMaxNum() /*Found*/ printf("maxNumber=%dn", maxiNum);9、考查点:循环条件表示,循环体中改变循环条件,程序D1011.c的功能是从输入数据中统计正整数和负整数的个数。用输入0来结束输入,变量i存放正整数个数,变量j存放负整数的个数。#include<stdio.h>int main(void)int i = 0, j = 0, n;printf("ninput numbers:");scanf("%d", &n);/*Found*/while (_) / n 或者n != 0if (n > 0)i+;if (n < 0)j+;/*Found*/_ / scanf("%d", &n);printf("i=%d,j=%d", i, j);return 0;10、考查点:枚举算法,for语句条件,条件判断,程序D1012.c的功能是显示用1、2、3、4个数字组成的互不相同且无重复数字的三位数。#include<stdio.h>int main(void)int i, j, k;/*Found*/for (i=1; ; i+) /改为:i < 5for (j=1; j<5; j+)for (k=1; k<5; k+)/*Found*/if (i!=k && i!=j && _) /j != kprintf("%d%d%d ", i, j, k);return 0;11、考查点:数组逆序存放,循环次数控制,换位操作的实现,程序D1013.c的功能是将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1,要求改为1,4,5,6,8。#include<stdio.h>#define N 10int main(void)int aN, i, temp;printf("please input %d integer numbers:n", N);for (i=0; i<N; i+)scanf("%d", &ai);printf("the array before reverse:n");for (i=0; i<N; i+)printf("%d ", ai);printf("n");/*Found*/for (i=0; i<N; i+) /改为:i<N-1-i;temp = ai;/*Foun