【计算机类职业资格】二级C语言机试-100及答案解析.doc

上传人:towelfact221 文档编号:1325615 上传时间:2019-10-17 格式:DOC 页数:7 大小:34.50KB
下载 相关 举报
【计算机类职业资格】二级C语言机试-100及答案解析.doc_第1页
第1页 / 共7页
【计算机类职业资格】二级C语言机试-100及答案解析.doc_第2页
第2页 / 共7页
【计算机类职业资格】二级C语言机试-100及答案解析.doc_第3页
第3页 / 共7页
【计算机类职业资格】二级C语言机试-100及答案解析.doc_第4页
第4页 / 共7页
【计算机类职业资格】二级C语言机试-100及答案解析.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、二级 C 语言机试-100 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)1.从键盘输入一组小写字母,保存在字符数组 str 中。请补充函数 fun(),该函数的功能是:把字符数组str 中字符下标为奇数的小写字母转换成对应的大写字母,结果仍保存在原数组中。例如,输入“acegikm”,输出“aCeGiKm”。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。试题程序:#include stdio.h#define N 80void fun (char s)in

2、t i=0;while ( 【1】 )if (i%2!=0)si-= 【2】 ;【3】 ;main ()char str N;clrscr ();printf(“/n Input a string:/n“);gets (str);printf(“/n* original string */n“);puts (str);fun (str);printf (“In* new string */n“);puts (str);(分数:30.00)填空项 1:_二、改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun()的功能是:对 N 名学生的学习成绩,按从高到低的顺序找出前叫 m1

3、0)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构试题程序:#include conio.h#include string.h#include stdio.h#include alloc.h#define N 10typedef struct sschar num10;int s;STU;STU *funSTU a, int m)STU bN ,*t;int i, j,k;/*found*/*t=calloc (m, slzeof (STU

4、);for(i=0;iN;i+) bi=ai;for(k=0; km; k+)for (i=j=0;iN;i+)if (bi.sbj.s) j=i;/*found*/tk.num=b j.num;tk.s=bj s;bj.s=0;return t;outresult(STU a,FILE *pf)int i;for (i=0; iN; i+)fprintf(pf, “No=%s Mark-%d/n “,a i .num, ai.s);fprintf(pf, “/n/n “);main ( )STU aN= “A01 “,81, “A02 “,89,“A03 “,66, “A04 “,87, “

5、A05 “,77,“A06 “,90, “A07 “,79, “A08 “,61,“A09 “,80, “Al0 “,71;STU *pOrder;int i, m;clrscr ();printf (“*THE RESULT* /n“);outresult (a, stdout);printf (“/nGive the number of the studentswho have better score: “);scanf (“%d“, while (m10)printf(“lnGive the number of thestudents who have better score: “)

6、;scanf (“%d“, %m);pOrder=fun (a,m);printf(“* THE RESULT*kn“);printf(“The top :/n“);for (i=0; im; i+)printf(“%s %d/n“,pOrderi.num,p0rder i. s);free (pOrder);(分数:30.00)填空项 1:_三、编程题(总题数:1,分数:40.00)3.编写一个函数,从传入的 num 个字符中找出最长的一个字符串,并通过形参指针 max 传回该串地址(用*作为结束输入的标志)。注意:部分源程序给出如下请勿改动主函数 main 和其他函数中的任何内容,仅在函数

7、 fun 的花括号中填入所编写的若干语句。试题程序:#includeconio.h#includestdio.h#includestring.hfun(char (*a) 81, int num, char *max)main ()char ssl0 81,*ps;int n, i=0;clrscr();prlntf(“输入若干个字符串“);gets(ssi);puts(ssi);while(!strcmp(ssi, “*“)=0)/*用*作为结束输入的标志*/i+;gets(ssi);puts(ssi);n=i;ps=fun(ss,n,print(“/nmax=%s/n“,ps);(分数:4

8、0.00)_二级 C 语言机试-100 答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)1.从键盘输入一组小写字母,保存在字符数组 str 中。请补充函数 fun(),该函数的功能是:把字符数组str 中字符下标为奇数的小写字母转换成对应的大写字母,结果仍保存在原数组中。例如,输入“acegikm”,输出“aCeGiKm”。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。试题程序:#include stdio.h#define N 80void fun (char

