国家二级C语言机试(操作题)模拟试卷305
程序填空题
1.人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#inclucle<stdio.h>
#define N 8
typedef struct
{ int num;
int year,month,day;
}STU;
int fun(STU*std,STU*k,int year)
{ int i,n=0;
for(i=0;i<N;i++)
/*********found*********/
if(【1】==year)
/*********found*********/
k[n++]=【2】;
/*********found*********/
return(【3】);
}
main()
{ STU std[N]={{1,1984,2,15},{2,1983,9,21},{3,1 984,9,1},{4,1 983,7,15},{5,1985,9,28},{6,1982,11,15},{7,1982,6,22},{8,1984,8,19}};
STU k[N];int i,n,year;
printf(\\
(1)std[i].year
(2)std[i]
(3)n
解析:本题要求从给定的人员数据中找出与指定出生年份相同的记录存入k中,并返回符合条件的人数。
填空1:此空判断结构体变量中的年份与yeai’是否相等,所以应填std[i].yearo,
填空2:把符合条件的记录依次存入实参k中,所以应填std[i]。
填空3:函数返回符合满足条件的人数,所以应填n。
程序修改题
2.下列给定程序中,函数fun的功能是:求出如下分数列的前n项之和。
(1)double fun(int n)
(2)s=s+(double)a/b;
解析:(1)由于返回值s是double型的,所以函数要定义为double型。
(2)C语言规定所有关键字都必须用小写英文字母表示,所以s=s+(Double)a/b;应改为s=s+(double)a/b;。
程序设计题
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字符,共2415字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载