首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到student.dat文件中。函数fun的功能是从指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加3分,修改后重写文件
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到student.dat文件中。函数fun的功能是从指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加3分,修改后重写文件
admin
2013-04-02
98
问题
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到student.dat文件中。函数fun的功能是从指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加3分,修改后重写文件中该学生的数据。即用该学生的新数据覆盖原数据,其他学生数据不变;若找不到,则什么都不做。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANKl.C中。
不得增行或删行,也不得更改程序的结构!
#include
#define N 5
typedef struct student {
long sno;
char name[10];
float score[3];
} STU;
void fun(char *filename, long sno)
{FILE *fp;
STU n; int i;
fp = fopen(filename,"rb+");
/**********found**********/
while (!feof(【1】))
{fread(&n, sizeof(STU), 1, fp);
/**********found**********/
if (n.sno【2】sno) break;
}
if (!feof(fp))
{for (i=0; i<3; i++) n.score
+= 3;
/**********found**********/
fseek(【3】, -(long)sizeof(STU), SEEK_CUR);
fwrite(&n, sizeof(STU), 1, fp);
}
fclose(fp);
}
main()
{STU t[N]={ {10001,"MaChao", 91, 92, 77}, {10002,"CaoKai", 75, 60, 88},{10003,"LiSi", 85, 70, 78}, {10004,"FangFang", 90, 82, 87},{10005,"ZhangSan", 95, 80, 88}}, ss[N];
int i,j; FILE *fp;
fp = fopen("student.dat", "wb");
fwrite(t, sizeof(STU), N, fp);
fclose(fp);
printf("\nThe original data :\n");
fp = fopen("student.dat", "rb");
fread(ss, sizeof(STU), N, fp);
fclose(fp);
for (j=0; j
{printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);
for (i=0; i<3; i++) printf("%6.2f ", ss[j].score
);
printf("\n");
}
fun("student.dat", 10003);
fp = fopen("student.dat", "rb");
fread(ss, sizeof(STU), N, fp);
fclose(fp);
printf("\nThe data after modifing :\n");
for (j=0; j
{printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);
for (i=0; i<3; i++) printf("%6.2f ", ss[j].score
);
printf("\n");
}
}
选项
答案
fp == fp
解析
第一空:“while (!feof(__1__))”是在文件没有达到文件尾的情况不断读取文件内容,文件状态检测函数feof的调用形式为:feof(fp),其中fp为文件指针,故第一空处应为“fp”。
第二空:题干要求找到指定学号的学生数据,“if (n.sno__2__sno)”是比较读取出来的n学生的学号和指定的学好sno是否相等,故第二空处应为“==”。
第三空:此处是补充fseek函数的参数,fseek的调用形式是:fseek(fp, offset, position),其中第一个参数是文件型指针,故第三空处应填文件型指针变量“fp”。
转载请注明原文地址:https://kaotiyun.com/show/nxJp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
有以下程序,其功能是:以二进制“写”方式打开文件d1.dat,写入1~100这100个整数后关闭文件。再以二进制“读”方式打开文件d1.dat,将这100个整数读入到另一个数组b中,并打印输出。请填空。#include<stdio.h
若变量x、y己正确定义并赋值,以下符合C语言语法的表达式是______。
下列定义变量的语句中错误的是______。
以下叙述中错误的是
按照逻辑结构分类,数据结构可分为线性结构和非线性结构,二叉树属于【】。
程序中若有如下说明和定义语句charfun(char*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;……}以下选项中对函数fun的正确调用语句是
下列字符串是用户自定义标识符的是______。
防止软盘感染病毒的最有效的方法是【】。
若有以下定义和语句: ihtw[2][3],(*pw)[3];pw=w; 则对w数组元素的非法引用是()
在printf格式字符中,以带符号的十进制形式输出整数的格式字符是【】;以八进制无符号形式输出整数的格式字符是【】;以十六进制无符号形式输出整数的格式字符是【】;以十进制无符号形式输出整数的格式字符是【】。
随机试题
根据十九大精神,全面从严治党需要把()摆在首位。
下列有关报价先后的说法中,正确的有()
计算机系统的硬件主要包括运算器、_______、存储器、输入设备、输出设备五大部分组成。
数字化彩超的关键技术是
船舶碰撞,是由于()的原因造成的,碰撞各方相互不负赔偿责任。
根据下列经济业务编制会计分录资料:某企业2009年10月份发生下列经济业务:1.10月1日,企业从银行借入期限为6个月的借款500000元,存入银行。2.10月2日,总经理出差归来报销差旅费4500元,交回多余现金500元。3.10月5日,以银
陆先生在人身保险合同中指定了数人作为自己的受益人,后陆先生突然病故,在其去世前未确定受益人的受益顺序和受益份额,那么其受益人应按照( )享有受益权。
国务院某部委出台一部行政规章,规定对某种行政违法行为不仅要处罚该单位,还要给予直接责任人罚款的处罚。但有关规定这一违法行为处罚的行政法规并没有规定对直接责任人给予行政处罚。以下表述错误的有()。
下列说法正确的是()。
已知二叉树后序遍历序列是CDABE,中序遍历序列是CADEB,它的前序遍历序列是()。
最新回复
(
0
)