9、 s)int i=0;while ( 【1】 )if (i%2!=0)si-= 【2】 ;【3】 ;main ()char str N;clrscr ();printf(“/n Input a string:/n“);gets (str);printf(“/n* original string */n“);puts (str);fun (str);printf (“In* new string */n“);puts (str);(分数:30.00)填空项 1:_ (正确答案:1 si!= /0或 si 2 32 或a-A 3 i+)解析:解析 填空 1:while 循环的条件是当前参加判断的字

10、符不为/0,即还没有到字符串的最后一个字符。填空 2:将小写字母转换为对应的大写字母的力法是,将字母的 ASCII 码减去 32。a-A的结果就是 32。填空 3:通过 i+依次访问字符串 s 中的各个字符。二、改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun()的功能是:对 N 名学生的学习成绩,按从高到低的顺序找出前叫 m10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构试题程序:#include conio.h

11、#include string.h#include stdio.h#include alloc.h#define N 10typedef struct sschar num10;int s;STU;STU *funSTU a, int m)STU bN ,*t;int i, j,k;/*found*/*t=calloc (m, slzeof (STU);for(i=0;iN;i+) bi=ai;for(k=0; km; k+)for (i=j=0;iN;i+)if (bi.sbj.s) j=i;/*found*/tk.num=b j.num;tk.s=bj s;bj.s=0;return t;

12、outresult(STU a,FILE *pf)int i;for (i=0; iN; i+)fprintf(pf, “No=%s Mark-%d/n “,a i .num, ai.s);fprintf(pf, “/n/n “);main ( )STU aN= “A01 “,81, “A02 “,89,“A03 “,66, “A04 “,87, “A05 “,77,“A06 “,90, “A07 “,79, “A08 “,61,“A09 “,80, “Al0 “,71;STU *pOrder;int i, m;clrscr ();printf (“*THE RESULT* /n“);outr

13、esult (a, stdout);printf (“/nGive the number of the studentswho have better score: “);scanf (“%d“, while (m10)printf(“lnGive the number of thestudents who have better score: “);scanf (“%d“, %m);pOrder=fun (a,m);printf(“* THE RESULT*kn“);printf(“The top :/n“);for (i=0; im; i+)printf(“%s %d/n“,pOrderi

14、.num,p0rder i. s);free (pOrder);(分数:30.00)填空项 1:_ (正确答案:错误: *t=calloc(m,sizcof(STU); 正确: t=calloc(m,sizeof(STU); (2) 错误: tk.num=bj.num; 正确: tk=bj;)解析:解析 calloc 也用于分配内存空间。调用形式:(类型说明符*)calloc(n,size),功能:在内存动态存储区中分配 n 块长度为“size”字节的连续区域。函数的返回值为该区域的首地址。(类型说明符*)用于强制类型转换。calloc 函数与 malloc 函数的区别仅在于一次可以分配 n

15、块区域。例如: ps=(struet stu*)calloc(2,sizeof(struct stu);,其中的 sizeof(struct stu)是求 stu 的结构长度。因此该语句的意思是:按 stu 的长度分配两块连续区域,强制转换为 stu 类型,并把其首地址赋予指针变量 ps。在本例中我们可别考虑那么复杂厂,根据定义类型 STUbN,*t;就可以看出*t=calloc(m,sizeof(STU);中的错误,tk.num=bj.num;的错误旨在考查对结构体概念的掌握和灵活应用程度。三、编程题(总题数:1,分数:40.00)3.编写一个函数,从传入的 num 个字符中找出最长的一个字

16、符串,并通过形参指针 max 传回该串地址(用*作为结束输入的标志)。注意:部分源程序给出如下请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。试题程序:#includeconio.h#includestdio.h#includestring.hfun(char (*a) 81, int num, char *max)main ()char ssl0 81,*ps;int n, i=0;clrscr();prlntf(“输入若干个字符串“);gets(ssi);puts(ssi);while(!strcmp(ssi, “*“)=0)/*用*作为

17、结束输入的标志*/i+;gets(ssi);puts(ssi);n=i;ps=fun(ss,n,print(“/nmax=%s/n“,ps);(分数:40.00)_正确答案:(fun(char (*a)81, int num, char *max)int i=0;max=a0;for (i=0; inum; i+) /*找出最长的一个字符串*/if(strlen(max)strlen(ai)max=ai;return max; /*传回最长字符串地址*/)解析:解析 做本题之前,我们先应该明白 ss 是一个指向一维数组的指针变量,max 是指向指针变量的指针变量。所以引用时要注意加上*。我们不可能只用 max,因为 ss0是一个数组地址而不是一个指针的地址。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1