计算机等级考试二级C语言上机改错题考点总结
二级C机试 应考总复习

二级C上机考试总复习一、攀枝花学院四川省计算机二级考试机试系统的使用步骤1.登录系统2.抽题3.答题4.保存5.交卷二、机试改错题中的常见错误分析1.书写标识符时,忽略了大小写字母的区别。
main(){ int a=5;printf("%d",A);}编译程序把a和A认为是两个不同的变量名,而显示出错信息。
C认为大写字母和小写字母是两个不同的字符。
习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。
2.忽略了变量的类型,进行了不合法的运算。
main(){ float a,b;printf("%d",a%b);}%是求余运算,得到a/b的整余数。
整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。
3.将字符常量与字符串常量混淆。
char c;c="a";在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。
C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘\',而把它赋给一个字符变量是不行的。
4.忽略了“=”与“==”的区别。
在许多高级语言中,用“=”符号作为关系运算符“等于”。
如在BASIC程序中可以写if (a=3) then …但C语言中,“=”是赋值运算符,“==”是关系运算符。
如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。
由于习惯问题,初学者往往会犯这样的错误。
5.忘记加分号。
分号是C语句中不可缺少的一部分,语句末尾必须有分号。
a=1b=2编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。
改错时,有时在被指出有错的一行中/未发现错误,就需要看一下上一行是否漏掉了分号。
全国计算机等级考试_二级C语言上机考试题库及答案-改错

