最新全国计算机等级考试二级《C语言程序设计》考试上机考试必读

上传人:大米 文档编号:568244969 上传时间:2024-07-23 格式:PDF 页数:9 大小:150.88KB
返回 下载 相关 举报
最新全国计算机等级考试二级《C语言程序设计》考试上机考试必读_第1页
第1页 / 共9页
最新全国计算机等级考试二级《C语言程序设计》考试上机考试必读_第2页
第2页 / 共9页
最新全国计算机等级考试二级《C语言程序设计》考试上机考试必读_第3页
第3页 / 共9页
最新全国计算机等级考试二级《C语言程序设计》考试上机考试必读_第4页
第4页 / 共9页
最新全国计算机等级考试二级《C语言程序设计》考试上机考试必读_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《最新全国计算机等级考试二级《C语言程序设计》考试上机考试必读》由会员分享,可在线阅读,更多相关《最新全国计算机等级考试二级《C语言程序设计》考试上机考试必读(9页珍藏版)》请在金锄头文库上搜索。

1、最新全国计算机等级考试二级 C 上机考试必读作者:不详来源:http:/2005 年 10 月 26 日一、上机改错题的特点和注意事项一、上机改错题的特点和注意事项1上机改错的试题中通常包含两个(或三个)错误需要修改。2试题中用*found*/来提示在下一行(或下面第二行)有错。3错误的性质基本分语法错和逻辑错两种,也有些试题要求把语句添加在下划线处。4特别要注意的是:只能在出错的行上进行修改,不要改动程序行的顺序,更不要自己另编程序。二、上机改错测试时,建议按以下步骤进行二、上机改错测试时,建议按以下步骤进行1首先仔细审题,了解试题的要求,看清楚试题给出的输入和输出例示,以便检验改错后程序运

2、行的结果是否正确。2当在 TURBOC 环境下调出源程序后,审视/*found*/所在函数,根据题义理解程序所采用的基本算法,做到心里有数。3先按 F9 对测试程序进行检查是否有语法错误。当编译提示有语法错时,可参考编译提示来查找并改正错误。4当不再出现语法错时,使用 CTRL+F9 执行,按照试题的示例给出的数据进行试算,若试算的结果与给出的输出结果相同时,该题就做对了;若试算的结果与给出的输出结果不同,就应进一步检查程序中的逻辑错误。5当程序存在逻辑错误时,首先应当理解题意、读懂程序的算法,必要时可按步检查数据的流程,以便确定错误所在。例如,题目要求数据按由小到大排序,而结果数据是按由大到

3、小进行了排序,问题可能出现在条件判断上。又如,输出的字符串比预期的短,就有可能字符串的结束标志放错了位置。再如做循环的时候数组上限下限错误了,基数是从 0 开始而不是 1 开始的。修改程序中的逻辑错时,要求考生认真读懂程序代码。6修改完成,得到正确结果后,一定不要忘记把修改后的程序存盘。三、上机编程题的特点和说明三、上机编程题的特点和说明在二级 C 程序设计上机考试中,要求完成一个独立的函数的编程。目前教育部考试中心已出版了上机考试习题集,这些有助于学习编程,但考生应当在学习过程中理解基本的算法,通过实际上机操作积累经验,才能掌握基本的编程能力。四、进行编程测试时,建议按以下步骤进行四、进行编

4、程测试时,建议按以下步骤进行1首先仔细审题,了解试题的要求,记下试题给出的输入和输出例示,以便检验在完成指定的函数后程序运行的结果是否正确。2当在 TURBOC 环境下调出源程序后,应对照函数首部的形参,审视主函数中调用函数时的实参内容,以便明确在函数中需要处理的数据对象。3理解试题的要求,审视主函数中调用函数的方式,若在表达式中调用函数(如把函数值赋给某个对象),则要求有函数值返回,需注意函数的类型,并在函数中用 return 语句返回函数值;若主函数中仅用语句形式调用函数,则需要通过形参间接地返回所得结果。4选择适当的算法进行编程,输入程序语句。不要忘记及时存盘!5编译程序,直到没有语法错

