您好,欢迎来到小侦探旅游网。
搜索
您的当前位置:首页c语言实验报告

c语言实验报告

来源:小侦探旅游网


课 程 设 计 报 告

学 院: 计算机学院·软件学院 课程名称: 高级语言程序设计 专业班级: 11科技2班 学生姓名: 学号:

指导教师: 李革

完成时间: 2011 年 12 月 25

目录

1.菜单选择程序课程设计 2.学生信息管理系统课程设计

题目1: 菜单选择程序课程设计

一、课程设计内容与要求

1.主菜单

编写程序能够显示以下的主菜单:

**************************************** 主菜单: 1.字母数字转换

2.奖金发放 3.打印月历 4.打印水仙花 5.查找最大最小数 6.退出

****************************************

在主菜单程序中,根据输入的数字1~6来选择相应的选项,在执行完每一个选项之后,返回主菜单(退出除外)。每一个菜单要完成的任务由下面的2~7依次给出。编写的源程序以zhsy1.cpp保存。

2.字母数字转换

编写一个函数,能够将字母电话号码转换成数字号码(假设输入的字母都是大写字母,输入的电话号码以#结束):

例如:输入电话号码:CALLATT,则输出:2255288。

输入电话号码:1-800-COL-LECT,则输出:1-800-265-5328。

提示:电话上的字母、数字对照表如下:2=ABC,3=DEF,4=GHI,5=JKL,6=MNO,7=PRS,8=TUV,9=WXY。如果原始的电话号码中出现了非字母字符,则这部分字符保持不变。

3.奖金发放

企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;超过40万元的部分按3%提成,编写一个函数从键盘输入当月利润,输出应发放奖金的总数?

4.打印月历

编写一个函数,打印一个月的月历。要求给出要打印月份的天数以及本月第一天是星期几。

2

5.打印水仙花数

三位水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)。编写一个函数,打印出所有的三位的水仙花数。

6.查找最大最小数

编写函数,从键盘上输入N个整数,找出其中最大的和最小的数。要求输入N的值,以及这N个数。

7.退出

输入菜单项的第6项,退出整个程序的运行。

二、需求分析

1. 程序的功能:

制作一个主菜单,并可以执行字母转换,奖金发放,打印月历,打印水仙花,查找最大最小数的功能。

2.输入输出的要求

1)3中输出长整型的利润,保留2位小数 2)4中打印月历靠左边打印 3)5中打印水仙花为4个字符 三、详细设计

函数的调用关系图

主函数main() 主菜单() f1(字母数字转换)() f2(奖金发放)() f3(打印月历) () f4(打印水仙花)() f5(查找最大最小数)() f6退出() 四、调试分析

调试中遇到的问题及对问题的解决方法

1)对程序题目分析不够透彻,通过自己查找问题得到了解决;

2)在自己想了很久都没有想出程序的情况下请教了老师并得到了解决; 3)与同学一起讨论后使程序更加完全,更加符合要求。

3

五、使用说明及测试结果

显示1函数为以下的主菜单:

**************************************** 主菜单: 1.字母数字转换

2.奖金发放 3.打印月历 4.打印水仙花 5.查找最大最小数 6.退出

**************************************** 调用2函数运行结果参考示例如下图所示:

调用“字母数字转换”函数的运行结果

调用3函数运行结果参考示例如下图所示:

4

调用“奖金发放”函数的运行结果

调用4函数运行结果参考示例如下图所示:

调用“打印月历”函数的运行结果

调用5函数运行结果参考示如下图所示:

调用“打印水仙花”函数的运行结果

调用6函数运行结果参考示例如下图所示:

5

调用“查找最大最小数”函数的运行结果

整个程序所有的函数连续调用的程序运行结果下图所示:

6

六:源程序 实验一

#include int f1() {

char ch;

