C语言程序改错总结 下载本文

}

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

int i;

for (i=0; i

scanf(\

/*********Found************/ i--; //改为:i++ }

}

14、考查点:函数调用,字符串结束标志的使用,程序D1018.c的功能是通过函数,将一个字符串中的元音字母复制到另一字符串,然后输出。 #include

#include

void vowel(char str1[], char str2[]);

int main(void) {

char str1[81], str2[81];

printf(\ gets(str1);

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

vowel(________________); //改为:str1, str2 printf(\ puts(str2);

if (strlen(str2) == 0) {

printf(\ }

return 0;

}

void vowel(char str1[], char str2[]) {

int i, j = 0;

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

for (i=0; ________________; i++) //改为:str1[i]

{

if (str1[i]=='A' || str1[i]=='E' || str1[i]=='I'

|| str1[i]=='O' || str1[i]=='U' || str1[i]=='a' || str1[i]=='e' || str1[i]=='i' || str1[i]=='o' || str1[i]=='u') {

str2[j] = str1[i]; j++; } }

str2[j] = '\\0'; }

15、考查点:函数声明、函数定义、函数调用,表达式统计,程序D1019.c的功能是计算输出10个学生的平均成绩。 #include

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

average(double x, y); //改为:double average和int y

int main(void) {

int i;

double score, total; double aver;

printf(\ scanf(\

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

printf(\ scanf(\ /*****Found*****/

total = score; //改为:total = total + score; }

aver = average(total, 10);

printf(\

return 0;

}

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

average(double x, y) ////改为:double average和int y

{

return x / y;

}

16、考查点:递归函数定义(递归返回),函数头,程序D1020.c的功能是使用递归实现Fibonacci数的计算,Fn=Fn-1+Fn-2(1、1、2...,第7项为13)。 #include

int f(int n);

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

int main(void); //改为:去掉‘;’ {

printf(\

return 0;

}

int f(int n) {

if (n <= 2) {

/*****Found*****/ return 2; //改为:1 }

return f(n - 1) + f(n - 2);

}

17、考查点:函数声明,变量作用域,函数调用,函数定义,指针作为函数的参数,程序D1022.c的功能是通过一个加法子函数,输入两个浮点数,求和。 #include

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

int add(float x, float y); //改为:float

int main(void)

float a, b;

scanf(\

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

printf(\x, y)); //改为:a, b

return 0;

}

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

float add(float x, float y); //改为:去掉’;’ {

return x + y;

}

18、程序D1054.C的功能是:从键盘读入两个整数,对它们进行按位异或操作,把操作结果按二进制位放在字符数组str中,最后输出该字符串。提示:第2个空建议使用条件表达式(?表达式)实现!

Please input num1 and num2 : 127 0 127 ^ 0 = 00000000000000000000000001111111 图1 程序运行效果示例 Please input num1 and num2 : 123 456 123 ^ 456 = 00000000000000000000000110110011 #include

int main(void) {

unsigned long int number, num1, num2, mask; int i;

char str[33];

printf(\ scanf(\

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

mask = __________________; //改为:0x80000000 number = num1 ^ num2; for(i=0; i<32; i++) {

/*********Found************/ str[i] = __________________; //改为:(mask & number) ? ‘1’:’0’ mask >>= 1; }

str[32] = '\\0';

printf(\

return 0; }