1、二级 C 语言机试-191 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:33.00)1.请补充 main 函数,该函数的功能是:从一个字符串中截取前面若干个给定长度的子字符串。其中,str1 指向原字符串,截取后的字符存放在 str2 所指的字符数组中,n 中存放需截取的字符个数。例如:当 str1=“cdefghij”,然后输入 4,则 str2=“cdef”。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。试题程序:#includestdioh#includecon
2、ioh#define LEN 80main()char str1LEN,str2LEN;int n,i;clrscr();printf(“Enter the string:/n“);gets(str1);printf “Enter the position of the string deleted:“);scanf( 【1】 );for(i=0;in;i+)【2】 str2i=/0;printf(“The new string is:%s/n“, 【3】 );(分数:33.00)填空项 1:_二、改错题(总题数:1,分数:33.00)2.下列给定程序中,函数 fun()的功能是:依次取出字符
3、串中所有的字母,形成新的字符串,并取代原字符串。请改正程序中的错误,使它能得到正确结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。试题程序:#includestdioh#includeconiohvoid fun(char*S)int i,j;for(i=0,j=0;si! =/0;i+) /*found*/if(si=A&si=Z)&(si= a&Si=z,)sj+=si;/*found*/sj=“/0“;main()char item80;clrscr();printf(“/nEnter a string:“);gets(item);printf(“/n/nTh
4、e string is:/%s/n“,item);fun (item);printf(“/n/nThe string of changingis:/%S/n“,item);(分数:33.00)填空项 1:_三、编程题(总题数:1,分数:34.00)3.下列程序定义了 NXN 的二维数组,并在主函数中自动赋值。请编写函数 fun(int aN),该函数的功能是使数组右上半三角元素中的值全部置成 0。例如 a 数组中的值为a=4 5 61 7 93 2 6,则返回主程序后 a 数组中的值应为0 0 01 0 03 2 0注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅
5、在函数 fun 的花括号中填入所编写的若干语句。试题程序:#includeconioh#includestdioh#includestdlibh#define N 5int fun(int a N)main()int aNN,i,j;clrscr( );printf(“*The array*/n“);for(i=0;iN;i+)/*产生个随机的 5*5 矩阵*/for(j=0;jN;j+)aij=rand( )%10;printf (“%4d“,aij);printf(“/n“);fun(a);printf(“THE RESULT/n“);for(i=0;iN;i+)for(j=0;iN;j+
6、)printf(“%4d“,aij);printf(“/n“);(分数:34.00)_二级 C 语言机试-191 答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:33.00)1.请补充 main 函数,该函数的功能是:从一个字符串中截取前面若干个给定长度的子字符串。其中,str1 指向原字符串,截取后的字符存放在 str2 所指的字符数组中,n 中存放需截取的字符个数。例如:当 str1=“cdefghij”,然后输入 4,则 str2=“cdef”。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun()的横线上填入所
7、编写的若干表达式或语句。试题程序:#includestdioh#includeconioh#define LEN 80main()char str1LEN,str2LEN;int n,i;clrscr();printf(“Enter the string:/n“);gets(str1);printf “Enter the position of the string deleted:“);scanf( 【1】 );for(i=0;in;i+)【2】 str2i=/0;printf(“The new string is:%s/n“, 【3】 );(分数:33.00)填空项 1:_ (正确答案:1
8、 “%d“,&n 2 str2i=str1i 3 str2)解析:解析 填空 1:本题考查对标准输入函数 scanf()的调用格式,由后面的程序可以知道,变量 n 保存了要截取的字符数,注意在 n 前面不要忘了取址符&。填空 2:截取前 n 个字符,就是将字符串str1 的前 n 个字符依次赋给字符串 str2 的前 n 个字符。填空 3:本题考查对标准输出函数 printf()的调用格式,根据题意,应输出截取后的字符串,即字符串 str2。二、改错题(总题数:1,分数:33.00)2.下列给定程序中,函数 fun()的功能是:依次取出字符串中所有的字母,形成新的字符串,并取代原字符串。请改正
9、程序中的错误,使它能得到正确结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。试题程序:#includestdioh#includeconiohvoid fun(char*S)int i,j;for(i=0,j=0;si! =/0;i+) /*found*/if(si=A&si=Z)&(si= a&Si=z,)sj+=si;/*found*/sj=“/0“;main()char item80;clrscr();printf(“/nEnter a string:“);gets(item);printf(“/n/nThe string is:/%s/n“,item);fu
10、n (item);printf(“/n/nThe string of changingis:/%S/n“,item);(分数:33.00)填空项 1:_ (正确答案:(1)错误:if(si=A&si=Z)&(si=a&si=z)正确:if(si=A&si=Z)|si=a&si=z)(2) 错误:sj=“/0“正确:sj=/0)解析:解析 错误 1:字母包括小写字母和大写字母,这里是“或”的关系,所以用“|”运算符。错误 2:字符串的结束标志符为字符,而不是字符串。三、编程题(总题数:1,分数:34.00)3.下列程序定义了 NXN 的二维数组,并在主函数中自动赋值。请编写函数 fun(int
11、aN),该函数的功能是使数组右上半三角元素中的值全部置成 0。例如 a 数组中的值为a=4 5 61 7 93 2 6,则返回主程序后 a 数组中的值应为0 0 01 0 03 2 0注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。试题程序:#includeconioh#includestdioh#includestdlibh#define N 5int fun(int a N)main()int aNN,i,j;clrscr( );printf(“*The array*/n“);for(i=0;iN;i+)/*产生
12、个随机的 5*5 矩阵*/for(j=0;jN;j+)aij=rand( )%10;printf (“%4d“,aij);printf(“/n“);fun(a);printf(“THE RESULT/n“);for(i=0;iN;i+)for(j=0;iN;j+)printf(“%4d“,aij);printf(“/n“);(分数:34.00)_正确答案:(int fun (int aN) int i,j; for(i=0;iN;i+)for(j=i;jN;j+) aij=0; /*将数组右上半三角元素中的值全部置成 0*/)解析:解析 本题旨在考查控制数组中右上半三角元素的算法,也就是两个千篇一律的循环语句,希望学习者能够掌握消化。