6.2给定程序MODI1.C中函数fun的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。
例如,若字符串为abcd,则应输出:dcba.
答案:第一处fun(char a)改为fun(char*a) 第二处printf(“%c“*a)改为 printf(“%”,*a)
13.2给定程序MODI1。C中函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。例如:若k=10,则应输出:3628800请改正程序中的错误。
第一处:if k>0改为if(k>0)第二处:if(k=0)改为if(k==0)
14.2给定程序MODI1。C中函数fun的功能是:将m(1<=m<=10)个字符串连接起来,组成一个新串,放入pt所指存储区中。
答案:1 将t=1改为t=0 2 将t=t%10改为t=t/10
26.2给定函数功能是:用下面的公式求 的近似值,直到最后一项的绝对值小于指定的数(参数num)为止:
例如,输入0.0001,则程序输出3.1414
答案:1将(t>=num)改为((fabs(t))>=num) 2 将t=s%n改为t=s/n
28.2给定程序中,函数fun的功能是:计算并输出high以内最大的10个素数之和。high的值由主函数传给fun函数。若high的值为100,则函数的值为732
答案: 第一处:while((high>=2)&&(n<10)改为 while((high>=2)&&(n<10))
第二处:yes=0;break 改为yes=0;break;
全国二级C语言上机题的特点和注意事项

上机题的特点和注意事项一、上机改错题的特点和注意事项1.上机改错的试题中通常包含两个(或三个)错误需要修改。
2.试题中用"******found******/"来提示在下一行(或下面第二行)有错。
3.错误的性质基本分语法错和逻辑错两种,也有些试题要求把语句添加在下划线处。
4.特别要注意的是:只能在出错的行上进行修改,不要改动程序行的顺序,更不要自己另编程序。
二、上机改错测试时,建议按以下步骤进行1.首先仔细审题,了解试题的要求,看清楚试题给出的输入和输出例示,以便检验改错后程序运行的结果是否正确。
2.调出源程序后,审视"/******found******/"所在函数,根据题义理解程序所采用的基本算法,做到心里有数。
3.先对测试程序进行检查是否有语法错误。
当编译提示有语法错时,可参考编译提示来查找并改正错误。
4.当不再出现语法错时,执行程序,按照试题的示例给出的数据进行试算,若试算的结果与给出的输出结果相同时,该题就做对了;若试算的结果与给出的输出结果不同,就应进一步检查程序中的逻辑错误。
5.当程序存在逻辑错误时,首先应当理解题意、读懂程序的算法,必要时可按步检查数据的流程,以便确定错误所在。
例如,题目要求数据按由小到大排序,而结果数据是按由大到小进行了排序,问题可能出现在条件判断上。
又如,输出的字符串比预期的短,就有可能字符串的结束标志放错了位置。
再如做循环的时候数组上限下限错误了,基数是从0开始而不是1开始的。
修改程序中的逻辑错时,要求考生认真读懂程序代码。
6.修改完成,得到正确结果后,一定不要忘记把修改后的程序存盘。
三、上机编程题的特点和说明在二级C程序设计上机考试中,要求完成一个独立的函数的编程。
目前教育部考试中心已出版了上机考试习题集,这些有助于学习编程,但考生应当在学习过程中理解基本的算法,通过实际上机操作积累经验,才能掌握基本的编程能力。
四、进行编程测试时,建议按以下步骤进行1.首先仔细审题,了解试题的要求,记下试题给出的输入和输出例示,以便检验在完成指定的函数后程序运行的结果是否正确。
计算机二级C语言改错题归类

则函数值为NULL。
23.将s,所形成的新串放在w所指的数组中。
在此处,要求数值返回。
为函数值返回。
11.求k!(k<13),所求阶乘的值作为函数值返回。
方根之和sum。
n的值通过形参传入。
为7,若给num1和num2分别输入27和81,则输出的最大公约数为27。
返回3,若能构成等腰三角形函数返回2,若能构成三角形函数返回1,若不能构成三角形函数返回0。
29.找出一个大于给定整数m且紧随m的素数,并作为函数值返回。
1.根据形参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语言知识点总结(完全针对考试大纲)概述总体上必须清楚的:1)程序结构是三种:顺序结构,循环结构(三个循环结构),选择结构(if 和switch)2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择).3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址。
4)bit是位是指为0 或者1. byte 是指字节, 一个字节= 八个位。
5)一定要记住二进制如何划成十进制。
概念常考到的:1)、编译预处理不是C语言的一部分,不再运行时间。
C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。
2)、每个C语言程序中main函数是有且只有一个。
3)、在函数中不可以再定义函数。
4)、算法的是一定要有输出的,他可以没有输入。
5)、break可用于循环结构和switch语句.6)、逗号运算符的级别最低。
第一章1)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。
有其它元素就错了。
并且第一个必须为字母或则是下划线。
第一个为数字就错了。
关键字不可以作为用户标识符号。
main define scanf printf 都不是关键字。
迷惑你的地方If是可以做为用户标识符.因为If中的第一个字母大写了,所以不是关键字。
2)实型数据的合法形式:2.333e—1 就是合法的,且数据是2。
333×10—1。
考试口诀:e前e后必有数,e后必为整数。
.3)字符数据的合法形式::'1’是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。
'0’的ASCII数值表示为48,'a' 的ASCII数值是97,'A’的ASCII数值是65。
4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节:考试时候一般会说,在16位编译系统,或者是32位系统。
碰到这种情况,不要去管,一样做题。
@所有人,二级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语言上机题型总结这个是我看“未来教育”(小海豚)二级C语言《上机题库》那本书的归纳,包括100题填空、100题改错、100题编程,对易记混、易记错的题,按照书中给出的答案进行了归类总结,希望有所帮助。
(一)“******”问题1、将字符串中的前导*号全部删除,中间和后面的*号不删除。
void fun(char *a){char *p=a;while(*p= =’*’) p++;for( ; *p!=’\0’;p++,a++)*a=*p;*a=’\0’;}2、只删中间*int i;for(i=0;a= =’*’;i++)for( ;h<p;h++)if(*h!=’*’)a=*h;for( ;*p;p++)a=*p;a=’\0’;3、只删尾*while(*a!=’\0’)a++;a--;while(*a= =’*’)a--;*(a+1)=’\0’;4、只留前*int i , j=0;for(i=0;a=’*’;i++); j=i;for( ;a;i++)if(a!=’*’)a[j++]=a;a[j]=’\0’;5、只留中间*int i,j=0;for(i=h;i<n-e;i++)a[j++]=a;a[j]=’\0’;6、只留尾*char *t=a;for( ; t<=p;t++)if(*t!=’*’)*(a++)=*t;for( ;t!=’\0’;t++)*(a++)=*t;*a=’\0’;7、*个数>n个,删多余的*;*个数<=n个,不做任何处理。
int i=0, k=0;char *p,*t;p=t=a;while(*t= =’*’){k++;t++;}if(k>n){while(*p){a=*(p+k-n);i++;p++}a=’\0’;}(二)移动问题1、若一维数组中有n个整数,要求把下标从p到n-1(p<=n-1)的元素平移到数组前面。
计算机二级C语言机试 应考总复习

