国家二级C语言机试(操作题)模拟试卷578
程序填空题
1.下列给定程序中,函数fun的功能是:把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]…中,把奇数从数组中删除,偶数的个数通过函数值返回。
例如,若a所指数组中的数据最初排列为:9、1、4、2、3、6,5、8、7,删除奇数后,a所指数组中的数据为:4、2、6、8,返回值为4。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#define N 9
int fun(int a[],int n)
{ int i,j;
j=0;
for (i=0;i<n;i++)
/*********found*********/
if(【1】==0){
/*********found*********/
【2】=a[i];j++;
}
/*********found*********/
return【3】;
}
main()
{ int b[N]={9,1,4,2,3,6,5,8,7},i,n;
printf(\\
(1)a[i]%2
(2)a[j]
(3)j
解析:本题考查:if语句条件表达式;数组变量赋值;函数返回值。
填空1:if语句条件表达式,判断数组元素是否为偶数,对2求余,结果为0,则为偶数;结果为1则为奇数。
填空2:如果该数组元素是偶数,则将其值保存。
填空3:最后按要求将偶数个数通过return语句返回给main函数。
程序修改题
2.下列给定程序中,函数fun的功能 是:按以下递归公式求函数的值。
(1)int fun(int n)
(2)if(n==1)
解析:本题考查:有参函数定义;if语句条件表达式中==与=的区别。
(1)定义有参函数时,形参变量要分别定义其类型,根据主函数中的调用函数可知,此处形参变量应定义为int型。
(2)if条件判断表达式中,n=1是赋值表达式,表达式的值永远为真,不能形成判断条件,应将n=l改为n==1。
程序设计题
3.规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:使字符串中尾部的*号不多于n个,若多于n个,则删除多余的*号;若少于或等于n个,则不做任何操作,字符串中间和前面的*号不删除。
例如,字符串中的内容为“****A*BC*DEF*G*******”,若n的值为4,删除后,字符串中的内容应为“****A*BC*DEF*G****”;若n的值为7,则字符串中的内容仍为“****A*BC*DEF*G*******”。n的值在主函数中输入。编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
void fun(char*a,int n)
{
}
main()
{ char s[81];int n;
printf(\\
void fun(char,*a,int n)
{
int i=0,k=0;
char*p,*t;
p=t=a;
/*将指针移动到字符串末尾*/
while(*t)
t++;
t一一;
/*从后往前如果是‘*’则使k++,找到最后一个术所在的位置,并记录‘*’的个数*/
while(*t==’*’)
/*指针t指向前一个,同时标量k增加—*/
{k++;t一一;)
/*如果最后*的个数大于允许的个数*/
if(k>n)
/*循环次数不大于前面的字符与最大允许*的个数之和*/
{while(*p&&p<t+n+1)
/*把字符保存到数组a中*/
{a[i]=*p;
i++;p++;
}
a[i]=’\0’;
}
}
解析:本题考查:循环判断语句;字符串的操作。
字符串中尾部*号不能多于n个,多余的要删除。首先需要通过while循环统计字符串尾部*号,然后通过if条件语句完成尾部*号数和n的比较,若尾部*号数多于n个,则需要把n个*号和其余字符重新保留。
本文档预览:3600字符,共2537字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载