国家二级C语言机试(操作题)模拟试卷622
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是:输出a所指数组中的前n个数据,要求每行输出5个数。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stctio.h>
#include<stdlib.h>
void fun(int*a,int n)
{int i;
for(i=0;i<n;i++)
{
/*********found*********/
if(【1】==0)
/*********found*********/
printf(\\
(1)i%5
(2)\n
(3)a[i]
解析:填空1:每行输出5个数,即当下标值能整除5时换行。
填空2:输出换行符’\n’。
填空3:输出数组元素。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。
请改正程序中的错误或在下画线处填上正确的内容并把下画线删除,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<stdio.h>
#define N80
int fun(char*s,char*t)
{int;n;
char*p,*r;
n=0;
/*********found*********/
*r=t;
while(*s)
{
p=s;
while(*r)
{
if(*r==*p)
{
r++;
p++;
}
else
break;
if(*r==’\0’)
n++;
}
/*********found*********/
【1】
s++;
}
return n;
}
void main()
{char a[N],b[N];int m;
printf(\\
(1)r=t;
(2)r=t;或r=&t[0];
解析:从字符串s中找出子字符串的方法是:从第一个字符开始,对字符串进行遍历,若s串的当前字符等于t串的第一个字符,两字符串的指针自动加1,继续比较下一个字符;若比较至字符串t的末尾,则跳出循环;若s串的字符与t串的字符不对应相同,则继续对s串的下一个字符进行处理。
程序设计题
3.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun,该函数的功能是:将s所指字符串中ASCII码值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符B的ASCII码值为偶数,字符2的ASCII码值为偶数,都应当删除,其他依此类推。最后t所指的数组中的内容应是“ACEC135”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<COnio.h>
voidfun(char*s,chart[])
{
}
void main()
{
char s[100],t[100];
system(\\
void fun(char*s,char t[])
{
int i=0;
for(;*s!=’\0’;s++)/*找出Asc工工值为奇数的字符依次存入数组t中*/
if(*s%2==1)
t[i++]=木s;
t[i]=’\0’;/*在字符串的末尾加上串结束符*/
}
解析:要删除ASCII码值为偶数的字符,也就是要留下ASCII码值为奇数的字符。由于最终是要求出剩余字符(即ASCII码值为奇数)形成的新串,所以本题程序的算法是对原字符串从头到尾扫描,并找出ASCII码值为奇数的字符并将其依次存入数组t中。此外,还要注意数组t的下标变化和下标的初值(初值必须为0,即i=0),t[i++]的作用是先使用t[i],然后再使i自增1。
本文档预览:3600字符,共2660字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载