printf(\"请输入电话号码,以#键结束\"); while((ch=getchar())!='#') {

if(ch=='A'||ch=='B'||ch=='C') ch='2'; if(ch=='D'||ch=='E'||ch=='F') ch='3'; if(ch=='G'||ch=='H'||ch=='I') ch='4'; if(ch=='J'||ch=='K'||ch=='L') ch='5'; if(ch=='M'||ch=='N'||ch=='O') ch='6';

if(ch=='P'||ch=='Q'||ch=='S'||ch=='R') ch='7'; if(ch=='T'||ch=='U'||ch=='V') ch='8';

if(ch=='W'||ch=='X'||ch=='Y'||ch=='Z') ch='9'; else ch=ch;

printf(\"%c\",ch); }

printf(\"\\n\");

printf(\"------请输入菜单项------\\n\"); return 0; }

int f2() {

int a;

long float sum;

printf(\"请输入利润:\\n\"); scanf(\"%d\",&a); if(a<=100000) sum=a*0.1; else

if(a>100000&&a<200000)

sum=100000*0.1+(a-100000)*0.075; else

if(a>200000&&a<400000)

sum=200000*0.1+(a-200000)*0.05; else

sum=400000*0.1+(a-400000)*0.03; printf(\"奖金是:%5.2f\\n\",sum);

printf(\"------请输入菜单项------\\n\"); return 0;

7

}

int f3() {

int a,b,c,j,k,n;

printf(\"请输入显示月的天数:\"); scanf(\"%d\",&a);

printf(\"请输入这个月开始的一天属于星期几:(1=星期日,2=星期二.....):\");

scanf(\"%d\",&b); n=0;

for(j=1;jprintf(\"\\"); n++; }

for(k=1;kprintf(\"%d\\",k); n++;

if(n%7==0) printf(\"\\n\"); }

printf(\"\\n\");

printf(\"------请输入菜单项------\\n\"); return 0; }

int f4() {

int a,b,c,d;

printf(\"水仙花数是:\\n\"); for(a=100;a<1000;a++) {

b=a/100; c=a/10-b*10; d=a%10;

if(a==b*b*b+c*c*c+d*d*d) printf(\"%d \",a); }

printf(\"\\n\");

printf(\"------请输入菜单项------\\n\"); return 0; }

int f5() {

8

int n,s,i,max,min;

printf(\"请输入数据的个数n:\\n\"); scanf(\"%d\",&s);

printf(\"请输入这%d个数:\\n\",s); scanf(\"%d\",&i); max=i;min=i; for(n=s;n>1;n--) { scanf(\"%d\",&i); if(maxi) min=i;}

printf(\"这%d个数中,最大的数是%d,最小的数是%d.\\n\",s,max,min); printf(\"------请输入菜单项------\\n\"); return 0; }

int main() {

int a;

printf(\"**************************\\n\"); printf(\"主菜单:\\n\");

printf(\"1.字母数字转换\\n\"); printf(\"2.奖金发放\\n\"); printf(\"3.打印月历\\n\"); printf(\"4.打印水仙花\\n\");

printf(\"5.查找最大最小数\\n\"); printf(\"6.退出\\n\");

printf(\"**************************\\n\"); printf(\"------请输入菜单项------\\n\"); while(scanf(\"%d\",&a)!=EOF&&a!=6) switch(a) {

case 1:f1();break; case 2:f2();break; case 3:f3();break; case 4:f4();break; case 5:f5();break; default:main(); }

return 0; }

9

实验2:学生信息管理系统课程设计

一、 课程设计内容与要求

编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。每个学生的信息包括:学号、姓名、性别、班级、3门课程的成绩。系统功能模块如图2.1所示。

图2.1 学生信息管理系统功能模块图

1.主菜单设计

使用printf函数设计一个如下格式的主菜单:

**************************************************************************** 1:数据输入 2:数据修改 3:数据的处理 4:数据输出 5:退出

****************************************************************************

在主菜单程序中,应该能够根据输入的数字来执行相应的选项,即:输入1~4时执行菜单对应选项内容,执行完相关内容返回显示主菜单;输入5时结束程序运行;输入1~5之外的其它信息,提示输入错误。每一个菜单要完成的任务由下面的2~ 6依次给出。

2.数据输入

编写一个函数完成学生信息的输入功能,当学号输入为0时结束信息输入。每个学生的信息包括如下几个方面:学号、姓名、性别、班级、以及语文、数学、英语三门课程成绩。

3.数据输出

编写一个函数完成学生信息的输出功能。要求该函数能够将学生的当前各项信息按照较为整齐的格式输出。

4.数据修改

编写一个函数完成学生信息的修改功能。要求该函数能够以学号为查询关键字,将满足查找条件的学生信息显示输出,并以菜单形式提供可供修改的项目,选择项目并完成修改;如果无满足查找条件的记录,则提示“无该学号学生记录!”。

5.数据处理

编写一个函数完成学生信息的处理功能。数据处理:可以选择的处理方式为:排序、查询、统计。其中:

a) 排序:按学号排序;

b) 查询:根据学号查询该学生的所有信息;

c) 统计:可以选择统计各学生的平均成绩或统计所有存在不及格科目的学生。

10

提示:可以将该模块分解成更小的几个子模块来实现。每个子模块通过定义不同的函数来完成其功能。 6.退出

当在主菜单中选择了5退出时,输出“谢谢使用!”,结束整个程序的运行。 二、需求分析

1. 程序的功能:

编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。 2. 测试数据:学号、姓名、性别、班级、3门课程的成绩。 三、详细设计

1. 用C语言定义相关的数据类型

struct student_list {

int number; //学生学号 char name[10]; //学生姓名 char sex[2]; //学生性别 int classes; //学生班级

float china; //学生的语文成绩 float math; //学生的数学成绩 float english; //学生的英语成绩 }

2. 画出函数的调用关系图

主函数

1:数据输入 ()

2:数据修改 ()

1:排序

3:数据的处理 () 2:查询

4:数据输出 () 3:统计

1:统计平均分 2:统计不及格学生信息

四、调试分析

1)对数组的掌握不够透彻,通过调试后对数组有了进一步了解;

2)会存在一些非智力因素造成的错误,通过多次的细心观察找出了一些小错误,并谨防下次再犯。

五、使用说明及测试结果

数据输入运行结果示例如图2.2所示:

11

图2.2 数据输入运行结果

数据输出运行结果示例如图2.3所示:

图2.3 数据输出运行结果

数据修改的运行结果示例如图2.4所示:

12

图2.4 数据修改的运行结果

数据处理中排序操作的运行结果示例如图2.5所示:

图2.5 数据排序的运行结果

数据处理中查询操作的运行结果示例如图2.6所示:

13

图2.6 数据查询的运行结果

数据处理中统计操作的运行结果示例如图2.7所示:

图2.7 数据统计的运行结果

退出程序运行结果示例如图2.8所示:

14

图2.8 退出程序的运行结果

实验二

#include #include struct student{ long num;

char name[25]; char sex; int bj; float yw; float sx; float yy; };

struct student stu[50]; int n=1,i;

void print_m0() {

printf(\"****************************************************************************\\n\");

printf(\"1:数据输入 2:数据修改 3:数据处理\\n\"); printf(\"4:数据输出 5:退出系统\\n\");

printf(\"****************************************************************************\\n\");

printf(\"请选择需要进行的操作(1~5):\"); }

void print_m1() {

printf(\"****************************************************************************\\n\");

printf(\"1:按学号排序 2:查询 \\n\"); printf(\"3:统计 4:返回主菜单 \\n\");

printf(\"****************************************************************************\\n\");

printf(\"请选择具体的处理内容(1~4):\");

15

}

void print_m2() {

printf(\"****************************************************************************\\n\");

printf(\"1:统计平均分 2:统计不及格学生信息 3:返回 \\n\");

printf(\"****************************************************************************\\n\");

printf(\"请再选择具体的处理内容(1~3):\"); }

void print_m3(){

printf(\"学号 姓名 性别 班级 语文 数学 英语 \\n\");

printf(\"--------------------------------------------------------\\n\"); }

void xj() {

while(1){

printf(\"请输入第%d个学生的学号(输入0结束):\",n); scanf(\"%ld\",&stu[n].num); if(stu[n].num==0) return;

printf(\"请输入第%d个学生的姓名:\",n); scanf(\"%s\",&stu[n].name); getchar();

printf(\"请输入第%d个学生的性别:\",n); scanf(\"%c\",&stu[n].sex);

printf(\"请输入第%d个学生的班级:\",n); scanf(\"%d\",&stu[n].bj);

printf(\"请输入第%d个学生的语文成绩:\",n); scanf(\"%f\",&stu[n].yw);

printf(\"请输入第%d个学生的数学成绩:\",n); scanf(\"%f\",&stu[n].sx);

printf(\"请输入第%d个学生的英语成绩:\",n); scanf(\"%f\",&stu[n].yy); n++; } }

void print() {

print_m3();

for(i=1;i16

printf(\"%-8ld%-8s%-8c%-8d%-8.2f%-8.2f%-8.2f\\n\",stu[i].num,stu[i].name,stu[i].sex,stu[i].bj,stu[i].yw,stu[i].sx,stu[i].yy); }

void px()

{ int j;

struct student t; system(\"cls\"); for(i=1;ifor(j=i+1;jif(stu[i].num>stu[j].num) {

t=stu[i];

stu[i]=stu[j]; stu[j]=t; }

printf(\"排序后结果为:\\n\"); print(); }

void cx() {

int num;

printf(\"输入要查询的学生的学号:\"); scanf(\"%ld\",&num); for(i=1;iif(stu[i].num==num){ print_m3();

printf(\"%-8d%-8s%-8c%-8d%-8.2f%-8.2f%-8.2f\\n\",stu[i].num,stu[i].name,stu[i].sex,stu[i].bj,stu[i].yw,stu[i].sx,stu[i].yy); return; } }

printf(\"\\n\无该学号学生记录!\\n\"); }

void xg() {

long num;

printf(\"请输入要修改信息的学生的学号:\"); scanf(\"%ld\",&num); for(i=1;iif(stu[i].num==num){

17

printf(\"------------------------------------------------\\n\"); printf(\"1:学号 2:姓名 3:性别 4:班级 \\n5:语文成绩 6:数学成绩 7:英语成绩 8:退出修改 \\n\");

printf(\"------------------------------------------------\\n\"); printf(\"请选择要修改的项目(1~8)\"); while(scanf(\"%ld\",&num)) {

switch(num){ case 1:{

printf(\"请输入该学生的新学号\"); scanf(\"%ld\",&stu[i].num);break; } case 2:{

printf(\"请输入该学生的新姓名:\"); scanf(\"%s\",stu[i].name);break; } case 3:{

printf(\"请输入该学生的新性别:\"); getchar();

scanf(\"%c\",&stu[i].sex);break; } case 4:{

printf(\"请输入该学生的新班级:\"); scanf(\"%d\",&stu[i].bj);break; } case 5:{

printf(\"请输入该学生的新语文成绩:\"); scanf(\"%f\",&stu[i].yw);break; } case 6:{

printf(\"请输入该学生的新数学成绩:\"); scanf(\"%f\",&stu[i].sx);break; } case 7:{

printf(\"请输入该学生的新英语成绩:\"); scanf(\"%f\",&stu[i].yy);break; }

case 8:return; }

print_m3();

printf(\"%-8ld%-8s%-8c%-8d%-8.2f%-8.2f%-8.2f\\n\",stu[i].num,stu[i].

18

name,stu[i].sex,stu[i].bj,stu[i].yw,stu[i].sx,stu[i].yy);

printf(\"------------------------------------------------\\n\"); printf(\"1:学号 2:姓名 3:性别 4:班级 \\n5:语文成绩 6:数学成绩 7:英语成绩 8:退出修改 \\n\");

printf(\"------------------------------------------------\\n\"); printf(\"请选择要修改的项目(1~8)\"); } } }

printf(\"\\n\\查无此学生记录\\n\"); }

void pjs() {

printf(\"所有学生的平均成绩是:\\n\"); printf(\"学号 姓名 平均 \\n:\"); printf(\"-----------------------------\\n\"); for(i=1;iprintf(\"%-8ld%-8s%-8.2f\\n\",stu[i].num,stu[i].name,(stu[i].yw+stu[i].sx+stu[i].yy)/3); } }

void bjg() {

printf(\"有不及格科目的学生是:\\n\"); print_m3();

for(i=1;iif(stu[i].yw<60||stu[i].sx<60||stu[i].yy<60)

printf(\"%-8d%-8s%-8c%-8d%-8.2f%-8.2f%-8.2f\\n\",stu[i].num,stu[i].name,stu[i].sex,stu[i].bj,stu[i].yw,stu[i].sx,stu[i].yy); } }

void tj() {

int x;

print_m2();

while(scanf(\"%d\",&x)) switch(x){

case 1:pjs();print_m2();break; case 2:bjg();print_m2();break; case 3:system(\"cls\");return;

19

} }

void cl() {

int x;

print_m1();

while(scanf(\"%d\",&x)){ switch(x){

case 1:px();print_m1();break; case 2:cx();print_m1();break; case 3:tj();print_m1();break; case 4:system(\"cls\");return; } } }

int main(){ int x;

print_m0();

while(scanf(\"%d\",&x)) switch(x){

case 1:xj();print_m0();break; case 2:xg();print_m0();break; case 3:cl();print_m0();break; case 4:print();print_m0();break; case 5:exit(0); } }

20

《程序设计》课程设计评分表

项 目 完成情况(50%) 评 分 课程设计报告的质量(30%) 考勤与表现(20%) 综合评分

指导教师签名:

日 期:_ 年 月 日_

21

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务