1、国家二级 C语言机试(操作题)模拟试卷 449及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.下列给定程序中,函数 fun的功能是:将形参 8所指字符串中下标为奇数的字符按 ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参 P所指字符数组中,形成一个新串。 例如,形参 S所指的字符为“baawrskjghzlicda”, 执行后 P所指字符数组中的字符串应为“aachjlsw”。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序
2、: #include stdioh void fun(char*s,char*p) int i,j,n,x,t; n=0; for(i=0;si!=/0;i+)n+; for(i=1;i n 一 2;i=i+2) /*found*/ 【1】 ; /*found*/ for(j= 【2】 +2 jj n;j=j+2) if(st sj)t=j; if(t!=i) x=si;si=st;sit=x; for(i=1,j=0;i n;i=i+2,j+) pj=si; /*found*/ pj= 【3】 ; main() char s80=“baawrskj ghzlicda“,p50; printf
3、(“/nThe original string is:s/n“,s); fun(s,p); printf(“knThe result is:sh“,p); (分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:用下面的公式求, 的近似值,直到最后一项的绝对值小于指定的数(参数 nun)为止。 (分数:2.00)_三、程序设计题(总题数:1,分数:2.00)3.编写函数 fun,其功能是:删除一个字符串中指定下标的字符。其中,a 指向原字符串,删除指定字符后的字符串存放在 b所指的数组中,n 中存放指定的下标。例如,输入一个字符串“Wor1d”
4、,然后输入3,则调用该函数后的结果为“Word”。注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#include stdlibh #include stdioh #include conioh #define LEN 20void fun(char a,char b,int n)void main() char str1LEN,str2LEN; int n; system(“CLS“); printf(“Enter the string:/n“); gets(str1); printf(“Enter the
5、position of the string deleted:“); scar1f(“d“,&r1); fun(str1,str2,n); printf(“The Flew string is:s/n“,str2);(分数:2.00)_国家二级 C语言机试(操作题)模拟试卷 449答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.下列给定程序中,函数 fun的功能是:将形参 8所指字符串中下标为奇数的字符按 ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参 P所指字符数组中,形成一个新串。 例如,形参 S所指的字符为“baawrs
6、kjghzlicda”, 执行后 P所指字符数组中的字符串应为“aachjlsw”。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #include stdioh void fun(char*s,char*p) int i,j,n,x,t; n=0; for(i=0;si!=/0;i+)n+; for(i=1;i n 一 2;i=i+2) /*found*/ 【1】 ; /*found*/ for(j= 【2】 +2 jj n;j=j+2) if(st sj)t=j; if(t!=i) x
7、=si;si=st;sit=x; for(i=1,j=0;i n;i=i+2,j+) pj=si; /*found*/ pj= 【3】 ; main() char s80=“baawrskj ghzlicda“,p50; printf(“/nThe original string is:s/n“,s); fun(s,p); printf(“knThe result is:sh“,p); (分数:2.00)_正确答案:(正确答案:(1)t=i (2)i 或 t (3)/0或 0)解析:解析:本题中第 1个 for循环的作用是得到字符串的长度,第 2个 for循环的作用是对下标为奇数的字符按 AS
8、CII码大小排序,最后将排好序的字符取出。 填空 1:取出字符串中下标为奇数的字符,所以将下标 i赋值给中间变量 t。 填空 2:此处 for循环语句的作用是实现对下标为奇数的元素进行排序操作,所以循环变量初值应填入 i或 t;。 填空 3:将下标为奇数的字符取出后,存入 p所指的数组中,最后不要忘记在数组最后加入字符串结束标识/0。二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:用下面的公式求, 的近似值,直到最后一项的绝对值小于指定的数(参数 nun)为止。 (分数:2.00)_正确答案:(正确答案:(1)while(fabs(t) =num) (2)
9、t=s/n;)解析:解析:(1)函数 fun中 while语句的作用是,当新的一项大于给定参数时,循环累计计算 s的值。题目要求最后一项的绝对值小于给定参数,因此循环条件应当是 while (fabs(t)=num)。 (2)变量 t用来存放最后一项的值,因为每一项均为 1或一 1除以一个数,所以此处应使用除法运算符“/”。三、程序设计题(总题数:1,分数:2.00)3.编写函数 fun,其功能是:删除一个字符串中指定下标的字符。其中,a 指向原字符串,删除指定字符后的字符串存放在 b所指的数组中,n 中存放指定的下标。例如,输入一个字符串“Wor1d”,然后输入3,则调用该函数后的结果为“W
10、ord”。注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#include stdlibh #include stdioh #include conioh #define LEN 20void fun(char a,char b,int n)void main() char str1LEN,str2LEN; int n; system(“CLS“); printf(“Enter the string:/n“); gets(str1); printf(“Enter the position of the stri
11、ng deleted:“); scar1f(“d“,&r1); fun(str1,str2,n); printf(“The Flew string is:s/n“,str2);(分数:2.00)_正确答案:(正确答案:void fun (char a, char b, int n) int i,k =0; for(i=0;ai!=/0;i+) 1f(i!=n)/*将不是指定 下标的字符存入数组 b中*/ bk+=ai; bk=/0; /*在字符串最后加上结束标识*/ )解析:解析:本题要求删除字符串中指定下标的字符,即把非指定下标的字符保留,所以 if语句条件表达式的内容是 if(i!=n)。字符串最后不要忘记加上字符串结束标识/0。