文档库 最新最全的文档下载
当前位置:文档库 › C语言程序改错

C语言程序改错

难度1

1、程序D1.c的功能是从键盘读入一个数并在屏幕上显示。

int main(void)

{

int xy2;

/*********Found************/

scanf("%s", &xy2); //改为:scanf("%d", &xy2);

/*********Found************/

printf("xy2=%5d\n", &xy2); //改为:printf("xy2=%5d\n",xy2);

return 0;

}

2、程序D2.c的功能是调用函数,显示两个实数间最大的一个。

#include

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.2f\n", i, l, fMax(i, l)); // fmax

return 0;

}

/*********Found************/

int fmax(float x, float y) //改:float

{

if (x < y) return y;

else return x;

}

3、程序D4.c的功能是计算半径为2+3的圆的面积。

#include

#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.2f\n", mianJi);

return 0;

}

4、相似题:D3.C,程序D5.c的功能是将字符串yy显示在屏幕上。

#include

int main(void)

{

/*********Found************/

char yy[100] = "ok??\n", //改为:;

/*********Found************/

prntf("%s", yy); //改:printf

return 0;

}

5、考查点:数据类型选择,/运算符的使用功能是计算1/1 + 1/2 + … + 1/N之和并显示。

#include

#define N 10

int main(void)

{

/*********Found************/

long jieguo = 0; //改:float

int fm;

for (fm = 1; fm <= N; fm++)

{

/*********Found************/

jieguo += 1 / fm; //改:(float) 1 / fm

}

printf("%8.6f\n", jieguo);

return 0;

}

6、考查点:输入分隔格式控制,循环体的定义, D12.c的功能是从键盘读入a和b 的值(输入格式限定为仅a,b),在屏幕上显示b行a。

#include

int main(void)

{

int a, b;

/*********Found************/

scanf("%d%d", &a, &b); //中间加’,’

while (b > 0)

/*********Found************/

___________ //括号’{’

printf("%d\n", a);

b--;

/*********Found************/

___________ //括号’}’

printf("bye bye!\n");

return 0;

}

7考查点:输入格式控制、变量交换,程序D1000.c的功能是从键盘输入3个浮点数a,b,c(输入时abc之间以空格相隔),首先按照输入顺序显示在屏幕上,然后按从小到大顺序把它们输出到屏幕上。

#include

int main(void)

{

float a, b, c, t;

printf("please input three numbers:\n");

/*********Found************/

scanf("%f%f", &a, &b, &c); //改:%f%f%f

printf("before sort:a=%g,b=%g,c=%g\n", a, b, c);

if (a > b)

{

t = a;

a = b;

/*********Found************/

b = a; //改:t

}

if (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=%g\n", a, b, c);

return 0;

}

8考查点:格式化输出、数据类型的正确使用,程序D1001.c的功能是求分数序列:2/1,3/2,5/3,8/5,13/8,21/13,....前20项之和,要求显示的结果中小数部分有4位。

#include

#define T 20

int 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.2f\n", sum); //改:.4

return 0;

}

9考查点:用算术表达式实现数据交换,程序D1002.c的功能是实现两数交换。

#include

int main(void)

{

int x = 5, y = 9;

x = x + y;

y = x - y;

/*****Found*****/

x = y - x; //改:x – y;

printf("x=%d, y=%d\n", x, y);

return 0;

}

10考查点:整型常量表示、输出项表示,程序D1003.c的功能是将16进制数100转换为10进制数输出。

#include

int main(void)

{

/*****Found*****/

int i = 100; //0x100

/*****Found*****/

printf("%d\n", &i); //改:去掉&

return 0;

}

11、程序D1004.c的功能是输入姓名,屏幕输出问候。

#include

int main(void)

{

char s[10];

printf("please input your name:");

/*********Found************/

scanf("%c", s); //改%s

printf("hello ");

/*********Found************/

puts(s[10]); //改:s

return 0;

}

12考查点:输入数据分隔,输出项表示,程序D1005.c的功能是从键盘读入两个整数并在屏幕上显示。要求:输入时限定两数之间仅以逗号隔开。

#include

int main(void)

{

int a, b;

/*********Found*********/

scanf("%d%d", &a, &b); //改:中间加’,’

/*********Found*********/

printf("a=%d,b=%d\n", &a, &b); //去掉&

return 0;

}

13、考查点:输入格式控制、if语句,程序D1006.c的功能是判断输入的数据是否与已经给出的数据j相等。

#include

int main(void)

{

long int i = 79870, j = 23;

/*****Found*****/

scanf("%f", &i); //改:%ld

/*****Found*****/

if (j == i);

{

printf("Equal!");

}

else

{

printf("Not equal!");

}

return 0;

}

