printf(\}
答案及评析:
【1】n/100 【2】″yes!″ 【3】″no!″
【解析】填空1:由程序可以知道,变量g保存了整数的个位数,变量s保存了整数的十位数,所以变量b应该保存整数的百位数。将整数除以100再对10取余,则得到这个整数的百位数。填空2:当个位数字和百位数字之和等于十位数字时,则返回″yes!″。填空3:当个位数字和百位数字之和不等于十位数字时,则返回″no!″。 2. 改错题
下列给定的程序中,函数fun()的功能是:用选择法对数组中的n个元素按从大到小的顺序进行排序。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:
#include
void fun(int a[],int n) {
int i,j,t,p;
/**********************found***********************/
for(j=0;j for(i=j;i /**********************found***********************/ a[p]=t; } } main() { int a[N]={11,32,-5,2,14},i,m=5; printf(\排序前的数据:\ for(i=0;i printf(\排序后的顺序:\ for(i=0;i printf(\ printf(\} 答案及评析: (1)错误:for(j=0;j 【解析】错误1:根据C语言语法,for循环中循环条件后不加分号,除非做空操作。 错误2:将两数进行交换的常用语句,借助第三个变量。 3. 编程题 下列程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun(),函数的功能是:求出数组周边元素的平方和并作为函数值返回给主函数中的s。例如:若a 数组中的值为 a=0 1 2 7 9 1 11 21 5 5 2 21 6 11 1 9 7 9 10 2 5 4 1 4 1 则返回主程序后s的值应为310。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include int fun (int w[][N]) { } main() { int a[N][N]={0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1}; int i, j; int s; clrscr(); printf(\ for (i=0; i {printf(\ printf(\ } s=fun(a); printf(\ printf(\} 答案及评析: int fun (int w[][N]) { int i,j,k=0; int s=0; for(i=0;i if(i==0||i==N-1||j==0||j==N-1) /*只要下标中有一个为0或N-1,则它一定是周边元素*/ {s=s+w[i][j]*w[i][j]; /*将周边元素求平方和*/ } return s; /*返回周边元素的平方和*/ } 【解析】该题采用逐一判断的方式,周边元素的下标一定有一个是0或N-1,且只要下标中有一个为0或N-1,则它一定是周边元素。 模拟试题(九) 1.填空题 请补充main函数,该函数的功能是:从一个字符串中截取前面若干个给定长度的子字符串。其中,str1指向原字符串,截取后的字符存放在str2所指的字符数组中,n中存放需截取的字符个数。 例如:当str1=“cdefghij”,然后输入4,则str2=“cdef”。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include char str1[LEN],str2[LEN]; int n,i; clrscr(); printf(\ gets(str1); printf(\ deleted:\ scanf(【1】); for(i=0;i printf(\【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()的功能是:依次取出字符串中所有的字母,形成新的字符串,并取代原字符串。