国家二级C语言程序设计机试(程序设计题)模拟试卷4
程序设计题
1.请编写函数fun,该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
例如,若二维数组中的数据为
W W W W
S S S S
H H H H
则字符串中的内容应是:WSHWSHWSH.WSH。
注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#define M 3
#define N 4
void fun(char(*s)[N],char*b)
{
}
void main()
{
FILE*wf;
char a[100],W[M][N]={{‘w’,‘w’,
‘w’,‘w’},{‘S’,‘S’,‘S’,‘S’},
{‘H’,‘H’,‘H’,‘H’}};
int i,j;
prinff(“The matrix:\n”);
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
pfinff(“%3c”,w[i][j]);
printf(“\n”);
}
fun(w,a);
prinff(“The A string:\n”);
puts(a);
prinff(“\n”);
/******************/
wf=fopen(“out.dat”,“w”);
fprintf(wf,“%s”,a);
fclose(wf);
/******************/
}
void fun(char(*s)[N],char*b)
{
int i,j,k=0;
for(i=0;i<N;i++) /*按列的顺序依次放到一个字符串中*/
for(j=0;j<M;j++)
b[k++]=s[j][i];
b[k]=’\0’;
}
解析:看到程序后,很容易便能想到用循环嵌套的方法,本题中按列的顺序依次放到一个字符串中,所以列标变化慢,行标变化快。
注意:第1个循环条件为i<N(即列),第2个循环条件为j<M(即行),因为在循环的嵌套中,越在内层,循环变化就越快。
2.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include
#include
#include
#include
#define N 10
typedef struet ss/*定义结构体*/
{
char num[10];
int s;
}STU;
fun(STU a[],STU*s)
{
}
void main()
{
FILE*wf:
STU a[N]={{ttA01”,81},{“A02”,89},
{“A03”,66},{“A04”,87},{“A05”,77},
{“A06”,90},{“A07”,79},{“A08”,61},
{“A09”,80},{“A10”,71}},m;
int i;
system(“CLS”);
printff“*****The original data*****”);
for(i=0;i<N;i++)
pritf(“No=%s Mark=%d/n,a[i].num,a[i].s);
fun(a,&m);
prinffr“*****THE RESULT*****\n”);
printf(“The top:%s,%d\n”,m.num,m.s);
/***************/
wf=fopen(“out.dat”,“w”);
fprintf(wf,“%s,%d”,m.num,m.s);
fclose(wf);
/**************/
}
fun(STU a[],STU*s)
{
int i:
*s=a[0];
for(i=0;i<N;i++) /*找出成绩最高的学生记录*/
if(s一>s<a[i].s)
*s=a[i];
}
解析:本题考查:成绩最高的学生记录查找;for循环语句;if条件语句。
本题的流程是先使s指向第1名学生,利用循环语句遍历所有学生的成绩,利用条件语句判断当前学生成绩是否最高,所以if语句的条件是s一>ss”等价于“(*s).s”。
3.请编写函数fun,其功能是:判断形参n中的正整数是几位数(输入数据的位数不超过4位),并将结果通过函数值返回。例如,若输入的数据为123,则输出结果为:输入的数字是3位。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#inelude
void NONO();
int fun(int n)
{
}
main()
{
int n,place;
do
{
printf(“请输入—个4位以内的正整数:”);
scanf(“%d”,&n);
}
while(n9999);
place=fun(n);
printf(“输入的数字是%d位\n”,place);
NONO();
}
void NONO()
/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
{
FILE*fp,*wf;
int i,n,place;
fp=fopen(“in.dat”,“r”);
wf=fopen(“out.dat”,“w”);
for(i=0;i<10;i++)
{
fscanf(fp,“%d”,&n);
place=fun(n);
fprintf(wf,“%d\n”
本文档预览:3600字符,共4929字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载