5、误。6调试程序,利用试题中给出的例示数据进行输入(若要求输入的话),运行程序,用例示的输出数据检验输出结果,直到结果相同。对一些 C 编程时常犯的错误,特别写给各位学员以供参考。1.书写标识符时,忽略了大小写字母的区别。main()inta=5;printf(%d,A);编译程序把 a 和 A 认为是两个不同的变量名,而显示出错信息。C 认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。2.忽略了变量的类型,进行了不合法的运算。main()floata,b;printf(%d,a%b);%是求余运算,得到 a/b 的整余数。整型变量 a 和 b

6、可以进行求余运算,而实型变量则不允许进行“求余”运算。3.将字符常量与字符串常量混淆。charc;c=a;在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C 规定以“”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:a和,而把它赋给一个字符变量是不行的。4.忽略了“=”与“=”的区别。在许多高级语言中,用“=”符号作为关系运算符“等于”。如在 BASIC 程序中可以写if(a=3)then但 C 语言中,“=”是赋值运算符,“=”是关系运算符。如:if(a=3)a=b;前者是进行比较,a 是否和 3

7、 相等,后者表示如果 a 和 3 相等,把 b 值赋给 a。由于习惯问题,初学者往往会犯这样的错误。5.忘记加分号。分号是 C 语句中不可缺少的一部分,语句末尾必须有分号。a=1b=2编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。z=x+y;t=z/100;printf(%f,t);对于复合语句来说,最后一个语句中最后的分号不能忽略不写。6.多加分号。对于一个复合语句,如:z=x+y;t=z/100;printf(%f,t);复合语句的花括号后不应再加分

8、号,否则将会画蛇添足。又如:if(a%3=0);I+;本是如果 3 整除 a,则 I 加 1。但由于 if(a%3=0)后多加了分号,则 if 语句到此结束,程序将执行 I+语句,不论 3 是否整除 a,I 都将自动加 1。再如:for(I=0;I5;I+);scanf(%d,&x);printf(%d,x);本意是先后输入 5 个数,每输入一个数后再将它输出。由于 for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。7.输入变量时忘记加地址运算符“&”。inta,b;scanf(%d%d,a,b);这是不合法的。Scanf 函数的作用是:按照 a、b 在内存的地址将

9、a、b 的值存进去。“&a”指 a在内存中的地址。8.输入数据的方式与要求不符。scanf(%d%d,&a,&b);输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:3,4输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键 tab。scanf(%d,%d,&a,&b);C 规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的:3,4此时不用逗号而用空格或其它字符是不对的。343:4又如:scanf(a=%d,b=%d,&a,&b);输入应如以下形式:a=3,b=49.输入字符的格式与要求不一致。在用“

10、%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。scanf(%c%c%c,&c1,&c2,&c3);如输入 abc字符“a”送给 c1,字符“”送给 c2,字符“b”送给 c3,因为%c 只要求读入一个字符,后面不需要用空格作为两个字符的间隔。10.输入输出的数据类型与所用格式说明符不一致。例如,a 已定义为整型,b 定义为实型a=3;b=4.5;printf(%f%dn,a,b);编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。11.输入数据时,企图规定精度。scanf(%7.2f,&a);这样做是不合法的,输入数据时不能规定精度。12.switch

11、语句中漏写 break 语句。例如:根据考试成绩的等级打印出百分制数段。switch(grade)caseA:printf(85100n);caseB:printf(7084n);caseC:printf(6069n);caseD:printf(=2)位的整数,函数求出 w 的后 n-1 位的数作为函数值返回。例如:w 值为 5923,则函数返回 923;w 值为 923 则函数返回 23。unsignedfun(unsignedw)if(w=10000)returnw%10000;if(w=1000)returnw%1000;if(w=100)returnw%100;returnw%10;注

12、:由于 unsigned 型整数在 0-65535 这间,只要它大于 10000 则对 10000 求余即得出后面 4 位,否则如果大于 1000 则对 1000 求余得出后 3 位数,这样一层一层往小的判断。由于 return 的作用除了返回值以外,还有当执行到 return 时就跳出该程序,所以可以连续的用 if()语句。4、请编一函数 voidfun(intttMN,intppN),tt 指向一个 M 行 N 列的二维数组,求出二维数组每列中最小元素,并依次放入 pp 所指一维数组中,二维数组中的数已在主函数中赋予。#defineM3#defineN4voidfun(intttMN,in

