计算机等级考试(国家)-二级c语言笔试操作题分类模拟题1.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二级C语言笔试操作题分类模拟题1
一、程序填空题
1>下列给定程序中,函数fun的功能是计算下式:
〜一I + 3 . 5 上.(2xn- 1)
22 4、 6 (2xn)3
(写n - 1)
直到(2xn)2we,并将计算结果作为函数值返同。
例如,若形参e的值为le-3,函数的返回值为2.985678。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio. h>
double fun(double e)
int i;double s,x;
found* **************
s = 0 ; i=;
x=l・ 0;
while (x>e) (
************** * found* ***************/
/★★****★**★** found* ************** x=(2.0*i-l)/(2.0*i);
s=s+x;
)
return s;
}
main()
double e=le-3;
printf (,f\nThe result is : %f \n n , fun (e)); }
二、程序改错题
2、下列给定程序中,函数fun的功能是:将s所指字符串的正序和反序进行连接,形成的新串放在t 所指的数组中。
例如,当S所指字符串为、'ABCD〃时,t所指字符串中的内容应为''ABCDDCBA〃。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#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-l-i];
/★★★★★★★★★★★★found火 *************
t[2*d-l]='\0 ) main()
char s [100] ,t [100];
printf(n\nPlease enter string S:H); scanf("%s"z s);
fun(s,t);
printf(n\nThe result is:%s\n n,t);
}
三、程序设计题
3、编写函数firn,其功能是:将s所指字符串中除了下标为奇数,同时ASC工工码值也为奇数的字符之外,其余的所有字符全部删除,串中剩余字符所形成的一个新串放在t所指的数组中。
例如,若S所指字符申的内容为、'ABCDEFG:L2345〃,其中字符A的ASCII码值为奇数,但所在元素的下标为偶数,因此需要删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他依此类推。
最后t所指数组中的内容应为''135〃。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdio. h>
#include< string • h>
void fun (char*s, char t [])
main()
{
char s [00] ,t [100];
printf(H\nPlease enter string s:n);
scanf("%s"z s);
fun(s,t);
printf(H\nThe result is:%s\n n,t);
}
答案:
一、程序填空题
0 i + +或+ + i或i + = l或i = i + l 2.0*i
[解析]
填空1:循环变量1从开始参加运算,但是在每次循环的开始i都进行自加]操作,故i应赋初值为0。
填空2:循环变量i自增]运算。
填空3:根据公式确定表达式通项。
注意x为double类型,故应将i变为double类型再进行运算。
二、程序改错题
2、(1)void fun (char*s,char*t)
(2)t[2*d]='\01;或t[d+i] = '\0 1;或t[2*d]=0;或t[d+i]=0;
[解析](1)从调用函数来看,函数传递的是数组,所以函数的形参应为指针。
(2)循环结束后回文字符的个数为2*d个,因为数组下标是从0开始的,所以最后一个字符的下标为2*d-1,在最后-,个字符的后面加上结束符1 \0 ',因此为t [2*d] =,\0,;。
三、程序设计题
3、void fun(char*s,chart[])
{
int i,j =0,n;
n=strlen(s);
for (i = 0 ; i<n; i + + )
if (i%2!=0&&s[i]%2!=0)
(t [j] =s [i] ; /*将下标为奇数同时ASCII码值为奇数的字符放入数组t中*/
j++;
} …
t [ j ] = * \0 ' ; /*最后加上结束标识符*/
)
[解析]本题要求除了下标为奇数同时ASCII码值也为奇数的字符之外,其余的所有字符都删除。
即要留下下标为奇数同时ASCII码值也为奇数的字符。
所以if的条件语旬中应使用if (i%2!=0&& s[i]%21=0)o。