国家二级C语言机试(操作题)模拟试卷543
程序填空题
1.给定程序中,函数fun的功能是:
把形参s所指字符串中最右边的n个字符复制到形参t所指字符数组中,形成一个新串。若s所指字符串的长度小于n,则将整个字符串复制到形参t所指字符数组中。
例如,形参s所指的字符串为:abedefgh,n的值为5,程序执行后t所指字符数组中的字符串应为: defgh。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BIANK1.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<string.h>
#define N 80
void fun(char*s,int n,char,*t)
{int fen,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的长度,那么把该字符串直接拷贝到t就可以了,所以应填t,s。
填空2:使用for循环语句,把最右边n个字符依次添加到t中,所以应填s[i]。
填空3:字符串操作结束,需要给t加一个字符串结束符,所以应填0或’\\\\0’。
程序修改题
2.下列给定程序中,函数fun的功能是:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件NODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
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)判断当前数是否为素数,若存在一个数(除l和其自身)能整除当前数,则跳出本次循环,所以if条件应为i%k==0。
(2)如果i是素数,则循环结束时k==i,将该值返回。
程序设计题
3.请编写函数void fun(int x,int pp[],int * n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若x中的值为30,则有4个数符合要求,它们是1、3、5、15。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
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始终是奇数。
整除的方法,已经讲过多次,这里就不再赘述了。对于本题目要求的不是偶数的判定方法,即该数对2求余不为0。除本题描述的方法外,还可以通过for循环语句直接把偶数筛出去,确保参与操作的数均为奇数。
本文档预览:3600字符,共2732字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载