13、tppN)inti,j;for(i=0;ipp=tt0i;for(j=0;jif(ttji/*注:该题用 for(i=0;i;j+)用于控制同列内元素的比较。多重循环的嵌套总是最里层循环变化最快,即外层循环改变一个值,内层循环就要循环完一次,对于多重循环一定要好好去体会和理解,在多数题目中都要用到多重循环(一般为二重)。*/5、请编一个函数 fun,其中 n 所指存储单元中存放了数组中元素的个数。函数的功能是:删除所有值为 y 的元素。数组元素中的值和 y 的值由主函数通过健盘读入。试题程序。#defineM20voidfun(intbb,int*n,inty)inti,j=0;for(i=0

14、;i*n;i+)if(bbi!=y)bbj+=bbi;*n=j;/*注:该题的算法是,用 for()循环控制元素逐一判断数组元素是否等于 y,若不等则赋给新数bb,由于删除的关系 j 总是小于或等于 i,故而可用 bb 作为新数组,与第 6 题相似。还要注意*n=j;如果没有这个语句则不能传回新数组的个数,另外也不能换成 n=&j;这点是用指针时常犯的错误,切记!*/6、请编写一个函数 intfun(intx),它的功能是:判断整数 x 是否是同构数。若是同构数,函数返回 1;否则返回 0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数 5,5 的平方数是25,5 是 2

15、5 中右侧的数,所以 5 是同构数。x 的值由主函数从健盘读入,要求不大于 100。intfun(intx)intxx=x*x;if(xx=x/xx%10=x/xx%100=x)return1;elsereturn0;/*注:由“同构数”的定义可得只要求出平方数或平方数的最后一位或平方数的最后两位然后与 x 进行判断即可,分别求余后即得出平方数的右边。*/7、请编写函数 fun,它的功能是:求出 ss 所指字符串中、指定字符的个数,并返回此值。例如:若输入字符串:123412132,输入字符为:1,则输出:3。#defineM81intfun(char*ss,charc)intnum=0;wh

16、ile(*ss!=0)if(*ss=c)num+;ss+;return(num);/*注:本题用 while()循环来控制字符的移动,每移动一个字符都要进行判断(if(*ss=c))是否为指定的字母,若是则个数加 1。这里要注意如何让 ss 指针向下走动(ss+)。*/8、请编写函数 fun,经的功能是:求出 1 到 1000 之内能被 7 或 11 整除、但不能同时补 7 和 11整除的所有整数并将它们放在 a 所指的数组中,通过 n 返回这些数的个数。voidfun(int*a,int*n)inti,m=0;for(i=1;i1000;i+)if(i%7=0)/(i%11=0)&!(i%7

17、=0)&(i%11=0)am=i;m+=1;*n=m;/*该题关键就是如何表示能被 7 或 11 整除,但不能同时被 7 和 11 整除。用(i%7=0)/(i%11=0)来表示能被 7 或 11 整除,用!(i%7=0)&(i%11=0)来表示不能同时被 7 和 11 整除。9、定义了 N*N 的二维数组,并在主函数中自动赋值。请编写函数 fun(intaN),函数的功能是:使数组第一行元素中的值与最后一行元素中的值对调、第二行元素的值与倒数第二行中的值对调、其他依次类推。#defineN5fun(intaN)inti,m,t;for(m=0;mfor(i=0;it=aim;aim=aN-1

18、-im;aN-1-im=t;/*外层 for()循环用于控制一列一列地移动,内嵌的 forr()循环用于控制在同一列内对应行元素的对调。aim为第 m 列第 i 行元素,而 aN-1-im为第 m 列倒数第 i 行的元素,正好需要对调。*/10、要求程序的功能是:把 20 个随机数存入一个数组,然后输出该数组中的最小值。其中确定最小值的下标的操作在 fun 函数中实现,请给出该函数的定义。试题程序。#include#include#defineVSIZE20intvectorVSIZE;intfun(intlist,intsize)inti,j=0;for(i=1;iif(listij=i;returnj;/*注:该题的算法是用一个变量(j)来存储最小值元素的下标,在循环过程中让每个元素都与原最小值元素进行大小比较(if(listi

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号