C语言二级改错题总结

合集下载

计算机等级考试(NCRE)二级c语言改错题

计算机等级考试(NCRE)二级c语言改错题

计算机等级考试(NCRE)二级c语言搞错题1、给定程序MODI1.C中,函数fun的功能是求矩阵(二维数组)a[N][N]中每行的最小值,结果存放到数组b中。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

#include <stdio.h>#define N 4void fun(int a[][N], int b[]){ int i, j;for (i=0; i<N; i++){/**********found**********/b[i] = a[i][0];/**********found**********/for (j=1; j<=N-1; j++)/**********found**********/if ( b[i] > a[i][j] )b[i] = a[i][j];}}main(){ int a[N][N]={{1,4,3,2},{8,6,5,7},{11,10,12,9},{13,16,14,15}},b[N]; int i;fun(a,b);for (i=0; i<N; i++) printf("%d,", b[i]);printf("\n");}2、给定程序MODI1.C中规定输入的字符串全部为字母,fun函数的功能是:统计a所指字符串中每个字母在字符串中出现的次数(统计时不区分大小写),并将出现次数最高的字母输出(如果有多个相同,输出一个即可)。

例如对于字符串:dadbcdbabdb,对应的输出应为:b或d。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

#include<stdio.h>#include <stdio.h>#include <string.h>void fun(char a[]){ int b[26], i, n,max;for (i=0; i<26; i++)/**********found**********/b[i] = 0;n= strlen(a);for (i=0; i<n; i++)if (a[i] >='a' && a[i]<='z')/**********found**********/b[a[i] - 'a']++;else if (a[i] >='A' && a[i]<='Z')b[a[i] -'A']++;max = 0;for (i=1; i<26; i++)/**********found**********/if (b[max] < b[i])max=i;printf("出现次数最多的字符是 : %c\n", max + 'a');}main( ){ char a[200];printf("请输入一个待统计的字符串 : "); scanf("%s", a);fun(a);}3、给定程序MODI1.C中,函数fun()的功能是统计s所指一维数组中0的个数(存在变量zero中)和1的个数(存在变量one中),并输出结果。

C语言计算机二级改错题

