国家二级C语言机试(操作题)模拟试卷684
程序填空题
1.程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#deftne N5
typedef stract student{
long sno;
char name[10];
float score[3];}STU;
void fun(char*filename)
{
FILE*fp;int i,j;
STU s[N],t;
/******found******/
fp=fopen(filename,___1___);
fread(s,sizeof(STU),N,fp);
fclose(fp);
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(s[i].sno___2___s[j].sno)
{
t=s[i];s[i]=s[j];s[j]=t;
}
fp=fopen(filename,\\
(1)\\
解析:填空1:题目中要求从形参filename所指的文件中读入学生的数据,以此可以看出本空应该填写\\
程序修改题
2.下列给定程序中,函数fun的功能是:根据输入的三个边长(整型值),判断能否构成三角形。若能构成等边三角形,则返回3;若是等腰三角形,则返回2;若能构成三角形则返回1;若不能,则返回0。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<math.h>
int fun(int a,int b,int c)
{
if(a+b>c&&b+c>a&&a+c>b)
{
if(a==b&&b==e)
/******found******/
return1;
else if(a==b||b==c||a==c)
return2;
/******found******/
else return3;
}
else return0;
}
void main()
{
int a,b,12,shape;
printf(\\
(1)return3;
(2)return1;
解析:(1)变量a、b、c分别表示三条边,当三边相等(a==b&&b==c)时,返回3。
(2)在能构成三角形的前提下,如果不能构成等边三角形或等腰三角形,则返回1。
程序设计题
3.请编写函数fun,该函数的功能是:判断字符串是否为回文,若是,则函数返回1,主函数中输出\\
int fun(char*str)
{
int i,n=0,fg=1;
char*p=str;
while(*p)/*将指针p置位到字符串末尾,并统计字符数*/
{n++;p++;}
for(i=0;i<n/2;i++)/*循环比较字符*/
if(str[i]==str[n-1-i]);/*相同,什么都不做*/
else
{fg=0;break;}/*不同,直接跳出循环*/
return fg;
}
解析:判断回文就是将第一个字符与最后一个字符比较,第二个字符与倒数第二个字符进行比较,以此类推,直到中间的字符。如果比较的结果都相同,那么这个字符串就是回文,否则不是。程序中循环语句用来遍历字符串,条件语句用来判断当前字符与对应位置的字符是否相同。
本文档预览:3600字符,共2196字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载