1.填空题 请补充main函数,该函数的功能是:从一个字符串中截取前面若干个给定长度的子字符串。其中,str1指向原字符串,截取后的字符存放在str2所指的字符数组中,n中存放需截取的字符个数。 例如:当str1=“cdefghij”,然后输入4,则str2=“cdef”。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #define LEN 80 main() { char str1[LEN],str2[LEN]; int n,i; clrscr(); printf("Enter the string:
"); gets(str1); printf("Enter the position of the string deleted:"); scanf(【1】); for(i=0;i【2】 str2[i]=’ ’; printf("The new string is:%s
",【3】); } 答案及评析:【1】″%d″,&n 【2】str2[i]=str1[i]; 【3】str2 【解析】填空1:本题考查对标准输入函数scanf()的调用格式,由后面的程序可以知道,变量n保存了要截取的字符数,注意在n前面不要忘了取址符‘ &’。填空2:截取前n个字符,就是将字符串str1的前n个字符依次赋给字符串str2的前n个字符。填空3:本题考查对标准输出函数printf()的调用格式,根据题意,应输出截取后的字符串,即字符串str2。 2. 改错题 下列给定程序中,函数fun()的功能是:依次取出字符串中所有的字母,形成新的字符串,并取代原字符串。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include void fun(char *s) {int i,j; for(i=0,j=0; s[i]!= ’ ’; i++) /**********************found***********************/ if((s[i]>= ’A’&&s[i]<= ’Z’)&&(s[i]>= ’a’&&s[i]<= ’z’)) s[j++]=s[i]; /**********************found***********************/ s[j]= " "; } main() { char item[80]; clrscr(); printf("
Enter a string: "); gets(item); printf("
The string is:%s
",item); fun(item); printf("
The string of changing is :%s
",item); } 答案及评析:(1)错误:if((s[i]>= ’A’&&s[i]<= ’Z’)&&(s[i]>= ’a’&&s[i]<= ’z’)) 正确:if((s[i]>= ’A’&&s[i]<= ’Z’)||(s[i]>= ’a’&&s[i]<= ’z’))(2)错误:s[j]= " ";正确:s[j]=’ ’; 【解析】错误1:字母包括小写字母和大写字母,这里是"或"的关系,所以用"||"运算符。 错误2:字符串的结束标志符为字符,而不是字符串。 3. 编程题 下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),该函数的功能是:使数组右上半三角元素中的值全部置成0。例如a数组中的值为 a=4 5 6 1 7 9 3 2 6, 则返回主程序后a数组中的值应为 0 0 0 1 0 0 3 2 0 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include #define N 5 int fun (int a[][N]) { } main() { int a[N][N],i,j; clrscr(); printf("*****The array*****
"); for(i=0;i{ for(j=0;j{a[i][j]=rand()%10; printf("%4d", a[i][j]); } printf("
"); } fun(a); printf("THE RESULT
"); for(i=0;i{ for(j=0;jprintf("%4d",a[i][j]); printf("
"); } } 答案及评析: int fun (int a[][N]) { int i,j; for(i=0;ifor(j=i;ja[i][j]=0; /*将数组右上半三角元素中的值全部置成0*/ } 【解析】本题旨在考查控制数组中右上半三角元素的算法,也就是两个千篇一律的循环语句,希望学习者能够掌握消化。
相关资料
|