1、计算机二级(C)上机考试 4及答案解析(总分:-3.00,做题时间:120 分钟)1.填空题 请补充 main函数,该函数的功能是:从键盘输入一个字符串并保存在字符 str1中,把字符串str1中下标为偶数的字符保存在字符串 str2中并输出。例如,当 str1=“cdefghij”,则str2=“cegi”。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #define LEN 80 main() char str1LEN,str2LEN; char *p
2、1=str1,*p2=str2; int i=0,j=0; clrscr(); printf(“Enter the string:/n“); scanf(【1】); printf(“*the origial string*/n“); while(*(p1+j) printf(“【2】“,*(p1+j); j+; for(i=0;i_2.改错题 下列给定程序中,函数 fun()的功能是根据整型形参 m,计算如下公式的值。 y=1-1/(22)+1/(33)-1/(44)+(-1)(m+1)/(mm) 例如:m 中的值为 5,则应输出 0.838611。 请改正程序中的错误,使它能得到正确结果。
3、注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include double fun(int m) double y=1.0; /*found*/ int j=1; int i; for(i=2; is=0; while(is=si; i+; p-next=q; p=q; p-next=NULL; return h; /*返回链表的首地址*/ outlist(STREC *h) STREC *p; p=h; printf(“head“); do printf(“-%2.0f “,p-s);p=p-next; /*输出各分数*/ while(
4、p!=NULL); printf(“/n/n “); main() double sN=56,89,76,95,91,68,75,85, min; STREC *h; h=creat(s); outlist(h); min=fun(h); printf(“min=%6.1f/n “,min); (分数:-1.00)_计算机二级(C)上机考试 4答案解析(总分:-3.00,做题时间:120 分钟)1.填空题 请补充 main函数,该函数的功能是:从键盘输入一个字符串并保存在字符 str1中,把字符串str1中下标为偶数的字符保存在字符串 str2中并输出。例如,当 str1=“cdefghij”
5、,则str2=“cegi”。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #define LEN 80 main() char str1LEN,str2LEN; char *p1=str1,*p2=str2; int i=0,j=0; clrscr(); printf(“Enter the string:/n“); scanf(【1】); printf(“*the origial string*/n“); while(*(p1+j) printf(“【2】
6、“,*(p1+j); j+; for(i=0;i_正确答案:(【1】%s,str1 【2】%c 【3】str2 )解析:填空 1:本题考查对标准输入函数 scanf()的调用格式,当输入字符串时,格式控制字符串为%s,题目要求输入的字符串保存在 str1中,所以地址表列应为字符串的首地址,即为 str1。填空 2:本题考查对标准输出函数 printf()的调用格式,当输出为字符型变量时,格式控制字符串为%c。填空 3:题目要求将 str1中下标为偶数的字符保存在字符串 str2中并输出,所以 printf()函数的输出表列是 str2。2.改错题 下列给定程序中,函数 fun()的功能是根据整
7、型形参 m,计算如下公式的值。 y=1-1/(22)+1/(33)-1/(44)+(-1)(m+1)/(mm) 例如:m 中的值为 5,则应输出 0.838611。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include double fun(int m) double y=1.0; /*found*/ int j=1; int i; for(i=2; is=0; while(is=si; i+; p-next=q; p=q; p-next=NULL; return h; /*返回链表的首地
8、址*/ outlist(STREC *h) STREC *p; p=h; printf(“head“); do printf(“-%2.0f “,p-s);p=p-next; /*输出各分数*/ while(p!=NULL); printf(“/n/n “); main() double sN=56,89,76,95,91,68,75,85, min; STREC *h; h=creat(s); outlist(h); min=fun(h); printf(“min=%6.1f/n “,min); (分数:-1.00)_正确答案:(double fun(STREC *h) double min=h-s; while(h!=NULL) /*通过循环找到最低分数*/ if(minh-s) min=h-s; h=h-next; return min; )解析:在本题中,h 为一个指向结构体的指针变量,若要引用它所指向的结构体中的某一成员时,要用指向运算符“-“。由于是链表,所以要使 h逐一往后移动,使用的是 h=h-next。