通达学院程序设计上机

更新时间:2024-03-31 13:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

南京邮电大学通达学院 程序设计(上机)报告

题 专 学 班 指 日

目: P014M W006M

业 信息工程 生 姓 名 刘佳利 级 学 号 12000203 导 教 师 赵卫滨 期 2013.10.

评分项 遵守机房规章制度 优秀 良好 中等 及格 不及格 评上机表现 学习态度 基础知识水平 程序设计能力 课题功能实现情况 算法设计合理性 用户界面友好性 报告书写认真程度 报告内容完整性 文字表达清楚程度 问题回答准确性 分细则注:评分等级分为五种:优秀、良好、中等、及格、不及格

评分等级备注 教师签名: 年 月 日 实验报告 题目一:P014M

一、 问题描述

设计一个程序,统计一个班(最多有35人)的学生成绩,要求能实现如下四

个功能:

(1)由键盘输入每个学生的学号和四门课程的成绩。 (2)计算每个学生的平均分和总分。

(3)按总分从高到低排出名次,并按名次输出每个学生的情况,包括学号、各科成绩、平均分和总分。

(4)根据用户要求输出某门课程(由键盘输入课程号)成绩在90分以上(含90分)且总分在前五名的学生情况,包括:学号、各科成绩、平均分和总分。

具体要求如下:

(1)每个功能为一个独立的函数。 (2)所有的输入之前都要有提示。

二、课程分析

1、结构图

输入学生成绩学号 计算平均分和总分 将学生按分数排序 统计某科分数在90分以上并且总分成绩前5的学生

2.数据结构的设计

根据题意本程序分4部分。

首先定义结构体学生student,包含成员变量学号num,成绩数组score,完整定义如下:

typedef struct student {

int num;

float score[4]; }

题目要求的功能可以通过操作成员变量实现。 输入学生成绩由输入输出函数完成。

然后用求和和求平均来完成总分和平均分计算。 然后进行数组排序,按要求将成绩排序。 最后输出时进行筛选。 三.流程图

欢迎进入 功能选择 1 2 3 4 1~8选择 5 6 8 7 输入学生成绩查询学生成绩修改学生成绩学生成绩排序统计学生成绩打开文件保存文件退出系统

五.程序源:

#include #define NUM 35

typedef struct student {

int num;

float score[4]; }STU;

STU stu[NUM];

/*输入学生信息函数*/

退出系统 课程A 课程B 课程C 课程D 继续

void input() {

int i;

printf(\输入%d个学生的学号与四门课成绩:\\n\for(i=0; i

scanf(\[i].score[2],&stu[i].score[3]); } }

/*计算学生总分函数*/ float sum(STU s) {

return s.score[0]+s.score[1]+s.score[2]+s.score[3]; }

/*计算学生平均分函数*/ float avg(STU s) {

return sum(s)/4; }

/*按总分排序*/ void sort() {

int i,j,k; STU temp;

for(i=0; i

k = i;

for(j=i+1; j

if(sum(stu[k]) < sum(stu[j])) {

k = j; } }

if(k != i) {

temp = stu[k];

stu[k] = stu[i]; stu[i] = temp; } } }

/*输出学生信息*/ void output() {

int i;

printf(\学号\\t语文\\t数学\\t英语\\t物理\\t平均分\\t部分\\n\for(i=0; i

printf(\

stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],avg(stu[i]),sum(stu[i])); } }

void print(int n) {

int i;

printf(\学号\\t语文\\t数学\\t英语\\t物理\\t平均分\\t部分\\n\

for(i=0; i<5; i++) {

if(stu[i].score[n]>=90) {

printf(\

stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],avg(stu[i]),sum(stu[i])); } } }

void main() {

int n;

input();//输入学生信息 sort();//按总分排序

output();//输出排序后的结果

printf(\输入课程号(0表示语文,1表示数学,2表示英语,3表示物理):\scanf(\

print(n);//打印课程成绩在90分以上的学生信息 }

六.相关程序图

七.调试记录 调试记录: 1、开始查询学生信息时,总是无法删掉小于90分的学生的成绩,但后来把flag

统一换成sum是就运行成功了。原来之前没注意一会用flag一会用sum。 2、之前按0老是退不出去,我一直很奇怪,毕竟程序没问题,后来试了一下把

规格弄整齐就好了。 八. 实验结果分析与讨论

实验结果如上所附截图,输入35个学生的学号及四门课程成绩后,程序运

行得到每位学生的平均分及总分,并按总分排序,然后依据输入课程号统计该门课程成绩前五的学生。程序通过定义结构体成功操作相关联的数据,达到题目要求。为方便,程序中将学生数宏定义为35,也可以在程序运行时输入学生数,然后再定义结构体数组。

W006

一、 问题描述

编写一个小程序,可以读入一个英文的文本文件,显示这个文件,并统计这个文件有多少字符,多少单词,多少空白(空格、TAB),多少个段落,按照单词长度进行统计。

二、课题分析 定义个计数器,编写打开程序,打开文件,若无法打开就输出Cannot open flie,读入文本内容,逐个读入字符,根据字符的不同进行统计。若读入大小写字母或数字,则字符数加1,若读入空格,则单词数加1,s且空格数加1,若读入水平制表符,则TAB数加1,若读入换行符,是则段落数加1,若读入”.”或“?”等标点符号,则单词数加1,其他符号数加1,若读入空格或数字,是则单词数减1,不是则其他字符数加1。然后输出个计数器,最后关闭文件。

三、算法描述(流程图)

打开磁盘中文本文

操 作 系 N 无法打开文统判断 件 Y error

读入文本

内容

Y N 读入文 本,统计 大小写字 母或数字 character+ + 读入文 Y 本统计

空格

word++,spa N ce++

读入文 本统计 水平制 TAB++

读入文 Y paragraph++ 本统计

换行 N

word++,others++ 读入文本统计”.

Y

N

Y word--

N others++

关闭文件

输出结果

四、源程序

#include #include void main() { char s;

char c[100];

int i=0,character=0,word=0,space=0,TAB=0,paragraph=1; FILE *fp;

printf(\请输入磁盘文件名:\\n\ scanf(\

if ((fp=fopen(c,\ { printf(\ exit(0);

}

s=fgetc(fp);

while(s!=EOF) { putchar(s);

if (s>='a'&&s<='z'||s>='A'&&s<='Z'||s>='0'&&s<='9') {

character++; }

else if(s==' ') {

word++,space++; }

else if(s=='\\t') {

TAB++; }

else if(s=='\\n') {

paragraph++; }

else if(s=='.'&&'?') {

word++; }

else if(s==' '||s>='0'&&s<='9') {

word--; } s=fgetc(fp); }

printf(\

printf(\ printf(\ printf(\ printf(\

printf(\ fclose(fp); printf(\}五、程序测试记录 第一次:请输入磁盘名 d:/123

Cannot open file

Press any key to continue

第二次:请输入磁盘名 d:/123.txt

I am a student#

Character:11word:3space:3space:3TAB:0paragraph:2others:1 Press any key to continue

六、相关运行界面

七、调试记录

1、先在D盘建立一个文本文件

2、执行程序读入数据发现无法读取

3、发现输入文件名时没有加入后缀.txt导致无法读取 4、修改后可执行

八、实验结果分析与讨论

该程序不能计算出单词的长度及最长的单词是什么。但是能将字符与单词简单、明了的统计。在输入磁盘名时,应先在磁盘中建立文本文件,输入时需给出完整路径。

本文来源:https://www.bwwdw.com/article/1f1r.html

Top