1、计算机二级(C)上机考试 13及答案解析(总分:-3.00,做题时间:120 分钟)1.填空题 请补充 main函数,该函数的功能是:从键盘输入一个字符串并保存在字符 str1中,把字符串str1中下标为偶数的字符保存在字符串 str2中并输出。例如,当 str1=“cdefghij”,则str2=“cegi”。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #define LEN 80 main() char str1LEN,str2LEN; char *
2、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】“,*(p1+j); j+; for(i=0;i_2.改错题 下列给定程序中,函数 fun()的功能是逐个比较 a,b 两个字符串对应位置中的字符,把 ASCII值小或相等的字符依次存放到 c数组中,形成一个新的字符串。 例如:a 中的字符串为 fshADfg,b 中的字符串为 sdAEdi,则 c中的字符串应为
3、 fdAADf。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include void fun(char *p,char *q,char *c) int k=0; while(*p|*q) /*found*/ if (*p=*q) (2)错误:k+ 正确:k+; )解析:错误 1:依题意,把 ASCII值小或相等的字符存放到 c数组中,故 if语句的关系运算符应为“=“。 错误 2:C 语言规定,每个语句要用分号结束。 3.编程题 程序定义了 NN的二维数组,并在主函数中自动赋值。请编写函数 f
4、un(int a N ,int n),该函数的功能是使数组左下半三角元素中的值加上 n。 例如:若 n的值为 3,a 数组中的值为 a=2 5 4 1 6 9 5 3 7 则返回主程序后 a数组中的值应为 5 5 4 4 9 9 8 6 10 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include #define N 5 fun(int a N, int n) main() int aNN,n, i,j; clrscr(); printf(“* The arr
5、ay */n“); for(i=0; i=5); printf(“n=%4d/n“,n); fun(a, n); printf(“*THE RESULT*/n“); for(i=0; i_正确答案:(fun(int a N, int n) int i, j; for(i=0; i=i; j+) aij=aij+n; /*使数组左下半三角元素中的值加上 n*/ )解析:首先从数组中找出要被加上 n的那部分元素,找的过程其实就是找出将被挑出的那部分元素在原数组中的分布规律的过程。通过观察得出,要被处理的那部分元素的下标值的范围是每行中从第一个元素开始,直到列数等于该行行数时为止。找到这个规律后,依次从数组中取得合乎要求的元素,然后再加上n。