全国计算机二级c语言上机题库

上传人:飞*** 文档编号:2663037 上传时间:2017-07-26 格式:DOC 页数:34 大小:201.50KB
返回 下载 相关 举报
全国计算机二级c语言上机题库_第1页
第1页 / 共34页
全国计算机二级c语言上机题库_第2页
第2页 / 共34页
全国计算机二级c语言上机题库_第3页
第3页 / 共34页
全国计算机二级c语言上机题库_第4页
第4页 / 共34页
全国计算机二级c语言上机题库_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《全国计算机二级c语言上机题库》由会员分享,可在线阅读,更多相关《全国计算机二级c语言上机题库(34页珍藏版)》请在金锄头文库上搜索。

1、上机题的特点和注意事项一、 上机改错题的特点和注意事项1上机改错的试题中通常包含两个(或三个)错误需要修改。2试题中用*found*/来提示在下一行(或下面第二行)有错。3错误的性质基本分语法错和逻辑错两种,也有些试题要求把语句添加在下划线处。4特别要注意的是:只能在出错的行上进行修改,不要改动程序行的顺序,更不要自己另编 程序。二、 上机改错测试时,建议按以下步骤进行1首先仔细审题,了解试题的要求,看清楚试题给出的输入和输出例示,以便检验改错后程序运行的结果是否正确。2调出源程序后,审视/*found*/所在函数,根据题义理解程序所采用的基本算法,做到心里有数。3先对测试程序进行检查是否有语

2、法错误。当编译提示有语法错时,可参考编译提示来查找并改正错误。4当不再出现语法错时,执行程序, 按照试题的示例给出的数据进行试算,若试算的结果与给出的输出结果相同时,该题就做对了;若试算的结果与给出的输出结果不同,就应进一步检查程序中的逻辑错误。5当程序存在逻辑错误时,首先应当理解题意、读懂程序的算法,必要时可按步检查数据的流程,以便确定错误所在。例如,题目要求数据按由小到大排序,而结果数据是按由大到小进行了排序,问题可能出现在条件判断上。又如,输出的字符串比预期的短,就有可能字符串的结束标志放错了位置。再如做循环的时候 数组上限下限错误了 ,基数是从 0 开始 而不是 1 开始的。修改程序中

3、的逻辑错时,要求考生认真读懂程序代码。 6修改完成,得到正确结果后,一定不要忘记把修改后的程序存盘。三、 上机编程题的特点和说明在二级 C 程序设计上机考试中,要求完成一个独立的函数的编程。目前教育部考试中心已出版了上机考试习题集,这些有助于学习编程,但考生应当在学习过程中理解基本的算法,通过实际上机操作积累经验,才能掌握基本的编程能力。四、 进行编程测试时,建议按以下步骤进行1首先仔细审题,了解试题的要求,记下试题给出的输入和输出例示,以便检验在完成指定的函数后程序运行的结果是否正确。2调出源程序后,应对照函数首部的形参,审视主函数中调用函数时的实参内容,以便明确在函数中需要处理的数据对象。

4、3理解试题的要求,审视主函数中调用函数的方式,若在表达式中调用函数(如把函数值赋给某个对象),则要求有函数值返回,需注意函数的类型,并在函数中用 return 语句返回函数值;若主函数中仅用语句形式调用函数,则需要通过形参间接地返回所得结果。4选择适当的算法进行编程,输入程序语句。不要忘记及时存盘!5编译程序,直到没有语法错误。6调试程序,利用试题中给出的例示数据进行输入(若要求输入的话),运行程序,用例示的输出数据检验输出结果,直到结果相同。 五、 对一些 C 编程时常犯的错误,以供参考。1.书写标识符时,忽略了大小写字母的区别。main() int a=5; printf(%d,A);编译

5、程序把 a 和 A 认为是两个不同的变量名,而显示出错信息。C 认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。2.忽略了变量的类型,进行了不合法的运算。main()float a,b; printf(%d,a%b);%是求余运算,得到 a/b 的整余数。整型变量 a 和 b 可以进行求余运算,而实型变量则不允许进行“求余”运算。3.将字符常量与字符串常量混淆。char c; c=a;在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C 规定以“0”作字符串结束标志,它是由系统自

6、加上的,所以字符串“a”实际上包含两个字符:a和0,而把它赋给一个字符变量是不行的。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”也

