长江大学机械工程学院.doc_第1页
长江大学机械工程学院.doc_第2页
长江大学机械工程学院.doc_第3页
长江大学机械工程学院.doc_第4页
长江大学机械工程学院.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

长江大学机械工程学院 计算机上机实习报告班 级 机械11105学 号姓 名指导老师 周传喜老师完成日期 2012年12月31日答辩记录运行情况原始数据成绩排名平均分和分数段统计男女生课程平均分不及格统计优秀生统计优秀学生干部统计破译密码回答问题12345(一) 题目的分析设计与说明 程序要求说明: 程序要求说明:1. 用文字处理软件(用记事本 用记事本写字板wordtc,不能用 excel)新建一个文本文件 将本班 文本文件, 文本文件 M 名学生在本学期的 N 门课程成绩录入到这个文件中,按如下形式存放 按如下形式存放。要求:学 生人数 M 不少于 30 人,课程门数 N 不小于 5, 姓名为本班的真实姓名 课程中必须 姓名为本班的真实姓名, 有一门考查课。 2. 录入本班班级学生信息 录入本班班级学生信息,内容包含“编号 课程名称 课程学分” ,录入课程 学分情况; 读取原始数据文件的内容, ,计算每个学生的加权平均分 (保留一位小数,4 舍 5 入) ,按平 4 均分排名次,平均分相同则名次相同 平均分相同则名次相同。创建一个数据文件(建议为:文本文件 ,存放班级 文本文件) 的成绩表,按下列式形存放 按下列式形存放。计算加权平均分的公式如下加权平均分=课程学分 成绩i =1 i NNi 课程学分i =1 i3. 分别统计全班每门课的平均分 计算各分数段(60;6069;7079;8089;90 以上)的学生 分别统计全班每门课的平均分。 (60;6069;7079;8089;90 人数。创建一个数据文件 创建一个数据文件(建议为:文本文件) ,存放上述计算结果。 。 4. 分别统计男生和女生每门课的平均分 分别统计男生和女生每门课的平均分。结果存放在一个数据文件中; ; 5. 输出所有存在不及格课程学生的名单 输出所有存在不及格课程学生的名单,包括:学号、姓名、性别、不及格课程名称 不及格课程名称、课 程学分及成绩。结果存放在一个数据文件中 结果存放在一个数据文件中。 6. 输出优秀学生名单,包括 包括:学号、姓名、性别、名门课成绩、平均分和名次 平均分和名次。结果存 放在一个数据文件中。 。优秀学生的条件为:1平均分90 90 2. 名次在本班前 3 名 3. 平均分85,并且至少有一门课的成绩为 95 分 并且至少有一门课的成绩为 4平均分85,并且至少有二门课的成绩为 并且至少有二门课的成绩为90 分输出优秀学生干部名单,包括:学号、姓名、性别、职务、名门课成绩 名门课成绩、平均分和名 7. 输出优秀学生干部名单 次。结果存放在一个数据文件中 结 果存放在一个数据文件中。优秀学生的条件为:1平均分85 85 2. 名次在本班前 20%名 3平均分80,并且至少有一门课的成绩为 并且至少有一门课的成绩为95 分 4平均分80,并且至少有二门课的成绩为 并且至少有二门课的成绩为90 分题目的分析思路要点: 题目的分析思路要点:前期准备:分别建立三 前期准备:分别建立三个数据文件 文件 1(原始成绩数据 file1.txt)用于存放学生成绩; 数据 文件 2(学生基本信息 file2.txt)用于存放学生的基本信息; 学生基本信息 文件 3(课程及学分设置 file3.txt)用于存放 N 门课程及对应的学分。 课程及学分设置1)学生成绩管理系统1. (定义三个结构体数组 原始数据 file1.txt 存放学生成绩; 个结构体数组: 学生基本信息 file2.txt; 存放学生基本信息; ;课程及学分 file3.txt 存放课程及其学分) 2.读入原始数据并显示( (将其读入另外的“成绩”, “基本信息”,”学分 学分”中) ;运用 数组相关的知识点, 对汉字信息采用字符串类型的读入, 对汉字信息采用字符串类型的读入 对数字采用整型数组读 入,同时输出相关信息 同时输出相关信息,其中设定不同的指针指向文件,便于使用。 。学程学3.编写函数用于计算加权 加权平均分及 。 其 ( 的” ”中) ) ; 4.编写函数计算全班每门课程的平均分 及不同分数 的 数( 其 编写函数计算全班每门课程的平均分 的” 的 每门课平均”中) ; 5.编写函数输出男女生课程平均分 课程平均分( 其 的”男女生课程平均分中 , 用 课程平均分中) 之前输出的班级同学的平均分的文本, 用 之前输出的班级同学的平均分的文本 及 比较函数 , 别 sex 与第一个男生做比较 与第一个男生做比较, 果比较结果相同 男生,输出 输出 ,计算男 生平均分,女生也相同方式 女生也相同方式; 6.编写函数统计不及格情况 编写函数统计不及格情况, , 序 及同学 出不及格 的同学,输出其相关的信息 ( 其 输出其相关的信息。 的”不及格 ”中) ; 7.编写函数输出优秀学生 编写函数输出优秀学生 输出优秀学生。 其 ( 的”优秀学生” 的 中) ; 编写函数输出优秀学生干部( 其 的”优秀学生干部.txt”中) ) 8.编写函数输出优秀学生干部 9.编写菜单,共有 8 个菜单项 个菜单项,其中 7 个 要求,第 8 个 出函数。 出函数2)破译密码 )1.求出 100-200 之间的素数 之间的素数, 解码的密匙。 2.根据要求编写出对应密匙的解码结果 根据要求编写出对应密匙的解码结果。 3.输出解码结果。(二) 程序框图 菜单 图函数组 破 生 译 成 绩 管 理 码 符 本题 不 做 密 字 大 成学( )长江大学机械工程学院一级菜单结构图学生成绩管理系统1. 读 入 原始数 据并显 示菜单2. 计 算 加 权 平 均 分 及 名 次3. 统 计 全 班 每 门 课 程 的 平 均 分4. 统 计 男 生 和 女 生 每 门 课 平 均5. 统 计 不 及 格 情 况6. 输 出 优 秀 学 生7. 输 出 优 秀 学 生 干 部 名 单8. 返回 上级 菜单破译密码流程图定义文件型数据的指针变量对密码文件进行读取运用循环语句从101-200 200之间找出素数对找到的整型素数n/100得到百位n%100/10得到十位n%10得到个 对找到的整型素数 位,把他放入一个新的数组中 把他放入一个新的数组中将所有英文字符按序轮换减去对应的数组元素,原来是大(小) 将所有英文字符按序轮换减去对应的数组元素 写英文字符超出大(小)写英文字符范围加上26。 写英文字符超出大 输出解密结果。 输出解密结果输出解密结果源程序清单解析 (三)源程序清单解析# includestdio.h # includeconio.h # includestdlib.h #include #include #define M 36 定义一个全局变量 M 36 为班级学生的人数 1.定义五个结构体类型变量, 学生成绩表”“学生信息”“课程与学分设置”“汇总所有 定义五个结构体类型变量, 定义五个结构体类型变量 “学生成绩表” 学生信息” 课程与学分设置” 、 、 、 信息” 平均分”向系统声明这是一个结构体类型,它包括成员列表中不同类型的成员。 信息”“平均分”向系统声明这是一个结构体类型,它包括成员列表中不同类型的成员。 、 例如: 例如: struct student /学生成绩表 学生成绩表 int num; char name30; int score5; char kaocha10; studM; 2.准备读入数据 准备读入数据 void function1_1() printf(*读入原始数据并显示的程序内容 printf(*读入原始数据并显示的程序内容*n); 读入原始数据并显示的程序内容* int i; char f115,f215,f315, f415, f515, f615, f715,f815; char m115,m215,m315,m415,m515; char n115,n215,n315; 文件读入举例如下: 文件读入举例如下: 通过文件指针找到与它关联的文件。 (1)定义文件型数据的指针通过文件指针找到与它关联的文件。 )定义文件型数据的指针通过文件指针找到与它关联的文件 例如定义: 例如定义: FILE *fp,*fp1,*fp2; 对应学生成绩表,打开文件时通知编译系统一下三个信息: (2)fp 文件指向 file1 对应学生成绩表,打开文件时通知编译系统一下三个信息: 打 ) 开文件的名字 使用文件的方式 开文件的名字 使用文件的方式哪一个指针变量指向 打开的文件 运用如下方式: 运用如下方式: fp=fopen(G:00 00file1.txt,r); /打开文件一,学生成绩表 打开文件一, 打开文件一 if(fp=NULL) printf(cannot open the file filen); exit(0); fscanf(fp,%s%s%s%s%s%s%s%sn,f1,f2,f3,f4,f5,f6,f7,f8);/运用格式化的方式 fscanf(fp,%s%s%s%s%s%s%s%s 运用格式化的方式 读取文件内容 for(i=0;iM;i+) /设立一个循环要求分别读入每个同学每一科的成绩,包括输出 设立一个循环要求分别读入每个同学每一科的成绩, 设立一个循环要求分别读入每个同学每一科的成绩 一颗考查课的成绩 fscanf(fp,%d%s%d%d%d%d%d%sn,&studi.num,,&studi.sco fscanf(fp,%d%s%d%d%d%d%d%s n,&studi.num,,&studi.sco re0,&studi.score1,&studi.score2,&studi.score3,&studi.score4,studi re0,&studi.score1,&studi.score2,&studi.score3,&studi.score4,studi .kaocha);长江大学机械工程学院fclose(fp);文件读取完毕后,关闭文件 文件读取完毕后 文件读取完毕后, (3)读取完毕后,显示输出读取的内容 )读取完毕后, printf(%2s %5s %8s %8s %8s %9s %9s %10s n,f1,f2,f3,f4,f5,f6,f7,f8);先输出 %10sn,f1,f2,f3,f4,f5,f6,f7,f8);先输出 表头内容 for(i=0;iM;i+)设立循环,输出所有学生的相关信息。 设立循环, 设立循环 输出所有学生的相关信息。 printf(%-5d %-8s% 8s%6d%8d%10d%10d%10d %10sn,studi.num,,st n,studi.num,,st udi.score0,studi.score1, studi.score2,studi.score3,studi.score4,studi.kaocha); printf(n); 可以使用同样方式打开“学生信息” 学分设置” “学分设置 可以使用同样方式打开“学生信息” 学分设置”的文件 “ 3.计算加权平均分以及学生名次 计算加权平均分以及学生名次 void function1_2() printf(* printf(* 计 算 平 均 分 及 名 次 *n); * int i,j; float sum1,sum2; ; FILE *fp,*fp1,*fp2,*fp3; “file3.txt” 对里面数据进行 (1)按照上述方式以只读的形式打开“file1.txt” file2.txt” )按照上述方式以只读的形式打开“ ” “ ” “ ” , 读取。 读取。 (2)设立循环语句,从第一个学生开始,用课程 对应的课程的学分再将得到的值赋给 )设立循环语句,从第一个学生开始,用课程*对应的课程的学分再将得到的值赋给 sum1;将总学分的值赋给 sum2,用 sum1/sum2 所得的值就是此同学的加权平均 ; , 进行第二个学生的加权平均分统计。 分,接着 i+,进行第二个学生的加权平均分统计。 进行第二个学生的加权平均分统计 主要程序如下: 主要程序如下: for(i=0;iM;i+) sum1=0.0; sum2=0.0; for(j=0;j5;j+) sum1=sum1+studi.scorej*stj.xuefen; /*求加权平 均分, 课 /*求加权平均分 用 ( 求加权平均分, *对应学分 课程学分*/ 对应学分) 程*对应学分)/课程学分 sum2=sum2+stj.xuefen; stri.average=sum1/sum2; (3)设立名次排名的循环,先将第一个同学的名次定位 rank=1,第下一个同学的加权 )设立名次排名的循环, , 平均分与这一个的同学的进行比较,如果出现他得平均小, stri.rank=stri.rank+1, 平均分与这一个的同学的进行比较,如果出现他得平均小,则 stri.rank=stri.rank+1,如 stri.rank=stri.rank。接着就开始进行第二个同学的比较 同学的比较, 果相等则 stri.rank=stri.rank。接着就开始进行第二个同学的比较,同样将第二个学生的 名次 rank 赋值为 1,如上进行比较 , 主要程序如下: 主要程序如下: for(i=0;iM;i+) stri.rank=1; for(j=0;jM;j+)长江大学机械工程学院if(stri.averagestrj.average) if(stri.averagestrj.average) stri.rank=stri.rank+1; /通过比 / 通过比 较平均分进行排名 if(stri.average=strj.average) stri.rank=stri.rank; (4)将所得名次排名等信息,写到一个新的文件中“w”形式为写到文件中。 )将所得名次排名等信息,写到一个新的文件中“ ”形式为写到文件中。 方式如下: 方式如下: if(fp3=fopen(G:00file2.1.txt,w)=NULL) /在新的文本中输 if(fp3=fopen(G: file2.1.txt,w)=NULL) /在新的文本中输 出信息 printf(cannot open the file filen); exit(0); fprintf(fp3,%-2s fprintf(fp3,% 2s %4s %5s %6s %9s %9s %8s %8s %s 名次n,f1,f2,m3,m5,f3,f4,f5,f6,f7,f8 ); 平均分 名次 printf(%-2s%4s printf(% 2s%4s %6s %6s %6s %6s %6s %6s %8s 平均分 名次 n,f1,f2,m3,m5,f3,f4,f5, n,f1,f2,m3,m5,f3,f4,f5,f6,f7,f8); 输出表头, 输出表头, “名 且加入 平均分” 名 “平均分” “ 的表头。 次”的表头。 for(i=0;iM;i+) fprintf(fp3,%-2d %-6s %3s%10s%6d%8d%8d%8d fprintf(fp3,% 6s %5d %8.2f%8 dn,studi.num,,stui.sex,stui.position,studi.score0,stud n,studi.num,,stui.sex,stui.position,studi.score0,stud i.score1,studi.score2,studi.score3,studi.score4,stri.average,st ri.rank); printf(%-2d % 6s %3s%10s%6d%8d%8d %8d %6d%8.2f%8d 2d %-6s %6d%8.2f%8dn,studi. num,,stui.sex,stui.position,studi.score0,studi.score1,studi .score2,studi.score3,studi.score4,stri.average,stri.rank); (6)使用完后,关闭文件 )使用完后, fclose(fp); fclose(fp1); fclose(fp2); fclose(fp3); printf( *按 Enter 键继续 键继续*n); 按 getchar(); getchar(); 4.课程平均分和分数段人数 课程平均分和分数段人数 void function1_3() printf(*课程平均分和分数段人数 printf(*课程平均分和分数段人数*n);课程平均分和分数段人数* int i,j,sum; char f110,f210,f310, f410, f510, f610, f710,f815; FILE *fp,*fp5; (1)按照上面介绍的方式打开学生信息的文件 file1.txt。 ) 。 个科目;在大循环中建立学生的循环, (2)设立一个大循环,除去考查课的 5 个科目;在大循环中建立学生的循环,统计第 )设立一个大循环, 可以得到此课程的平均分; 一个学科所有学生的成绩赋值到 sum 中, sum/36.0 可以得到此课程的平均分; 用长江大学机械工程学院进行第二个课程平均分的统计。 接着 i+进行第二个课程平均分的统计。 进行第二个课程平均分的统计 程序要点如下: 程序要点如下: for(i=0;i5;i+) 0;i5;i+) sum=0; for(j=0;jM;j+) sum=sum+studj.scorei; peri.ping=sum/36.0; (3)设立科目的大循环并在循环中加入学生的循环,从第一个科目开始,对第一个学生的 )设立科目的大循环并在循环中加入学生的循环,从第一个科目开始, 成绩进行判断各分数段 各分数段(60;6069;7079;8089;90 以上 如果在相应的那个分数段, 以上)如果在相应的那个分数段 就 如果在相应的那个分数段, 成绩进行判断各分数段 在那分数段的计数器 count 上+1,知道最后一个学生信息读完。接着进行第二个科目 ,知道最后一个学生信息读完。 的统计。统计结束后设立新的文本存放统计结束后的信息。 的统计。统计结束后设立新的文本存放统计结束后的信息。 程序要点如下: 程序要点如下: for(i=0;i5;i+) for(j=0;j=90) per0.counti+; /*对不同分数段 /* 对不同分数段 的人进行统计*/ 的人进行统计*/ else if (studj.scorei=80) per1.counti+; else if (studj.scorei=70) per2.counti+; else if (studj.scorei=60) per3.counti+; else per4.counti+; fp5=fopen(G:00 file3.1.txt,w); /建立新的文本对不同分数段的记录 建立新的文本对不同分数段的记录 if(fp5=NULL) printf(cannot open the file filen); exit(0); fprintf(fp5, %8s %8s %8s %8s %8sn,f3,f4,f5,f6,f7); n,f3,f4,f5,f6,f7); 范围 printf( %8s %8s %8s %8s %8sn,f3,f4,f5,f6,f7); 范围 fprintf(fp5, =90( 优 %5d%8d%8d%9d%8dn,per0.count0,per0.count1,per0.coun %5d%8d%8d%9d%8d n,per0.count0,per0.count1,per0.coun 秀) t2,per0.count3,per0.count4); printf( =90( 优 %5d%8d%8d%9d%8dn,per0.count0,per0.count1 %5d%8d%8d%9d%8d n,per0.count0,per0.count1,per0.count 秀) 2,per0.count3,per0.count4); fprintf(fp5, 8090( 良 %5d%8d%8d%9d%8dn,per1.count0,per1.count1,per1.count2, 好) %5d%8d%8d%9d%8d n,per1.count0,per1.count1,per1.count2, per1.count3,per1.count4); printf( 8090( 良长江大学机械工程学院%5d%8d%8d%9d%8dn,per1.count0,per1.count1,per1.count2, nt1,per1.count2, 好) %5d%8d%8d%9d%8d per1.count3,per1.count4); fprintf(fp5, 7080( 中 %5d%8d%8d%9d%8dn,per2.count0,per2.count1,per2.count2, 等) %5d%8d%8d%9d%8d n,per2.count0,per2.count1,per2.count2, per2.count3,per2.count4); printf( 7080( 中 %5d%8d%8d%9d%8dn,per2.count0,per2.count1,per2.count2,p .count1,per2.count2,p 等) %5d%8d%8d%9d%8d er2.count3,per2.count4); fprintf(fp5, 60( 不 及 %5d%8d%8d%9d%8dn,per4.count0,per4.count1,per4.count2, 格) %5d%8d%8d%9d%8d n,per4.count0,per4.count1,per4.count2, per4.count3,per4.count4); printf( 60( 不 及 %5d%8d%8d%9d%8dn,per4.count0,per4.count1,per4.count2, r4.count1,per4.count2, 格) %5d%8d%8d%9d%8d per4.count3,per4.count4); fprintf(fp5,课程平均分 课程平均分); 课程平均分 printf(课程平均分); 课程平均分); 课程平均分 for(i=0;i5;i+) fprintf(fp5,% 10.3f,peri.ping); printf(% 10.3f,peri.ping); /输出各课程的平均分 输出各课程的平均分 fclose(fp); fclose(fp5); printf(n); 5.男女生课程平均成绩 男女生课程平均成绩 void function1_4() printf(*男生和女生课程平均成绩 printf(*男生和女生课程平均成绩*n ); 男生和女生课程平均成绩* int i,j,sum=0; struct sex1 char sex6; float jun5; sex2; FILE *fp,*fp1; 文件进行读取。 (1) 按照上述,对之前建立的 file2.1 文件进行读取。 ) 按照上述, (2) 设立一个课程的大循环其间嵌套一个学生的小循环,由第一个科目开始, 从第一 ) 设立一个课程的大循环其间嵌套一个学生的小循环,由第一个科目开始, 与字符串“ 进行比较, 个学生开始将第一个学生的 sex 与字符串“男”进行比较,如果相同就纳入男生成 绩总和统计中,并且可求出其平均数,女生也用同样方法输出其平均成绩; 绩总和统计中,并且可求出其平均数,女生也用同样方法输出其平均成绩;接着进 统计第二个科目的男女生平均分, 行 j+,统计第二个科目的男女生平均分,知道所有科目统计结束。 统计第二个科目的男女生平均分 知道所有科目统计结束。 程序要点如下: 程序要点如下: for(j=0;j5;j+) sum=0; for(i=0;iM;i+) 长江大学机械工程学院if(strcmp(stri.sex,男 if(strcmp(stri.sex,男)=0) sum=sum+stri.scorej; sex0.junj=sum/33.0; sum=0.0; for(i=0;i36;i+) if(strcmp(stri.sex,女 if(strcmp(stri.sex,女)=0)/选出女生对应的数据 选出女生对应的数据 sum=sum+stri.scorej; sex1.junj=sum/3.0; (3) 将读出的信息写入一个新的文本中。 ) 将读出的信息写入一个新的文本中。 程序要点如下: 程序要点如下: if(fp1=fopen(G:00file4.1.txt,w)=NULL) /将信息重新读写在一个新 if(fp1=fopen(G: 将信息重新读写在一个新 的文本中,便于查看。 的文本中,便于查看。 printf(cannot open the file filen); exit(0); fprintf(fp1,%s %s %s %s %s %s %sn,f3,f5,f6,f7,f8,f9); printf(%s %s %s %s %s %sn,f3,f5,f6,f7,f8,f9); %s n,f3,f5,f6,f7,f8,f9); fprintf(fp1, %fn,sex0.jun0,sex0.jun1,sex0.jun2,sex0.j 男 %f %f %f %f %f n,sex0.jun0,sex0.jun1,sex0.jun2,sex0.j un3,sex0.jun4); printf( %fn,sex0.jun0,sex0.jun1,sex0.jun2,s 男 %f %f %f %f %f n,sex0.jun0,sex0.jun1,sex0.jun2,s ex0.jun3,sex0.jun4); fprintf(fp1, %fn,sex1.jun0,sex1.jun1,sex1.jun2,sex1.j 1,sex1.jun2,sex1.j 女 %f %f %f %f %f un3,sex1.jun4); printf( %fn,sex1.jun0,sex1.jun1,sex1.jun2,s 女 %f %f %f %f %f n,sex1.jun0,sex1.jun1,sex1.jun2,s ex1.jun3,sex1.jun4); 6.统计班级不及格情况: 统计班级不及格情况: 统计班级不及格情况 程序设计思路: 学生成绩等相关信息; 程序设计思路:读取文件 file2.1.txt 中学生成绩等相关信息;文件 file3.txt 中课程学分设 置的信息, 置的信息,并且建立一个新的文件 file5.1.txt 用于存储新生成的不及格情 况统计。 况统计。 void function1_5() printf(*统计不及格情况 printf(*统计不及格情况 统计不及格情况*n); int i,j; char f110,f210,f310,f410,f510,f610,f710,f810,f910,f1010,f1110; char n110,n210,n310; FILE *fp,*fp2,*fp3; (1)读取相关文件的方式如上,此处不再叙述。 )读取相关文件的方式如上,此处不再叙述。长江大学机械工程学院(2)建立新的文件夹存储新生成的不及格情况统计。 )建立新的文件夹存储新生成的不及格情况统计。 程序要点如下: 程序要点如下: if(fp3=fopen(G:00file5.1.txt,w)=NULL) if(fp3=fopen(G: printf(cannot open the file filen); exit(0); fprintf(fp3, %3s %4s %5s %s %sn,f1,f2,f3,n3); printf( %-3s %-4s % %5s %s 考试分数 n,f1,f2,f3,n3); n,f1,f2,f3,n3); for(i=0;iM;i+) for(j=0;j5;j+) if(stri.scorej=90,名次 平均分 名次 那么 应该至少有一门课=95 或者至少有二门课成绩 或者至少有二门课成绩=90. 在班级前 3,若平均分=85,那么应该至少有一门课 ,若平均分=85,那么应该至少有一门课 int i,j,m,n; har char f110,f210,f310,f410,f510,f610,f710,f810,f910,f1010,f1110; FILE *fp,*fp1; (1) 建立新的文件存放优秀学生信息 ) 程序要点如下: 程序要点如下: if(fp1=fopen(G:00file6.1.txt,w)=NULL) printf(cannot open the file filen); exit(0); if(fp=fopen(G:00 00file2.1.txt,r)=NULL) printf(cannot open the file filen); exit(0); fscanf(fp,%s%s%s%s%s%s%s%s%s%s%s,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11); for(i=0;iM;i+) fscanf(fp,%d%s%s%s%d%d%d%d%d%f%d,&stri.num,,stri.sex,s长江大学机械工程学院tri.position,&stri.score0,&stri.score1,&stri.score2,&stri.score3,&stri.s core4,&stri.average,&stri.rank); fprintf(fp1,%2s%6s%5s %5s %5s %5s %5s %5s %5s %5s %sn,f1,f2,f3,f4,f5,f6,f7 n,f1,f2,f3,f4,f5,f6,f7 ,f8,f9,f10,f11); printf(%2s %6s %5s %5s %5s %5s %5s %5s %5s %5s%s n,f1,f2,f3,f4,f5,f6,f7, %5s%sn,f1,f2,f3,f4,f5,f6,f7, f8,f9,f10,f11); (2)设立一个学生的大循环,其间嵌套一个科目循环,从第一个学生开始,读取他五个科 )设立一个学生的大循环,其间嵌套一个科目循环,从第一个学生开始, 3.平均分85,并且至少 平均分 , 目的成绩判断是否满足 1平均分90 2. 名次在本班前 3 名 平均分 平均分 有一门课的成绩为 95 分 4平均分85,并且至少有二门课的成绩为90 分,如果满足条 平均分 ,并且至少有二门课的成绩为 那么输出他的“学号、姓名、性别、 门课成绩、平均分和名次” 件,那么输出他的“学号、姓名、性别、各门课成绩、平均分和名次” 。 程序要点如下: 程序要点如下: for(i=0;iM;i+) m=0;n=0; for(j=0;j=95) m+; if(stri.scorej=90) if(stri.scorej=9 n+; if(stri.average=90|stri.rank=85&(m=1|n =2) fprintf(fp1,%2d %5s %3s%8s%5d %5d %5d %6d %5d %6.2f% 5dn,stri.num,,stri.sex,stri.position,stri.score0,s n,stri.num,,stri.sex,stri.position,stri.score0,s tri.score1,stri.score2,stri.score3,stri.score4,stri.avera tri.score1,stri.score2,stri.score3,stri.score4,stri.avera ge,stri.rank); printf(%2d%10s %3s %8s%5d %5d %5d %6d % 5d%6.2f% 5d 5dn,stri.num,,stri.sex,stri.position,stri.score0, 5d n,stri.num,,stri.sex,stri.position,stri.score0, stri.score1,stri.score2,stri.score3,stri.score4,stri.aver age,stri.rank); 8.优秀学生干部 优秀学生干部 void function1_7() printf(*输出优秀学生干部 printf(*输出优秀学生干部*n);/*平 输出优秀学生干部* 平 均分=80,名次在班级前 20%,若平均分 那么应该至少有一门课=85 或者 均分 名次在班级前 ,若平均分=80,那么应该至少有一门课 那么应该至少有一门课 至少有二门课成绩=90.*/ 至少有二门课成绩 int i,j,m,n; c har f110,f210,f310,f410,f510,f610,f710,f810,f910,f1010,f1110; FILE *fp,*fp1; 、并建立 的文件存储优秀学生干部的 (平均分及名次) 、 (1) 打开 file2.1.txt(平均分及名次) 并建立 file7.1.txt 的文件存储优秀学生干部的 )长江大学机械工程学院信息。 信息。 (2) 设立循环,从第一个学生的第一个科目开始,判断 1平均分85 2. 名次在 ) 设立循环,从第一个学生的第一个科目开始, 平均分 本班前 20%名 3平均分80,并且至少有一门课的成绩为95 分 4平均分 名 平均分 ,并且至少有一门课的成绩为 直到判断完此学生所有的成绩信息; 80,并且至少有二门课的成绩为90 分直到判断完此学生所有的成绩信息; ,并且至少有二门课的成绩为 接着进行第二个同学的判断。 最终输出所有优秀学生的信息, 接着进行第二个同学的判断。 最终输出所有优秀学生的信息, 信息包括 学号、 “学号、 姓名、性别、职务、名门课成绩、平均分和名次” 姓名、性别、职务、名门课成绩、平均分和名次” 程序要点如下: 程序要点如下: for(i=0;iM;i+) m=0;n=0; for(j=0;j=95) m+; if(stri.scorej=90) n+; if(strcmp(stri.position,str0.position)!=0)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论