14、考查点:字符输入函数使用,分支条件表示,程序D1007.c的功能是使用getchar 方式从键盘读入一个字符,判断该字符是否大写字符。

#include

int main(void)

{

char ch;

/****Found****/

getchar(ch); // ch = getchar();

/*****Found*****/

if ('A' <= ch, ch <= 'Z') //&&

{

printf("yes");

}

else

{

printf("no");

}

return 0;

}

15、考查点:switch语句结束、case后常量表示,程序D1008.c的功能是判断用户是不是输入的整数0。

#include

int main(void)

{

int n;

scanf("%d", &n);

/****Found****/

switch (n); //去掉’;’

{

/****Found****/

case0: //中间加空格

printf("Zero\n");

break;

default:

printf("Non-Zero");

break;

}

return 0;

}

16、考查点:switch语句、case后常量表示,程序D1009.c的功能是输入一个整数,如果为1时输出100,为2时输出200,其它输出0。

#include

int main(void)

{

int x, y;

scanf("%d", &x);

switch (x)

{

/*********Found************/

case x == 1: //改:1

y = 100;

break;

/*********Found************/

case x == 2: //改:2

y = 200;

break;

default:

/*********Found************/

y = 500; //改:0

break;

}

printf("%d\n", y);

return 0;

}

17、考查点:switch语句case常量表示,循环条件表示,程序D1010.c的功能是输入若干字符数据(回车表示输入结束),分别统计其中‘A’、‘B’、‘C’的个数。

#include

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=%d\n", k1, k2, k3);

return 0;

}

18、考查点:一维数组定义、数组元素引用、输入和输出,程序D1016.c的功能是从键盘输入5个整数,保存到一整型数组变量中(此数组只能保存5个数),并在屏幕上按逆序输出。

#include

int main(void)

{

/*********Found*********/

int n=5, i, a[n]; //改为5

printf("\ninput 5 numbers:");

/*********Found*********/

for (i=1; i

{

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

}

for (i=n-1; i>=0; i--)

{

printf("%d\t", a[i]);

}

return 0;

}

19、考查点:数组的输入和数组元素的引用,程序D1017.c的功能是输入10个浮点数,并输出这组数中的最大值和最小值。

#include

int main(void)

{

float a[10], max, min;

int i;

printf("Please input 10 floats");

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

{

/*********Found************/

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

}

max = min = a[0];

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

{

/*********Found************/

if (_____) // max < a[i]

{

max = a[i];

}

if (min > a[i])

{

min = a[i];

}

}

printf("Max number is:%.2f\nMin number is:%.2f\n", max, min);

return 0;

}

20、考查点:函数声明,静态变量使用,程序D1021.c的功能是依次输出3^1到3^5。

#include

/*****Found*****/

int f(n); //用定义形式:int n

int main(void)

{

int i;

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

{

printf("%d\n", f(3));

}

return 0;

}

int f(int n)

{

/*****Found*****/

int p = 1; //改: static int

p = p * n;

return p;

}

21、考查点:静态变量使用,函数调用,程序D1023.c的功能是函数outnum输出自己是第几次被调用。

#include

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("%d\n", i);

}

22、考查点:函数调用、函数定义,程序D1024.c的功能是调用子函数Average()求两数的平均值,并输出到屏幕上。

#include

/*********Found*********/

int Average(x, y); //用定义形式:int x, int y

int main(void)

{

int a = 12;

int b = 24;

int ave;

/*********Found*********/

ave = Average(int a, int b); //用使用形式:a, b

printf("Average of %d and %d is %d.\n", a, b, ave);

return 0;

}

/*********Found*********/

int Average(x, y) //int x, int y

{

int result;

result = (x + y) / 2;

return result;

}

23、考查点:函数一般调用和静态变量,程序D1025.c的功能是输入一整数n(n>0),main()函数中调用子函数Func()n次,并在屏幕上打印出每次调用该子函数的次数。

#include

void Func(void);

int main(void)