7、作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。 z=x+y; t=z/100; printf(%f,t); 对于复合语句来说,最后一个语句中最后的分号不能忽略不写。6.多加分号。1)对于一个复合语句, z=x+y; t=z/100; printf(%f,t); ;复合语句的花括号后不应再加分号,否则将会画蛇添足。2)对于 if 语句if (a%3=0);i+;本是如果 3 整除 a,则 i 加 1。但由于 if (a%3=0)后多加了分号,则 if 语句到此结束,程序将执行 i+语句,不论 3 是否整除 a,i 都将自

8、动加 1。3)对于 for 语句for (i=0;i10 时,二者结果就不同了。因为 while 循环是先判断后执行,而 do-while 循环是先执行后判断。对于大于10 的数 while 循环一次也不执行循环体,而 do-while 语句则要执行一次循环体。14.定义数组时误用变量。int n;scanf(%d,&n);int an;数组名后用方括号括起来的是常量表达式,可以包括常量和符号常量。即 C 不允许对数组的大小作动态定义。15.在定义数组时,将定义的“元素个数”误认为是可使用的最大下标值。main() static int a10=1,2,3,4,5,6,7,8,9,10;pri

9、ntf(%d,a10);C 语言规定:定义时用 a10,表示 a 数组有 10 个元素。其下标值由 0 开始,所以数组元素 a10是不存在的。16.初始化数组时,未使用静态存储。int a3=0,1,2;这样初始化数组是不对的。C 语言规定只有静态存储(static)数组和外部存储(exterm)数组才能初始化。应改为:static int a3=0,1,2;17.在不应加地址运算符&的位置加了地址运算符。scanf(%s,&str);C 语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且 scanf 函数中的输入项是字符数组名,不必要再加地址符&。应改为:scanf(%s,str)

10、;第 1 题: m 个人的成绩存放在 score 数组中,请编写函数 fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在 below 中。 答案: #includeint fun(int score,int m,int below) int i,k=0,aver=0;for(i=0;ivoid fun(char *tt, int pp) int i;for (i=0;i0)xxg+=i;k-;main()int m=200,k=5,xx5;fun(m,k,xx);printf(*%dn,k);for(int i=0;ivoid fun (int *s, int t,

11、int *k) int i, max;max=s0;for(i=0;imax) max=si;*k=i;main() int s10,i,k;for(i=0;in。 p=m!/n!(m-n)! 答案:float fun(int m, int n) float p,t=1.0;int i;for (i=1;ifloat fun() float x1=0.0,x0;do x0=x1;x1=cos(x0);while(fabs(x0-x1)1e-6);return x1;main() printf(%fn,fun();第 11 题: 下列程序定义了 nn 的二维数组,并在主函数中自动赋值。请编写函数

12、 fun(int an),该函数的功能是:使数组左下半三角元素中的值全部置成 0。 答案:#define N 5void fun(int aN) int i,j;for(i=0;i#define N 5double fun(int wN) int i,j,k=0;double s=0.0;for(j=0;j#include#define M 3#define N 5void fun(int ttMN, int ppN) int i,j,min;for(j=0;j#include#define M 3#define N 5int fun(int aMN) int i,j,s=0;for(j=0;

13、j10) if(t/10)p=t%10;s=s+p*s1;s1=s1*10;t=t/10;return s;main() int w=12345;printf(%dn,fun(w);第 16 题: 请编写一个函数 float fun(double h),函数的功能是对变量 h 中的值保留 2 位小数,并对第三位进行四舍五入(规定 h 中的值为正数)。 答案:float fun(float h) long t;float s;h=h*1000;t=(h+5)/10;s=(float)t/100.0;return s;main() float h=12.34567;printf(%8.2fn,fu

14、n(h);第 17 题: 请编写一个函数 fun(char *s),该函数的功能是把字符串中的内容逆置。 答案:#includevoid fun(char *s) char ch;int i,m,n;i=0;m=n=strlen(s)-1;while(ivoid fun(int array33) int i,j,temp;for(i=0;i1;i-) for(j=2;jvoid fun(char *s,int num) char t;int i,j;for(i=1;i#includetypedefstruct student int s;struct student *next;STREC;i

15、nt fun(STREC *h) int max;STREC *q=h;max=h-s;do if(q-smax)max=q-s;q=q-next;while(q!=0);return max;void printlink(STREC *head) STREC *p=head;while(p!=NULL) printf(%d ,p-s);p=p-next;printf(n);main() STREC *head,*last=NULL,*p;for(int i=1;is=rand()%100;p-next=NULL;if(last=NULL)head=p;elselast-next=p;last=p;printlink(head);printf(最高分是%dn,fun(head);第 23 题: 请编写函数 fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出 yes,否则返回 0,主函数中输出 no。回文是指顺读和倒读都是一样的字符串。 答案:int fun(cha

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 咨询培训

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