国家二级C语言机试(操作题)模拟试卷636
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是:判断形参s所指字符串是否是”回文”(Palindrome),若是,函数返回值为1;不是,函数返回值为0。”回文”是正读和反读都一样的字符串(不区分大小写字母)。
例如,LEVEL和Leve1是\\
(1)s
(2)–
(3)return0
解析:填空1:根据函数体fun中,对变量lp和叩的使用可知,lp应指向形参s的起始地址,rp指向s的结尾地址,所以应填s。
填空2:rp是指向字符串的尾指针,当每做一次循环rp向前移动一个位置,所以应填:–。
填空3:当lp和rp相等时,表示字符串是回文并返回1,否则就返回0,所以应填return0。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串之后。
例如,当s所指的字符串为“ABCDE”时,t所指的字符串应为“EDCBAABCDE”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
void fun(char*s,char*t)
{
/*********found*********/
int i;
s1=strlen(s);
for(i=0,i<s1;i++)
/*********found*********/
t[i]=s[s1-i];
for(i=0;i<=s1;i++)
t[s1+i]=s[i];
t[2*s1]=’\0’;
}
void main()
{
char s[100],t[100];
system(\\
(1)int i,s1;
(2)t[i]=s[s1-i-1];
解析:(1)变量s1没有定义。
(2)该循环实现将s串中的字符逆序存入t串中,t[i]对应s串中的s[s1-i-1]。
程序设计题
3.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun,其功能是将形参s所指字符串放人形参a所指的字符数组中,使a中存放同样的字符串。说明:不得使用系统提供的字符串函数。
注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun指定的部位填入所编写的若干语句。
试题程序:
#include<stdio.h>
#define N20
void NONO();
void fun(char*a,char*s)
{
}
main()
{char s1[N],*s2=\\
void fun(char*a,char*s)
{while(*s!:’\0’)
{*a=*s;
a++;
s++;
}
*a=’\0’;
}
解析:要将s所指的字符串存入a所指的字符串中,程序要求不能使用系统提供的字符串函数,本题可以使用循环语句,依次取出a所指字符串中的元素,将其存入s所指的字符串中,最后为s所指的字符串添加结束标识’\0’。
本文档预览:3600字符,共2011字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载