国家二级C语言机试(操作题)模拟试卷563
程序填空题
1.下列给定程序中,函数fun的功能是:将形参S所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参P所指字符数组中,形成一个新串。
例如,形参s所指的字符为“baawrskjghzlicda”,执行后P所指字符数组中的字符串应为“aachjlsw”。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
void fun(char* s,char *p)
{ int i , j , n , x , t;
n=0;
for(i=0;s[i]!=’\0’;i++)n++;
for(i=1;i<n一2;i=i+2){
/*********found*********/
【1】;
/*********found*********/
for(j=【2】+2;j<n;j=j+2)
if(s[t]>s[j])t=j;
if(t!=1)
{x=s[i];s[i]=s[t];s[t]=x;}
}
for(i=1,j=0;i<n;i=i+2,j++)
P[j]=s[i];
/*********found*********/
p[j]=【3】;
}
main()
{ char s[80]=\\
(1)t=i
(2)i或t
(3)’\0’或0
解析:本题中第1个for循环的作用是得到字符串的长度,第2个for循环的作用是对下标为奇数的字符按ASCII:码大小排序,最后将排好序的字符取出。
填空1:取出字符串中下标为奇数的字符,所以将下标i赋值给中间变量t。
填空2:此处for循环语句的作用是实现对下标为奇数的元素进行排序操作,所以循环变量初值应填入i或t;。
填空3:将下标为奇数的字符取出后,存入p所指的数组中,最后不要忘记在数组最后加入字符串结束标识‘\0’。
程序修改题
2.下列给定程序中,函数fun的功能是:用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num)为止。
(1)while(fabs(t)>=num)
(2)t=s/n;
解析:(1)函数fun中while语句的作用是,当新的一项大于给定参数时,循环累计计算s的值。题目要求最后一项的绝对值小于给定参数,因此循环条件应当是while串,所以每循环一次要使指针向后移动一个位置,而不是将指针所指的元素加1。
(2)变量t用来存放最后一项的值,因为每一项均为1或一1除以一个数,所以此处应使用除法运算符“/”。
程序设计题
3.编写函数fun,其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。
例如,输入一个字符串“World”,然后输入3,则调用该函数后的结果为“Word”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#define LEN 20
void fun(char a[],char b[],
int n)
{
}
void main()
{
char strl[LEN],str2[LEN];
int n;
system(\\
voild fun(char a[],char b[],int n)
{
int i,k=0;
for(i=0;a[i]!=’\0’;i++)
if(i!=n) /*将不是指定
下标的字符存入数组b中*/
b[k++]=a[i];
b[k]=’\0’; /*在字符串最后加上结束标识*/
}
解析:本题要求删除字符串中指定下标的字符,即把非指定下标的字符保留,所以if语句条件表达式的内容是if(i!=n)。字符串最后不要忘记加上字符串结束标识’\0’。
本文档预览:3600字符,共2476字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载