国家二级(C语言)机试模拟试卷865
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun( )的功能是根据形参i的值返回某个函数的值。当调用正确时,程序执行后的输出结果为
x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:部分源程序在文件blank1.c中。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include
double f1(double x)
{return x*x;}
double f2(double x,double y)
{EetuEn x*y;)
/*********found*********/
【1】fun(int i,clouble x,double y)
{if(i==1)
/*********found*********/
return 【2】(x);
else
/*********found*********/
return 【3】(x,y);
}
main( )
{double x1=5,x2=3,r;
r=fun(1,x1,x2);
r+=fun(2,x1,x2);
printf(\\
(1)double(2)f1(3)f2
解析:填空1:根据return可知,函数fun( )的返回值无论返回的是f1( )还是f2( ),它们的返回值均为double型的,故空1处应该填double。填空2:函数fun( )的功能是根据形参i的值返回某个函数的值。当i等于1时,应该返回函数f1( )。填空3:如果不满足讧条件语句,应该返回的是函数f2( )。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun( )的功能是比较两个字符串,将长的字符串的首地址作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件modi1.c中,不要改动main( )函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
/*********found*********/
double fun(char*s,char*t)
{
int s1=0,t1=0;
char*ss,*tt;
ss=s;
tt=t;
wh*le(*ss)
{
s1++;
/*********found*********/
(*ss)++;
}
while(*tt)
{
t1++;
/*********found*********/
(*tt)++;
}
if(t1>s1)
return t;
else
return s;
}
void main( )
{
char a[80],b[80];
printf(\\
(1)chat*fun(char*s,char*t)(2)ss++;(3)tt++;
解析:(1)在主函数的输出语句中,函数fun( )以字符串格式%s输出。所以定义函数时应为char*fun(char*s,char*t)。(2)和(3)这里是地址加1,而不是内容加1,所以应改为ss++;和tt++;。
程序设计题
3.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun( ),其功能是移动字符串中的内容,移动的规则是把第1~m个字符,移动到字符串的最后,把第m+1到最后的字符移动到字符串的前面。
例如,字符串中原有的内容为\\
void fun(char*w,int m)
{
int i,j;
char t;
for(i=1;i<=m;i++)/*进行m次的循环左移*/
(t=w[0];
for(j=1;w[j]! =’\0’;j++)
/*从第2个字符开始以后的每个字符都依次前移一个字符*/
w[j-1]=w[j];
w[j-1]=t;/*将第1个字符放到最后一个字符中*/
}
}
解析:本题应采用\\
本文档预览:3600字符,共2700字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载