国家二级C语言机试(操作题)模拟试卷284
程序填空题
1.给定程序中,函数fun的功能是:将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#inclucte<stdio.h>
void fun(char*s,int a,double f)
{
/*********found*********/
【1】fp;
char ch;
fp=fopen(\\
(1)FILE*
(2)fp
(3)ch
解析:填空1:由语句fopen(\\
程序修改题
2.下列给定程序中,函数fun的功能是:从P所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。
例如,调用fun函数之前给字符串输入“ABCDeFGH”,调用后字符串中的内容应为“eABCDFGH”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
void fun(char*P)
{
char max,*q;int i=0;
max=P[i];
while(p[i]!=0)
{
if(max<P[i])
{max=P[i];
/*********found*********/
q=P+i
}
i++;
}
/*********found*********/
while(q<P)
{
*q=*(q一1);q–;
}
P[0]=max;
}
void main()
{
char str[80];
printf(\\
(1)q=p+i;
(2)while(q>p)
解析:解答本题需要三个步骤,首先找到字符串中ASCII码值最大的字符并保存;然后将该字符复制,并将该字符前面的字符串顺次后移;最后将ASCII码值最大的字符赋给字符串的第一个字符。要找到ASCII码值最大的字符可以通过定义一个字符变量max,该字符变量初始时等于字符串的第一个字符,若字符串的下一个字符大于max,则将下一个字符赋给max,如此循环到字符尾,即可得到ASCII码值最大的字符,同时令指针q指向最大字符。此后对最大字符前面的子串顺次后移,可采用while语句实现。
程序设计题
3.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
1 #include<stdio.h>
2 #include<string.h>
3 #include<conio.h>
4 #inclucle<stdlib.h>
5 #define N 10
6 typedef struct ss
7 {char num[10];
8 int s;
9 }STU;
10 fun(STU a[],STU*S)
11 {
12
13 }
14 void main()
15 {
16 FILE*wf;
17 STU a[N]={(\\
fun(STU a[],STU *s)
{
int i ;
*s=a[0];/*先认为第1个值最小*/
for(i=0;i<N;i++)/*如果在循环的过程中再发现比第1个值更小的则赋给*s*/
if(s->s>a[i].s)
*s=a[i];
}
解析:找出结构体数组元素中的最小值。先认为第1个值最小,即*s=a[0];,如果在循环的过程中发现比第1个值更小的,就将指针s指向该元素,直到找到最小元素。另外,本题还涉及结构体中的指向运算符。
本文档预览:3600字符,共2463字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载