国家二级C语言机试(操作题)模拟试卷306
程序填空题
1.给定程序中,函数fun的功能是:判断形参s所指字符串是否是\\
(1)s
(2)–
(3)retum 0
解析:填空1:根据函数体fun中,对变量lp和rp的使用可知,lp应指向形参s的起始地址,rp指向s的结尾地址,所以应填s。
填空2:rp是指向字符串的尾指针,当每做一次循环rp向前移动一个位置,所以应填:–。
填空3:当lp和rp相等时,表示字符串是回文并返回1,否则就返回0,所以应填return 0。
程序修改题
2.下列给定程序中,函数fun的功能是:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODI1.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)判断当前数是否为素数,若存在一个数(除1和其自身)能整除当前数,则跳出本次循环,所以if条件应为i%k==0。
(2)如果i是素数,则循环结束时k==i,将该值返回。
程序设计题
3.学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:把分数最高的学生数据放在b所指的数组中。注意:分数最高的学生可能不止一个,函数返回分数最高的学生人数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
#define N 16
typedef struct
{
char num[10];
int s;
}STREC;
int fun(STREC*a,STREC*b)
{
}
void main()
{
STREC S[N]={{\\
int fun(STREC*a,STREC*b)
{
int i,j=0,max=a[0].s;
for(i=0;i<N;i++)
if(max<a[i].s)/*找出最大值*/
max=a[i].s;
for(i=0;i<N;i++)
if(max==a[i].s)
b[j++]=a[i];
/*找出成绩与max相等的学生的记录,存入结构体b中*/
return j; /*返回最高成绩的学生人数*/
}
解析:本题考查:结构体数组操作;用循环判断结构查找数组中的最大值。
该程序使用两个循环判断语句,第1个循环判断语句的作用是找出最大值;第2个循环判断语句的作用是找出与max相等的成绩(即最高成绩)的学生记录,并存入b中。
对于如何找出数组中最大值(多个相等)的方法,我们已经不陌生。如何对结构体数组进行类似操作呢?
掌握以下语句:
for(i=0;i<N;i++)
if(max<a[i].s)max=a[i].s;
本文档预览:3600字符,共2160字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载