C语言计算机二级改错题
改错:
(1)错误: { if (*p<=*q)
正确:{ if (*p>=*q)
(2)错误:k++
正确:k++;
2.下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公式的值。
y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m×m)
例如:m中的值为5,则应输出0.838611。
(1)错误:for(k=m;k>0;k--)
正确:for(k=m-1;k>=0;k--)
(2)错误:pt=j;
正确:pt-=j;
25.下列给定程序中,函数fun()的功能是:用冒泡法对6个字符串按由大到小的顺序进行排序。
(1)错误:if(strcmp((pstr+i),(pstr+j))<0)
(1)错误:ifhigh%j==0
正确:if(high%j==0)
(2)错误:if(yes==0)
正确:if(yes
10.下列给定程序中,函数fun()的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码降序排序后输出。
例如:输入dafhc,则应输出hfdca。
(1)错误:int j=1;
正确:double j=1.0;
(2)错误:y+=1/(i * i);
正确:y+=j/(i * i);
3.下列给定程序中,函数fun的功能是按以下递归公式求函数值。
例如:当给n输入5时,函数值为240;当给n输入3时,函数值为60。
请改正程序中的错误,使它能得到正确结果。

国家计算机C语言二级考试改错题库

国家计算机C语言二级考试改错题库

1 下列给定程序中,函数fun 的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。

例如,当n 为5时,函数值应为10.407143。

f(x)函数定义如下:f(x)=(1)(2)0002(1)(2)0x x x x x x x x ⎧+/->⎪==⎨⎪-/-<⎩或请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。

试题程序:#include <stdlib.h> #include <conio.h> #include <stdio.h> #include <math.h>/*************found**************/ f(double x)2 下列给定程序中,fun 函数的功能是:根据形参m,计算下列公式的值:t=1+1/2+1/3+1/4+…+1/m例如,若输入5,则应输出2.283333。

3 下列给定程序中,函数fun 的功能是:分别统计字符串中大写字母和小写字母的个数。

例如,给字符串s 输入:AaaaBBb123CCccccd,则应输出结果:upper=5,lower=9。

4 下列给定程序中函数fun 的功能是:计算正整数num 各位上的数字之积。

例如,若输入252,则输出应该是20。

若输入202,则输出应该是0。

5 下列给定程序中函数fun 的功能是:计算n!。

例如,给n 输入5,则输出120.000000。

6 下列给定的程序中,函数fun 的功能是:计算并输出k 以内最大的10个能被13或17整除的自然数之和。

k 的值由主函数传入,若k 的值为500,则函数的值为4622。

7 下列给定程序中,函数fun()的功能是:根据整型形参m 的值,计算如下公式的值:t=1-1/(22)1/(33)...1/()m m ⨯-⨯--⨯8 在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。

计算机二级C语言改错题

计算机二级C语言改错题

1.Cmody.011.C,功能是:从字符串数组str1中取出ASCII码值为偶数且下标为偶数的字符依次存放到字符串t中。

如:若str1所指的字符串为:4Az18c?Ge9a0z! 则t所指的字符串为:4z8z注意:数组下标从0开始#include <math.h>#include <stdio.h>#include <string.h>#include <conio.h>void main(){char str1[100],t[200];int i,j;/**/ i=0;/**/clrscr();strcpy(str1,"4Az18c?Ge9a0z!");for(i=0;i<strlen(str1);i++){/**/ if((str1[i]%2==0)&&(i%2!=0)) /**/{t[j]=str1[i];j++;}}t[j]='\0';printf("\nOriginal string :%s\n",str1);printf("\nResult string :%s\n",t);getch();}答案:#include <math.h>#include <stdio.h>#include <string.h>#include <conio.h>void main(){char str1[100],t[200];int i,j;/**/ i=0;j=0;/**/clrscr();strcpy(str1,"4Az18c?Ge9a0z!");for(i=0;i<strlen(str1);i++){/**/ if((str1[i]%2==0)&&(i%2==0)) /**/{t[j]=str1[i];j++;}}t[j]='\0';}2.Cmody012.C,fun()功能:根据n,计算大于10的最小n个能被3整除的正整数的倒数之和。

二级C语言题库-改错题

二级C语言题库-改错题

1.下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。

和值通过函数值返回。

例如,若n=5,则应输出8.391667。

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

注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!#include <stdio.h>/************found************/void fun ( int n ){ int a, b, c, k; double s;s = 0.0; a = 2; b = 1;for ( k = 1; k <= n; k++ ) {/************found************/s = s + (Double)a / b;c = a; a = a + b; b = c;}return s;}main( ){ int n = 5;printf( "\nThe value of function is: %lf\n", fun ( n ) );}【参考答案】(1)double fun(int n)(2)s=s+(double)a/b;2.下列给定程序中函数fun的功能是:统计substr所指的子符串在str所指的字符串中出现的次数。

例如,若字符串为aaas 1kaaas,子字符串为as,则应输出2。

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

注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!#include <stdio.h>int fun (char *str,char *substr){ int i,j,k,num=0;/************found************/for(i = 0, str[i], i++)for(j=i,k=0;substr[k]==str[j];k++,j++)/************found************/If(substr[k+1]=='\0'){ num++;break;}return num;}main(){char str[80],substr[80];printf("Input a string:") ;gets(str);printf("Input a substring:") ;gets(substr);printf("%d\n",fun(str,substr));}(1)for(i=0;str[i];i++)(2)if(substr[k+1]== ′\0′)3.下列给定程序中函数fun的功能是:实现两个变量值的交换,规定不允许增加语句和表达式。

二级C语言上机改错题 常见错误类型

二级C语言上机改错题 常见错误类型

二级C语言上机改错题常见错误类型※(1) 漏写“ ; ”(所有完整语句后面都应该有“ ; ”)※(2) 数据类型定义错误(包括int, long, char, float, double, 字符串, 数组和指针等类型互相不能用错)(3) 定义函数时后面多加“ ; ”(如: void fun (char *s); 后面的分号不能加)※(4) 当判断相等的时候,误把“ == ” 写成赋值的“ = ”※(5) 函数类型定义错误(比如说自定义一个没有返回值的函数却定义成int fun() )※(6) 条件语句漏写“ () ”(包括for语句、if语句、while语句等等)(7) 符号写错(如除法的“ / ” 写成“\” 等等)(8) 字符串符号" " 与字符符号' ' 弄错(9) 函数行参类型定义错误(比如:本意为带入指针类型的实参,却写成 void fun (char s) 正确应为 void fun (char *s) )(10) 漏写大括号“ { ” 或“ } ”中的一个第二大类:逻辑错误(此类错误都和题意有关,需结合具体题意改正)※(1) 大小关系弄反(比如本该为if(x<y) ...... 误写成if(x>y) ...... )(2) “ ++ ” 和“ -- ” 弄反(比如本该为 for(i=j; i!=k; i++) 误写成for(i=j; i!=k; i--) )(3) 变量赋值错误(包括赋初值错误或没有赋初值等,如:依题意,本该赋值 int i=0; 却赋错值 int i=1; )(4) 依次载入数据时没有写“ ++ ” 或“ -- ”(如: for(i=0;i<n;i++) s[j++]=i; 写错成for(i=0;i<n;i++) s[j]=i; )※(5) 代换关系弄错(如: p=q; 误写成q=p; 或p=q+i; 误写成q=p+i; )(6) 循环中初值或终值写错(如:依题意应为 for(i=0; i<n; i++) ...... 写错为for(i=0; i<m; i++) ...... )(7) “ == ” 和“ != ”逻辑关系弄错(8) 逻辑与“ && ” 和逻辑或“ || ”弄错(9) 临界值弄错(如“ <= ” 和“ < ” 等)(10) 其他逻辑错误:原语句不符题意或与题意相悖的一切逻辑错误。

二级C语言上机改错题 常见错误类型

二级C语言上机改错题 常见错误类型

二级C语言上机改错题常见错误类型※(1) 漏写“ ; ”(所有完整语句后面都应该有“ ; ”)※(2) 数据类型定义错误(包括int, long, char, float, double, 字符串, 数组和指针等类型互相不能用错)(3) 定义函数时后面多加“ ; ”(如: void fun (char *s); 后面的分号不能加)※(4) 当判断相等的时候,误把“ == ” 写成赋值的“ = ”※(5) 函数类型定义错误(比如说自定义一个没有返回值的函数却定义成int fun() )※(6) 条件语句漏写“ () ”(包括for语句、if语句、while语句等等)(7) 符号写错(如除法的“ / ” 写成“\” 等等)(8) 字符串符号" " 与字符符号' ' 弄错(9) 函数行参类型定义错误(比如:本意为带入指针类型的实参,却写成 void fun (char s) 正确应为 void fun (char *s) )(10) 漏写大括号“ { ” 或“ } ”中的一个第二大类:逻辑错误(此类错误都和题意有关,需结合具体题意改正)※(1) 大小关系弄反(比如本该为if(x<y) ...... 误写成if(x>y) ...... )(2) “ ++ ” 和“ -- ” 弄反(比如本该为 for(i=j; i!=k; i++) 误写成for(i=j; i!=k; i--) )(3) 变量赋值错误(包括赋初值错误或没有赋初值等,如:依题意,本该赋值 int i=0; 却赋错值 int i=1; )(4) 依次载入数据时没有写“ ++ ” 或“ -- ”(如: for(i=0;i<n;i++) s[j++]=i; 写错成for(i=0;i<n;i++) s[j]=i; )※(5) 代换关系弄错(如: p=q; 误写成q=p; 或p=q+i; 误写成q=p+i; )(6) 循环中初值或终值写错(如:依题意应为 for(i=0; i<n; i++) ...... 写错为for(i=0; i<m; i++) ...... )(7) “ == ” 和“ != ”逻辑关系弄错(8) 逻辑与“ && ” 和逻辑或“ || ”弄错(9) 临界值弄错(如“ <= ” 和“ < ” 等)(10) 其他逻辑错误:原语句不符题意或与题意相悖的一切逻辑错误。

国家计算机C语言二级考试改错题库

国家计算机C语言二级考试改错题库

1 下列给定程序中,函数fun 的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。

例如,当n 为5时,函数值应为10.407143。

f(x)函数定义如下:f(x)=(1)(2)0002(1)(2)0x x x x x x x x ⎧+/->⎪==⎨⎪-/-<⎩或请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。

试题程序:#include <stdlib.h> #include <conio.h> #include <stdio.h> #include <math.h>/*************found**************/ f(double x)2 下列给定程序中,fun 函数的功能是:根据形参m,计算下列公式的值:t=1+1/2+1/3+1/4+…+1/m例如,若输入5,则应输出2.283333。

3 下列给定程序中,函数fun 的功能是:分别统计字符串中大写字母和小写字母的个数。

例如,给字符串s 输入:AaaaBBb123CCccccd,则应输出结果:upper=5,lower=9。

4 下列给定程序中函数fun 的功能是:计算正整数num 各位上的数字之积。

例如,若输入252,则输出应该是20。

若输入202,则输出应该是0。

5 下列给定程序中函数fun 的功能是:计算n!。

例如,给n 输入5,则输出120.000000。

6 下列给定的程序中,函数fun 的功能是:计算并输出k 以内最大的10个能被13或17整除的自然数之和。

k 的值由主函数传入,若k 的值为500,则函数的值为4622。

7 下列给定程序中,函数fun()的功能是:根据整型形参m 的值,计算如下公式的值:t=1-1/(22)1/(33)...1/()m m ⨯-⨯--⨯8 在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。

@所有人,二级C语言上机考试改错题总结!

@所有人,二级C语言上机考试改错题总结!

@所有人,二级C语言上机考试改错题总结!1、if或while语句若错误行是if或者while语句,则要注意以下点:(1)首先判断是否正确书写if或while关键字;(2)然后看有没有用小括号把整个表达式括起来,若没有则加上小括号;(3)若条件表达式中有指针变量而且没有指针运算符时,则加上指针运算符;(4)若if条件表达式中只有一个等于号即数学等号(=),则要改写成两个等于号即逻辑等号(= =)。

2.for语句若错误行是for语句,则要注意以下几点:(1)首先判断for有没有书写正确;(2)然后看for中的表达式是不是用分号(;)隔开,若不是则改为分号。

记住是分号(;),不是逗号(,)!(3)再者,分析for中的三个表达式,是否符合题意。

3. return语句若错误行为return语句,则要注意以下几点:(1)首先看是不是正确书写return关键字;(2)然后看是不是缺少分号,若是则加上分号即可;(3)再者判断return后的变量或表达式是否正确;这种错误需要根据题意来分析,分析返回变量或表达式的值和类型。

4. 赋值语句若错误行是赋值语句,则要看赋值是否正确,然后看赋值运算符是否写正确。

5. 定义语句若错误行是定义语句,则要注意:(1)首先分析变量类型名是否写对;(2)然后分析给变量赋初值是否正确;(3)若以上均不是,则看是不是少定义了某个变量或少了花括号。

6. 表达式错误问题若错误行中有整数1除以某个表达式或变量时,必须把整数1改为1.0;若变量或表达式是整型时,则只能进行强制类型转换。

7. 字符串类问题若错误行中有字符串结束符,则特别要要注意结束符有没有写错。

但是要区分清楚字符‘o’和数字’0’。

以及字符串结束标记‘\0’。

8. 指针类问题若错误行中有指针变量,并且该变量名之前没有指针运算符,则一般都是加上指针运算符。

9. 函数首部类问题若错误行是函数首部,则要注意:(1)首先看该行最后有没有分号,若有则删掉分号;若中间有分号则要改为逗号;(2)形参和实参类型不一致问题:① 若实参是个地址或数组名或指针变量名,则对应的形参肯定是指针或数组;②若实参是二维数组名,则对应的形参应该是指针数组或是二维数组;③若后面用到某形参的时候有指针运算符,则该形参比为指针类型;④若形参是二维数组或指向M 个元素的指针变量,则该二维的长度必须与main中对于数组的第二维的长度相同。

全国计算机二级C语言程序改错题(必过)

全国计算机二级C语言程序改错题(必过)

目录题目一前N项和问题 (3)题目二SS字符串问题 (4)题目三变量互换问题1 (4)题目三变量互换问题2 (5)题目三变量互换问题3 (5)题目四最大公约数问题 (6)题目五长数变短数1 (7)题目五长数变短数2 (7)题目五长数变短数3 (8)题目五长数变短数4 (9)题目五长数变短数5 (9)题目五长数变短数6 (10)题目五长数变短数7 (11)题目五长数变短数8 (11)题目五长数变短数9 (12)题目六斐波拉契数列 (13)题目七链表1 (14)题目七链表2 (15)题目七链表3 (16)题目七链表4 (17)题目八非素数问题 (19)题目九排序问题1 (19)题目九排序问题2 (20)题目九排序问题3 (21)题目九排序问题4 (22)题目九排序问题5 (23)题目九排序问题6 (24)题目九排序问题6 (25)题目九排序问题7 (26)题目十平均值问题1 (26)题目十平均值问题2 (27)题目十平均值问题3 (28)题目十平均值问题4 (29)题目十平均值问题5 (30)题目十一字符串连接1 (30)题目十一字符串连接2 (31)题目十一字符串连接3 (32)题目十一字符串连接4 (33)题目十二求和问题1 (33)题目十二求和问题2 (34)题目十二求和问题3 (35)题目十二求和问题4 (36)题目十二求和问题6 (38)题目十二求和问题7 (38)题目十二求和问题8 (39)题目十二求和问题9 (39)题目十二求和问题10 (40)题目十二求和问题11 (41)题目十二求和问题12 (42)题目十二求和问题13 (42)题目十二求和问题14 (43)题目十二求和问题15 (44)题目十二求和问题16 (44)题目十二求和问题17 (45)题目十二求和问题18 (46)题目十二求和问题19 (46)题目十三整数问题 (47)题目十四字符串逆置 (48)题目十五进制转换1 (48)题目十五进制转换2 (49)题目十六素数问题1 (50)题目十六素数问题2 (50)题目十六素数问题3 (51)题目十六素数问题4 (52)题目十六素数问题5 (53)题目十七删除字符串中指定项1 (53)题目十七删除字符串中指定项2 (54)题目十八最小公倍数问题 (55)题目十九字符串替换问题1 (55)题目十九字符串替换问题2 (56)题目二十找最长字符串 (58)题目二十一数组问题1 (58)题目二十一数组问题2 (59)题目二十一数组问题3 (60)题目二十二求平方根问题 (61)题目二十三短字符串变长字符串1 (62)题目二十三短字符串变长字符串2 (62)题目二十三短字符串变长字符串3 (63)题目二十三短字符串变长字符串4 (64)题目二十四字符串s问题1 (64)题目二十四字符串s问题2 (65)题目二十四字符串s问题3 (66)题目二十五求方程的根 (67)题目二十六求阶乘1 (68)题目二十六求阶乘2 (69)题目二十七方阵问题 (70)题目二十八查找字符串中某元素的数目 (71)题目二十九最大值问题1 (72)题目二十九最大值问题2 (72)题目二十九最大值问题3 (73)题目三十大小写转换1 (74)题目三十大小写转换2 (75)题目三十大小写转换3 (76)题目三十一:计算数字位数的问题1 (77)题目三十一:计算数字位数的问题2 (78)题目三十一:计算数字位数的问题3 (79)题目三十一:计算数字位数的问题4 (80)题目三十二统计字母数字个数问题1 (81)题目三十二统计字母数字个数问题2 (82)题目三十二统计字母数字个数问题3 (83)题目三十二统计字母数字个数问题4 (83)题目三十三对角线问题 (84)题目三十四比较字符串大小 (85)题目一前N项和问题.下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。

全国计算机二级C语言上机 (2改错题)

全国计算机二级C语言上机 (2改错题)

1、请编写函数fun,函数的功能是: 移动字符串中的内容,移动的规则如下: 把第1到第m个字符, 平移到字符串的最后, 把第m+1到最后的字符移到字符串的前部。

例如, 字符串中原有的内容为: ABCDEFGHIJK, m的值为3, 则移动后, 字符串中的内容应该是: DEFGHIJKABC。

注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。

#include <stdio.h>#include <string.h>#define N 80void fun1(char *w) /* 本函数的功能是将字符串中字符循环左移一个位置*/{int i; char t;t=w[0];for(i=0;i<strlen(w)-1;i++)w[i]=w[i+1];w[strlen(w)-1]=t;}void fun(char *w, int m) /*可调用fun1函数左移字符*/{}main(){ char a[N]= "ABCDEFGHIJK";int m;printf("The original string:\n");puts(a);printf("\n\nEnter m: ");scanf("%d",&m);fun(a,m);printf("\nThe string after moving:\n");puts(a);printf("\n\n");NONO();}NONO(){/* 请在此函数内打开文件,输入测试数据,调用fun 函数,输出数据,关闭文件。

*/ FILE *rf, *wf ; char a[N] ; int m, i ;rf = fopen("c:\\test\\in.dat","r") ;wf = fopen("c:\\test\\out.dat","w") ;for(i = 0 ; i < 10 ; i++) {fscanf(rf, "%d %s", &m, a) ;fun(a, m) ;fprintf(wf, "%s\n", a) ;}fclose(rf) ; fclose(wf) ;}2、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中, 请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。

C语言计算机二级改错题

C语言计算机二级改错题

功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。

------------------------------------------------------*/#include "stdio.h"#define N 11main(){int i,j,t,number,a[N]={1,2,4,6,8,9,12,15,149,156};printf("please enter an integer to insert in the array:\n");/**********ERROR**********/scanf("%d",&number)printf("The original array:\n");for(i=0;i<N-1;i++)printf("%5d",a[i]);printf("\n");/**********ERROR**********/for(i=N-1;i>=0;i--)if(number<=a[i])/**********ERROR**********/a[i]>=a[i-1];else{a[i+1]=number;/**********ERROR**********/exit;}if(number<a[0]) a[0]=number;printf("The result array:\n");for(i=0;i<N;i++)printf("%5d",a[i]);printf("\n");}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;功能:用下面的和式求圆周率的近似值。

计算机等级考试二级C语言程序改错题(一)

计算机等级考试二级C语言程序改错题(一)

一、下列给定程序中函数proc的功能是:取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。

例如,当s中的数为123456789时,t中的数为2468。

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

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序:#include <stdio.h>// ****found****void proc(long s,long *t){long sl=10;s/=10;*t=s%10;// ****found****while (s>0){s=s/100;*t=s%10*sl+*t;sl=sl*10;}}int main(){long s,t;printf("Please enter s:");scanf("%ld",&s);proc(s,&t);printf("The result is:%ld\n",t);return 0;}参考答案:(1)错误:void proc(long s,long t)正确:void proc(long s,long *t)(2)错误:while (s<0)正确:while (s>0)【解析】从主函数中实参可知,形参的第二个变量是长整型的指针变量。

因此“void proc(long s,long t)”应改为“void proc(long s,long *t)”;要从低位开始取出长整型变量s 中偶数位上的数,每次变量S要除以100,然后判断其是否大于0来决定是否要继续,因此“while(s>0)”。

给定程序中,函数proc()的功能是:使数组中的元素的值缩小5倍。

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

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序:#include <stdio.h>// ****found****void proc(double m[]){int i;for (i=0; i<10;i++){// ****found****m[i]=m[i]/5;}}int main(){int i;double m[10];printf("before calling\n");for (i=0;i<10;i++){m[i]=i+20;printf("%lf ",m[i]);}proc(m);printf("\nafter calling\n");for(i=0; i<10; i++)printf("%lf ",m[i]);printf("\n");return 0;}参考答案:(1)错误:int proc(int m[])正确:void proc(int m[])(2)错误:m[i]=m[i]%5;正确:m[i]=m[i]/5;【解析】由主函数中的函数调用可知,函数proc()没有返回值。

计算机二级C语言改错题归类

计算机二级C语言改错题归类

则函数值为NULL。

t1和t2所指字符串的长度相同。

数值返回。

为函数值返回。

11.求k!(k<13),所求阶乘的值作为函数值返回。

方根之和sum。

n的值通过形参传入。

为7,若给num1和num2分别输入27和81,则输出的最大公约数为27。

返回3,若能构成等腰三角形函数返回2,若能构成三角形函数返回1,若不能构成三角形函数返回0。

29.找出一个大于给定整数m且紧随m的素数,并作为函数值返回。

1.将n1.根据形参m,计算如下公式的值。

2.根据整型形参m,计算如下公式的值。

3.根据整型形参m的值,计算如下公式的值。

4.根据整型形参m,计算如下公式的值。

5.传入一个整数m,计算如下公式的值。

8.根据整型形参n,计算如下公式的值。

9.求s的值。

11.应用递归算法求某数a的平方根。

求平方根的迭代公式如下:(x+1)/(x-2) x>0f(x)= 0 x=0或x=2(x-1)/(x-2) x<010 (n=1)fun(n)=fun(n-1)+2 (n>1)16.求出以下分数序列的前n项之和,和值通过函数值返回main函数。

17.求出以下分数序列的前n项之和,和值通过函数值返回main()函数。

所指的数组中。

若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。

为函数值返回。

规定,函数中a1放个位数,a2放十位数。

区中,此存储区的首地址作为函数值返回。

1.给—维数组a输入任意4个整数,并按如下的规律输出。

例如输入1,2,3,4,程序运行后将输出以下方阵:2.根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示的数据,由main()函数输出。

1.并用随机函数为各结点赋值。

将单向链表结点(不包括头结点,并且作为函数值返回。

并且作为函数值返回。

计算机二级C语言易错点总结(海大 张文超总结)

计算机二级C语言易错点总结(海大 张文超总结)

0.在c程序中无论是整数还是实数,只要在允许的范围内都能无误的表示1.源程序(.c)经编译目标程序(.obj)经联合可执行文件(.exe)2.预处理器不是c的一部分。

不占用运行时间。

3.源程序以文本文档和ASCII码的形式存在。

4.A和a是不同的标识符5.标识符只能为数字、下划线、字母组成,且第一个必须为字母或则是下划线。

第一个为数字就错了。

6.实型数中,E的前后不能有空格。

E的前后必有数,且后面必为整数7.%的前后必须是整型8.用户标识符不能是关键字viod、case,但如果是大写就可以了9.语句a=a+1;表达式a=a+110.c程序由主函数和其他各种函数共同组成,但也可能只有主函数11.八进制不能表示负数和小数12.,在十六进制中:0x11是正确的,ox是错误的。

主要看是零还是哦。

13 .‟1‟占一个字节,”1”占两个字节。

‟0‟的ASCII码为48,‟A‟的ASCII 码为65.…0‟+0=‟0‟…0‟+1=‟1‟0与‟0‟相差48 …A‟与‟a‟相差32字符之间可以进行运算:常见的错误形式有;‟65‟“0”14. 整型占两个字节,字符占一个字节,双精度占4个字节。

在做题过程中16位编译系统和32位编译系统无差别。

但实际上,16位编译系统中的整型占16位,即2个字节;32位编译系统中整型占两个字节。

15.字符型和整型的八进制和十六进制表示方法不一样。

字符型:\ddd表示八进制\xdd表示十六进制,前面不加零整型:0ddd表示八进制0xddd表示十六进制(与x大小写无关)16.强制转换类型(int)a 注意括号在哪如果后面要对整个表达式进行强制转换,则(int)(a+b)17.位运算在没有舍弃1的情况下,左移一位相当于乘二,右移一位相当于除以二。

18.%ld为长整型,%lf为double类型19. Scanf(“%d%d%*d%d”,&a,&b,&c);跳过输入的第三个数据20.char a=getchar() putchar(a) 注意putchar()括号里放的是变量。

改错题规律总结

改错题规律总结

冲刺阶段如何复习才能得高分?——张官祥温馨提示:离考试越来越近了,我们的好多学员对自己没有信心,对此我建议大家不要放弃最后的一线希望,奇迹总是出现在最后。

为此我们一定要加强我们的复习进度。

不管你以前学习得怎么样,从现在开始认真复习还可以补救的!复习方法:认真研究2005年4月,2005年9月,2006年4月,2006年9月,2007年4月,2007年9月的真题!只有我们会做这几套真题,笔试考试及格是没有问题的!如果想要拿高分的学员还得认真复习一下C语言的重要章节,比如指针,字符串,数组,必须得认真再次复习,还有基础章节,比如顺序结构,选择结构,循环结构,这些章节必须要会做,如果这些章节不会做的话,笔试考试会成为我们的挑战!如果想要拿优秀成绩的学员必须的全面性复习,不能忽略我们的有难度的章节,比如文件,结构体,共用体等章节,虽然所占的比分少,但是为我们拿优秀成绩还是有一定的影响,我们不能失去这些分数。

我们的重中之重是公共基础,它在我们的笔试考试占30%,应该知道它的重要性了吧!而且公共基础考试不是很难,主要以选择和填空的形式考察,只有我们记住最简单的概念和定义就可以了,不需要去理解记忆复杂的知识点。

强调的是,我们认真记忆公共基础知识才不会在考试中处于被动的地位,如果想要战胜公共基础这一战,我们不得不而且至少把课本的知识点看两遍。

看的多得到的多!试想,30分的公共基础你能够拿多少分,如果我们只要及格成绩的话,也得至少得20分,所以一定要重视我们的公共基础的分数!再说了,公共基础的分数也比较容易得分,我们为何不为多得几分努力呢?上机考试:上机考试只有三种题型,程序填空题,程序修改题和程序编写题。

而且上机考试题库也只有100套题,我们做会了100套题,上机考试绝对没有问题!所以我们要充分利用我们的资料哦,我们的第四分册和网站的50套题自己下载,必须要做完!尤其是我们的修改题,只要掌握了它的主要类型,30分就很简单拿到手了!我们的学员应该必须稳拿程序题的40分,必须会掌握我们所教的那种程序编写方法,如果在考试中抽到能够应用类似方法写程序的题目必须要认真去做,不要着急,一定要稳做稳拿!注意的是输出结果的输出形式,一定要看清楚,一定要按照程序的输出形式写结果,千万不要自以为或者想当然,不能改动程序的输出形式,哪怕是一个空格,一个回车也不能多,更不能少!这是我们能否得分的关键,所以,建议我们的学员要看清楚程序!还有一个问题是,必须新建文本文档,不是文件夹或者word,excel,ppt。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.当不再出现语法错时,执行程序, 按照试题的示例给出的数据进行试算,若试 算的结果与给出的输出结果相同时,该题就做对了;若试算的结果与给出的输 出结果不同,就应进一步检查程序中的逻辑错误。
5.当程序存在逻辑错误时,首先应当理解题意、读懂程序的算法,必要时可按步检 查数据的流程,以便确定错误所在。例如,题目要求数据按由小到大排序,而 结果数据是按由大到小进行了排序,问题可能出现在条件判断上。又如,输出 的字符串比预期的短,就有可能字符串的结束标志放错了位置。再如做循环的 时候 数组上限下限错误了 ,基数是从 0 开始 而不是 1 开始的。修改程序中的 逻辑错时,要求考生认真读懂程序代码。
/************found************/ wihle( q>p )
2)然后看有没有用小括号把整个表达式括起来,若没有则加上小括号;if 后面必须 加上小括号
/************found************/ if n = = 0
3)若条件表达式中有指针变量而且没有指针运算符时,则加上指针运算符;
①若函数中没有 return 语句,则函数类型为 void;
②若函数中有 return 语句,则函数的类型必须与 rerun 后的变量类型一致;
#include <stdio.h>
/************found************/ void fun ( int n ) { double s;
int fun(int x,int y) {
if(x>y)return x; else return y; }
main() {
int a,b,c; scanf(“%d%d”,&a,&b); c=fun(a,b);
printf(“最大值为:%d”,c);}
1 函数的返回类型:
在上面的例子中 fun 函数的返回值是 int,如果将 int 改为 double, 很明显是错误的。从两个地方来看,首先 return x 中 x 的类型必须和 fun 函数中的返回值相同,x 是整型。其次 c=fun(a,b);中 fun 函数将一 个返回值赋值给了变量 C,说明函数返回的值一定是整型。 记住:函数调用、函数的返回值和 ruturn 中数据类型必须一致!
4、赋值语句
若错误行是赋值语句,则要看赋值是否正确,然后看赋值运算符是否写正确。
5、定义语句
若错误行是定义语句,则要注意: 1)首先分析变量类型名是否写对; 2)然后分析给变量赋初值是否正确; 3)若以上均不是,则看是不是少定义了某个变量或少了花括号;
6、表达式错误问题:
若错误行中有整数1除以某个表达式或变量时,必须把整数1改为1.0;若变量或 表达式是整型时,则只能进行强制类型转换。
记住在 if 语句中出现赋值号(=)一般是讲它改为等号(= =)。
2)表达式的取值范围出错:
1 当遇到计算表达式的累加或是累减时,一定用到循环来完成相应的操 作。
2 例如:要求计算 t=1-1/2*2-1/3*3-….-1/m*m 这个表达式,在这个题目中 有这样的 for 语句:for(i=2;i<m;i++)y-=1/(i*i);从题目中不难发现 i 是一 个变量,它的取值范围从整数 2 开始到 m-1 结束,最终计算的结果为 y=1-1/2*2-1/3*3-….-1/(m-1)*(m-1)和题目要求的不符,因此将 i<m 改为 i<=m。
二、 上机改错测试时,建议按以下步骤进行
1.首先仔细审题,了解试题的要求,看清楚试题给出的输入和输出例示,以便检验 改错后程序运行的结果是否正确。
2.调出源程序后,审视"/******found******/"所在函数,根据题义理解程序所采 用的基本算法,做到心里有数。
3.先对测试程序进行检查是否有语法错误。当编译提示有语法错时,可参考编译提 示来查找并改正错误。
/************found************/ for( i = 100, i <= m, i += 100 )
3)再者,分析 for 中的三个表达式,是否符合题意;第一个表达式表示起始条件, 第二个表达式表示终止条件,第三个表达式表示循环变量的变化。
3、return 语句
若错误行为 return 语句,则要注意以下几点:
scanf(输入控制,输入数据列表),scanf 函数中输入数据列表要求为变量的地址 /*********found**********/ scanf("%d",a[i][j]);
2)首先看该行最后有没有分号,若有则删掉分号;若中间有分号则要改为逗号;
3)形参和实参类型不一致问题
① 若实参是个地址或数组名或指针变量名,则对应的形参肯定是指针或数组;
1)首先看是不是正确书写 return 关键字;
/************found************/ Return(Value);
2)然后看是不是缺少分号,若是则加上分号即可;
3)再者判断 return 后的变量或表达式是否正确;
这种错误需要根据题意来分析,分析返回变量或表达式的值和类型。若错误行中有指 针变量,并且该变量名之前没有指针运算符,则一般都是加上指针运算符;
6.修改完成,得到正确结果后,一定不要忘记把修改后的程序存盘。
三、改错题的错误主要分为以下几类:
1、if 或 while 语句
若错误行是 if 或者 while 语句,则要注意以下点:
1)首先判断是否正确书写 if 或 while 关键字;
/************found************/ If(substr[k+1]=='\0')
7、数组格式出错
一维数组的定义形式:类型名 数组名[常量表达式],谨记[]是数组的独有特征 /**********found**********/ t(k)=b(j);
二维数组不能省略列下标 /************found************/ int fun(int n, int xx[][])
/************found************/ int fun(int n, int xx[][]) main( ) { int aa[M][M]={{1,2,3,4,5},{4,3,2,1,0},
{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}}
4)函数类型不一致问题
else return *y; } 1)在此例中 fun 函数的形参是 x 和 y,它们的类型是整型的指针,那
么在 fun 函数的函数体中使用到 x 和 y 的值时一定要区分:x>y 比 较的是 x 和 y 所存变量地址的大小,*x>*y 才是比较值的大小。 2)如果存在*x=x+y;的类似情况一定是错误的,必须要将赋值号的左 右两边的类型变为一致。
传递的是值还是地址,第一个例子调用函数的时候传递的是值,因此
在 fun 函数的形参中 x 和 y 仅仅是普通的变量,而第二个例子中调用函
数的时候传递的是地址,因此在 fun 函数的形参中 x 和 y 就是两个指针
变量。
3 指针的使用:
int fun(int *x,int *y)
{
if(*x>*y)return *x;
6)数组:
1 数组下标的初始值:数组下标从零开始,到长度减一结束。 1)考试技巧:当出错行在定义部分时,先检查该定义语句有没有语法 错误,再看定义语句中的变量有没有赋初始值,最后看变量赋的初 始值有没有正确。 2)定义初始值有窍门,遇到累加时,用来存放累加和的变量一般赋值 为零,遇到求阶乘时,用来存放阶乘值的变量一般赋值为 1。
void fun(char *p, char *b)
/************found************/
b[k]=p;
4)若 if 条件表达式中只有一个等于号即数学等号(=),则要改写成两个等于号即逻 辑等号(= =);
/************found************/ if (d%2=0)
二级 C 语言上机考试改错题总结
一、 上机改错题的特点和注意事项
1.上机改错的试题中通常包含两个(或三个)错误需要修改。 2.试题中用"******found******/"来提示在下一行(或下面第二行)有错。 3.错误的性质基本分语法错和逻辑错两种,也有些试题要求把语句添加在下划线 处。 4.特别要注意的是:只能在出错的行上进行修改,不要改动程序行的顺序,更不 要自己另编程序。
8、字符串类问题
若错误行中有字符串结束符,则特别要要注意结束符有没有写错。但是要区分清 楚字符‘o’和数字’0’。
for(i=j=0; s[i]!='\0'; i++)
s[j]=”\0”;
9、函数首部类问题:
若错误行是函数首部,则要注意:
1)记住函数名后面一定是小括号,不能是方括号,方括号只有在数组下标中用到 /**********found**********/ n=strlen[ aa ];

2 函数传递的参数:
int fun(int *x,int *y)
main()
{
{
if(*x>*y)return *x;
int a,b,c;
else return *y;
scanf(“%d%d”,&a,&b);
}
c=fun(&a,&b);
printf(“最大值为:%d”,c);
}
一定注意:传递的是值还是地址。比较上面两个例子大家很容易区别
3 做这样的题目看两点:一看题目中的表达式,二看 for 语句中变量的取 值范围。
相关文档
最新文档