国家二级(C语言)机试模拟试卷995
程序填空题
1.使用VC++2010打开考生文件夹下blankl中的解决方案。此解决方案的项目中包含一个源程序文件blankl.c。在此程序中,函数fun()的功能是计算下式。
直到
(1)0 (2)i++或++i或i+=1或i=i+1
(3)2.0*i
解析:填空1:循环变量i从1开始参加运算,但是在每次循环的开始i都进行自增1操作,故i应赋初值0。故空1处应该填0。
填空2:循环变量i自增1运算。故空2处应该填i自增1。
填空3:根据求解公式的通项,分母为(2*n)的平方。因为通项的值为double型,故空3处应该填2.0*i。
程序修改题
2.使用VC++2010打开考生文件夹下modil中的解决方案。此解决方案的项目中包含一个源程序文件modil.c。在此程序中,函数fun()的功能是将s所指字符串的正序和反序进行连接,形成的新字符串放在t所指的数组中。
例如,当s所指字符串为“ABCD”时,t所指字符串中的内容应为“ABCDDCBA”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include <conio.h>
#include <stdio.h>
#include <string.h>
/*********found*********/
void fun(char s,char t)
{
int i,d;
d=strlen(s);
for(i=0;i<d;i++)
t[i]=S[i];
for(i=0;i<d;i++)
t[d+i]=s[d-1-i];
/*********found*********/
t[2*d-1]=’\0’;
}
main()
{
char s[100],t[100];
printf(\\
(1)void fun(char *s,char *t)
(2)t[2*d]=’\0’;或t[d+i]=’\0’;或t[2*d]=0;或t[d+i]=0;
解析:(1)从调用函数来看,函数传递的是数组,所以函数的形参s和t应为指针类型。
(2)循环结束后字符串t的元素个数为2*d。因为数组下标是从0开始的,所以最后一个字符的下标为2*d-1,在最后一个字符的后面加上字符串结束标志’\0’,因此为t[2*d]=’\0’;。
程序设计题
3.使用VC++2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件progl.c。在此程序中,编写函数fun(),其功能是将s所指字符串中除了下标为奇数同时ASCII值也为奇数的字符之外的其余所有字符全部删除,字符串中剩余字符所形成的一个新字符串存放在t所指的数组中。
例如,若s所指字符串的内容为“ABCDEFG12345”,其中字符A的ASCII值为奇数,但所在元素的下标为偶数,因此需要删除;而字符I的ASCII值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指数组中的内容应为“135”。
注意:部分源程序给出如下。
请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。
试题程序:
#include <conio.h>
#include <stdio.h>
#include <string.h>
void fun(char *s,char t[])
{
}
main()
{
char s[100],t[100];
printf(\\
void fun(char *s,char t[])
{
int i,j=0,n;
n=strlen(s);
for(i=0;i<n;i++)
if((i%2)&&(s[i]%2))
{
t[j++]=s[i]; /*将下标为奇数同时ASCII值也为奇数的字符放入数组t中*/
}
t[j]=’\0’; /*最后加上字符串结束标志*/
}
解析:本题要求保留下标为奇数同时ASCII值也为奇数的字符,其余的所有字符都删除。将s字符串中,满足条件的字符存放到字符串t中。if的条件表达式为if(i%2!=0&&s[i]%2!=0)。
本文档预览:3600字符,共2551字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载