二级C上机考试复习一、攀枝花学院四川省计算机二级考试机试系统的使用步骤1.登录系统2.抽题3.答题4.保存5.交卷二、机试改错题中的常见错误分析1.书写标识符时,忽略了大小写字母的区别。
main(){ int a=5;printf("%d",A);}编译程序把a和A认为是两个不同的变量名,而显示出错信息。
C认为大写字母和小写字母是两个不同的字符。
习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。
2.忽略了变量的类型,进行了不合法的运算。
main(){ float a,b;printf("%d",a%b);}%是求余运算,得到a/b的整余数。
整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。
3.将字符常量与字符串常量混淆。
char c;c="a";在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。
C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘\',而把它赋给一个字符变量是不行的。
4.忽略了“=”与“==”的区别。
在许多高级语言中,用“=”符号作为关系运算符“等于”。
如在BASIC程序中可以写if (a=3) then …但C语言中,“=”是赋值运算符,“==”是关系运算符。
如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。
由于习惯问题,初学者往往会犯这样的错误。
5.忘记加分号。
分号是C语句中不可缺少的一部分,语句末尾必须有分号。
a=1b=2编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。
改错时,有时在被指出有错的一行中/未发现错误,就需要看一下上一行是否漏掉了分号。
{ z=x+y;t=z/100;printf("%f",t);}对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL不同的)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
试题程序:
#include <stdio.h> #include<conio.h> #include<stdlib.h> #define N 5 int fun (int w[][N]) { } main() {int a[N][N]={0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1}; int i, j; int s; clrscr(); printf("*****The array*****\n "); for (i=0; i<N; i++) { for (j=0;j<N;j++) {printf("%4d ",a[i][j]);} printf("\n "); } s=fun(a);
计算机等级考试二级 C 语言上机改错题考点总结 改错题的错误主要分为以下几类:
1、if 或 while 语句 若错误行是 if 或者 while 语句,则要注意以下点: 1)首先判断是否正确书写 if 或 while 关键字; 2)然后看有没有用小括号把整个表达式括起来,若没有则加上小括号; 3)若条件表达式中有指针变量而且没有指针运算符时,则加上指针运算符; 4)若 if 条件表达式中只有一个等于号即数学等号(=),则要改写成两个等于号即逻辑等 号(= =); 5) 若 if 条件表达式为其他的比较运算符,则一般是进行逆转或加一个等于号; 2、for 语句 若错误行是 for 语句,则要注意以下几点: 1)首先判断 for 有没有书写正确; 2)然后看 for 中的表达式是不是用分号(;)隔开,若不是则改为分号。 记住是分号(;),不是逗号(,)! 3) 再者,分析 for 中的三个表达式,是否符合题意; 第一个表达式表示起始条件, 第二个表达式表示终止条件, 第三个表达式表示循环变量的变化。 3、 return 语句 若错误行为 return 语句,则要注意以下几点: 1)首先看是不是正确书写 return 关键字;
#include <conio.h> #include <stdio.h> double fun(int x[ ]) { double sum=0.0; int c=0, i=0; /**********************found***********************/ while(x[i]==0) { if(x[i]<0) { sum=sum+x[i];
printf("*****THE RESULT*****\n "); printf("The sum is : %d\n ",s); } 答案及评析: int fun (int w[][N]) { int i,j,k=0; int s=0; for(i=0;i<N;i++) for(j=0;j<N;j++) if(i==0||i==N-1||j==0||j==N-1) /*只要下标中有一个为 0 或 N-1,则它一定是周边元素*/ {s=s+w[i][j]*w[i][j]; /*将周边元素求平方和*/ } return s; /*返回周边元素的平方和*/ } 【解析】该题采用逐一判断的方式,周边元素的下标一定有一个是 0 或 N-1,且只要下 标中有一个为 0 或 N-1,则它一定是周边元素。
下列给定的程序中,函数 fun()的功能是:用选择法对数组中的 n 个元素按从大到小的 顺序进行排序。
请改正程序中的错误,使它能得到正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 试题程序:
#include<stdio.h> #define N 20 void fun(int a[],int n) { int i,j,t,p; /**********************found***********************/ for(j=0;j<n-1;j++) ; { p=j; for(i=j;i<n;i++) if(a[i]>a[p]) p=i; t=a[p]; a[p]=a[j]; /**********************found***********************/ a[p]=t; } } main() { int a[N]={11,32,-5,2,14},i,m=5; printf("排序前的数据:"); for(i=0;i<m;i++) printf("%d ",a[i]); printf("\n"); fun(a,m); printf("排序后的顺序:"); for(i=0;i<m;i++) printf("%d ",a[i]); printf("\n"); }
printf("***the origial string***\n"); while(*(p1+j)) { printf("【2】",*(p1+j)); j++; } for(i=0;i<j;i+=2) *p2++=*(str1+i); *p2=’\0’; printf("\nThe new string is:%s\n",【3】); } 答案及评析:【1】″%s″,str1 【2】%c 【3】str2 【解析】填空 1:本题考查对标准输入函数 scanf()的调用格式,当输入字符串时,格 式控制字符串为″%s″,题目要求输入的字符串保存在 str1 中,所以地址表列应为字符串的 首地址,即为 str1。填空 2:本题考查对标准输出函数 printf()的调用格式,当输出为字符型 变量时,格式控制字符串为″%c″。填空 3:题目要求将 str1 中下标为偶数的字符保存在字 符串 str2 中并输出,所以 printf()函数的输出表列是 str2 2. 改错题 在主函数中从键盘输入若干个数放入数组中,用 0 结束输入并放在最后一个元素中。 下列给定程序中,函数 fun()的功能是计算数组元素中值为负数的平均值(不包括 0)。 例如:数组中元素的值依次为 43,-47,-21,53,-8,12,0,则程序的运行结果为 -25.333333。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 试题程序:
#include <stdio.h> #include <conio.h> char *fun(int n) { int g,s,b; g=n%10; s=n/10%10; b=【1】; if((g+b)==s) return【2】; else return【3】; } main() { int num=0; clrscr(); printf("******Input data *******\n"); scanf("%d",&num); printf("\n\n\n"); printf("****** The result *******\n"); printf("\n\n\n%s",fun(num)); } 答案及评析:【1】n/100%10 【2】″yes!″ 【3】″no!″ 【解析】填空 1:由程序可以知道,变量 g 保存了整数的个位数,变量 s 保存了整数的 十位数,所以变量 b 应该保存整数的百位数。将整数除以 100 再对 10 取余,则得到这个整 数的百位数。填空 2:当个位数字和百位数字之和等于十位数字时,则返回″yes!″。填空 3: 当个位数字和百位数字之和不等于十位数字时,则返回″no!″。 2. 改错题
① 若实参是个地址或数组名或指针变量名,则对应的形参肯定是指针或数组; ②若实参是二维数组名,则对应的形参应该是指针数组或是二维数组; ③若后面用到某形参的时候有指针运算符,则该形参比为指针类型; ④若形参是二维数组或指向 M 个元素的指针变量,则该二维的长度必须与 main 中对于 数组的第二维的长度相同。 3)函数类型不一致问题 ①若函数中没有 return 语句,则函数类型为 void; ②若函数中有 return 语句,则函数的类型必须与 rerun 后的变量类型一致; 记住,调用函数的类型与 main 中的该函数的类型一致! 10. 语法错误问题: 1)语句缺少分号。若错误号中语句没有以分号结束则加上分号; 2)变量名不一致。C 语言是区分大小写的,这种题型主要是表达式错误,占的题量比较多而且我们没有统一的做题方法,需要我们 具体问题具体分析。 12. 书写错误问题: 特别注意我们的注释部分,注释是以/*开始,以*/结尾,不能有多余的,有也只能在/* 和*/里面。注意,比如“/***注释部分*****/*/”是错误的!
答案及评析:(1)错误:for(j=0;j<n-1;j++) ;正确:for(j=0;j<n-1;j++) (2)错误:a[p]=t; 正确:a[j]=t;
【解析】错误 1:根据 C 语言语法,for 循环中循环条件后不加分号,除非做空操作。 错误 2:将两数进行交换的常用语句,借助第三个变量。 3. 编程题 下列程序定义了 N×N 的二维数组,并在主函数中赋值。请编写函数 fun(),函数的功能 是:求出数组周边元素的平方和并作为函数值返回给主函数中的 s。例如:若 a 数组中的 值为