{

int i, n;

printf("\ninput a data:");

scanf("%d", &n);

for (i=0; i

{

/*********Found*********/

________________________ // Func()

}

return 0;

}

void Func(void)

{

/*********Found*********/

________________________ // static int times = 0;

times++;

printf("Func() was called %d time(s).\n", times);

}

难度2

1、考查点:用指针访问字符数组元素,程序D3.c的功能是将字符串yy在屏幕上输出。

#include

int main(void)

{

/*********Found************/

char yy[200] = "ok??\n"; //改为:*yy

/*********Found************/

fol (; *yy; yy++) //改为:for

{

putchar(*yy);

}

return 0;

}

2、考查点:字符数组定义,字符串输出控制,标准字符串函数的使用,程序D6.c的功能是从键盘读入一行字符(包括空格、TAB等字符)并在屏幕上显示。

#include

int main(void)

{

/*********Found************/

char yy<128>; //改为:yy[128]

/*********Found************/

getchar(yy); //改为:gets

/*********Found************/

printf("%y", yy); //改为:%s

return 0;

}

3、考查点:if-else形式条件的分析,数据类型选择,程序D7.c的功能是判断x和y 是否相等,相等则显示x=y,不等则显示x<>y。

#include

int main(void)

{

/*********Found************/

char x, y; //改为:int

x = 39270;

y = 41001;

/*********Found************/

if (x != y) //改为:==

{

printf("x=y");

}

/*********Found************/

else;; //去掉;;

{

printf("x<>y\n");

}

return 0;

}

4、考查点:文件路径名表示,文件打开方式选择,文件打开成功判断,程序D8.c的功能是打开文件d:\te.c用于读并判断打开是否成功。

#include

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

#include

int main(void)

{

/*********Found************/

char pch[2]; //改为:*pch

/*********Found************/

if (pch = (char *)malloc(100) == NULL) //将红色部分括起来

{

printf("malloc memory fail!\n");

return 1;

}

printf("%p\n", pch);

/*********Found************/

close(pch); //改为:free

return 0;

}

6、考查点:指针作函数参数,函数调用,程序D14.c的功能是调用函数swap,将a 和b的值交换,最后在屏幕上显示交换后的a,b之值。

#include

/*********Found************/

void swap(int x, int y); //改为:int *x, int *y

int main(void)

{

int a = 3, b = 4;

/*********Found************/

swap(a, b); //改为:&a, &b

printf("a=%d b=%d\n", 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

int main(void)

{

struct WKER

{

long ID;

long int num;

char name[20];

char sex;

/*********Found************/

} ; //改为:worker2;

worker2.ID = 1L;

/*********Found************/

scanf("%s %s %s", &worker2.num, https://www.wendangku.net/doc/708716812.html,, &worker2.sex);

//改:%ld%s%c

/*********Found************/

printf("worker's info: num=%s name=%s sex=%s\n",

worker2.num, https://www.wendangku.net/doc/708716812.html,, worker2.sex);

//改为:%ld %c

return 0;

}

8、考查点:复合语句、变量作用域,程序D18.c的功能是从键盘上读入10个大于0的数,调用函数dispMaxNum显示其中最大的一个。

#include

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=%d\n", maxiNum);

}

9、考查点:循环条件表示,循环体中改变循环条件,程序D1011.c的功能是从输入数据中统计正整数和负整数的个数。用输入0来结束输入,变量i存放正整数个数,变量j存放负整数的个数。

#include

int main(void)

{

int i = 0, j = 0, n;

printf("\ninput numbers:");

scanf("%d", &n);

/*********Found*********/

while (______________) // n或者n != 0

{

if (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

int main(void)

{

int i, j, k;

/*********Found************/

for (i=1; ; i++) //改为:i < 5

{

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

{

for (k=1; k<5; k++)

{

/*********Found************/

if (i!=k && i!=j && ______) //j != k

{

printf("%d%d%d ", i, j, k);

}

}

}

}

return 0;

}

11、考查点:数组逆序存放,循环次数控制,换位操作的实现,程序D1013.c的功能

是将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1,要求改为1,4,5,6,8。

#include

#define N 10

int main(void)

{

int a[N], i, temp;

printf("please input %d integer numbers:\n", N);

for (i=0; i

{

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

}

printf("the array before reverse:\n");

for (i=0; i

{

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

}

printf("\n");

/*********Found************/

for (i=0; i

{

temp = a[i];

/*********Found************/

a[i] = a[N-i]; //改为:a[N-1-i]

/*********Found************/

a[N-i] = temp; //改为:a[N-1-i]

}

printf("the array after reverse:\n");

for (i=0; i

{

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

}

printf("\n");

return 0;

}

12、考查点:排序算法的实现,排序条件,数据交换、字符数组的处理,程序D1014.c 的功能是将字符数组a中元素从大到小排列(值相同的元素不交换位置)。

#include

#include

int main(void)

{

int i, j, k;

char a[] = "language", t;

k = strlen(a);

for (i=0; i

{

for (j=i+1; j

{

/*****Found*****/

if (a[i] > a[j]) //改为:a[i] < a[j]

{

t = a[j];

/*****Found*****/

a[i] = a[j]; //改为:a[j] = a[i]

a[i] = t;

}

}

}

printf("%s\n", a);

return 0;

}

13、考查点:数组元素下标,数组作函数参数,程序D1015.c的功能是定义一个整型数组,采用子函数实现数据输入。

#include

void input(int a[], int n);

int main(void)

{

int a[10], i;

/*********Found************/

input(a[10], 10); //改为:a

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

{

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

}

return 0;

相关文档