国家二级(C语言)机试模拟试卷858
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun( )的功能是把形参s所指字符串中最右边的n个字符复制到形参t所指字符数组中,形成一个新字符串。若s所指字符串的长度小于n,则将整个字符串复制到形参t所指字符数组中。
例如,形参s所指的字符串为abedefgh,n的值为5,程序执行后t所指字符数组中的字符串应为defgh。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:部分源程序在文件blank1.c中。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
#define N 80
void fun(char*s,int n,char*t)
{int len,i,j=0;
len=strlen(s);
/*********found*********/
if(n>=len)strcpy(【1】);
else{
/*********found*********/
for(i=len-n;i<=len-1; i++)
t[j++]=【2】;
/*********found*********/
t[j]-【3】;
}
}
main( )
{char s[N],t[N];int n;
printf(\\
(1)t,s(2)s[i](3)0或’\0’
解析:填空1:当给定的长度n大于该字符串s的长度,那么通过函数strcpy( )把该字符串直接复制到t就可以了。故空1处应该填t,s。
填空2:使用for循环语句,把字符串s最右边的n个字符依次添加到字符串t中,故空2处应该填s[i]。
填空3:字符串操作结束,需要给字符串t末尾加一个字符串结束标志,故空3处应该填0或’\0’。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun( )的功能是找出一个大于给定整数m且紧随m的素数,并将其作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件modi1.c中,不要改动main( )函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
#include
int fun(int m)
(int i,k;
for(i=m+1;;i++)
{for(k=2;k<i;k++)
/*********found*********/
if(i%k!=0)
break;
/*********found*********/
if(k<i)
return(i);
}
}
void main( )
{int n;
system(\\
(1)if(i%k==0)(2)if(k==i)
解析:(1)判断当前数是否为素数,若存在一个数(除1和其自身)能整除当前数,则当前数不是素数,跳出本次循环。所以if条件应改为i%k==0。(2)如果i是素数,则循环结束时k==i,将该值返回。
程序设计题
3.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun( ),它的功能是求出能整除x且不是偶数的整数,并将这些整数按从小到大的顺序放在pp所指的数组中,总个数通过形参n返回。
如x中的值为30,则有4个数符合要求,它们是1、3、5、15。
注意:部分源程序在文件prog1.c中。
请勿改动主函数main( )和其他函数中的任何内容,仅在函数fun( )的花括号中填入你编写的若干语句。
试题程序:
#include
#include
#include
void fun(int x,int pp [],int*n)
{
}
void main( )
{
FILE*wf;
int x,aa[1000],n,i;
system(\\
void fun(int x,int pp[],int*n)
{
int i,j=0;
for(i=1;i<=x;i=i+2)/*i的初值为1,步长为2,确保i为奇数*/
if(x%i==0)/*将能整除x的数存入数组pp中*/
pp[j++]=i;
*n=j;/*传回满足条件的数的个数*/
}
解析:本题考查偶数的判定方法,整除的实现。
本题题干信息:能整除x且不是偶数的所有整数。循环语句中变量i从1开始且每次递增2,所以i始终是奇数。
将能整除x的i值存放到数组pp中,整除采用求余运算符\\
本文档预览:3600字符,共2846字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载