国家二级(C语言)机试模拟试卷878
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun( )的功能是将形参s所指字符串中下标为奇数的字符按ASCII值大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新的字符串。
例如,形参s所指的字符串为\\
(1)t=i(2)i(3)’\0’或0
解析:本题中第1个for循环的作用是得到字符串的长度,第2个for循环的作用是对下标为奇数的字符按ASCII值大小排序,最后将已排序字符串中下标为奇数的字符取出。
填空1:本题用选择法进行排序,先取出待比较的字符,即下标为i的字符,将i赋值给t。再与其后面的每个字符比较。故空1处应该填i。填空2:此处for循环语句的作用是对下标为奇数的元素进行排序操作,所以循环变量初值应填入i。故空2处应该填i。填空3:将下标为奇数的字符取出后,存入p所指的数组中,最后不要忘记在数组最后加入字符串结束标志\\
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun( )的功能是用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num)为止。
π/4≈1-1/3+1/5-1/7+…
例如,程序运行后,输入0.0001,则程序输出3.1414。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main( )函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
#include
float fun(float num)
{
int s;
float n,t,pi;
t=1;pi=0;n=1;s=1;
/*********found*********/
while(t>=num)
{
pi=pi+t;
n=n+2;
s=-s;
/*********found*********/
t=s%n;
}
pi=pi*4;
return pi;
}
void main( )
{
float;n1,n2;
system(\\
(1)while(fabs(t)>=num)(2)t=s/n;
解析:(1)函数fun中while语句的作用是当新的一项t大于给定参数时,将新项t累加至变量pi中。题目要求最后一项的绝对值小于给定参数,因此循环条件应修改为while(fabs(t)>=num)。(2)变量大的值等于s/n,而不是s%n。
程序设计题
3.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun( ),其功能是删除—个字符串中指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。
例如,输入一个字符串\\
void fun(char a[],char b[],int n)
{
int i,k=0;
for(i=0;a[i]!=’\0’;i++)
if(i!=n) /*将不是指定下标的字符存入数组b中*/
b[k++]=a[i];
b[k]=’\0’; /*在字符串最后加上字符串结束标志*/
}
解析:本题要求删除字符串中指定下标的字符,即把非指定下标的字符保留。所以if语句条件表达式为\\
本文档预览:3600字符,共2054字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载