C语言课程设计优质作业含运行截图.docx

上传人:b****6 文档编号:7582033 上传时间:2023-01-25 格式:DOCX 页数:21 大小:96.84KB
下载 相关 举报
C语言课程设计优质作业含运行截图.docx_第1页
第1页 / 共21页
C语言课程设计优质作业含运行截图.docx_第2页
第2页 / 共21页
C语言课程设计优质作业含运行截图.docx_第3页
第3页 / 共21页
C语言课程设计优质作业含运行截图.docx_第4页
第4页 / 共21页
C语言课程设计优质作业含运行截图.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

C语言课程设计优质作业含运行截图.docx

《C语言课程设计优质作业含运行截图.docx》由会员分享,可在线阅读,更多相关《C语言课程设计优质作业含运行截图.docx(21页珍藏版)》请在冰豆网上搜索。

C语言课程设计优质作业含运行截图.docx

C语言课程设计优质作业含运行截图

 

C语言课程设计报告

ExperimentDesigningreporter

 

课程名称:

C语言课程设计

英文名称:

CProgramExperimentDesigning

专业:

工商管理类+软件工程095

学号:

09********

姓名:

@哒winci

指导教师:

陈**

日期:

2010年7月12日至2010年7月22日

 

大连交通大学软件学院

《C语言课程设计》报告

CProgramExperimentDesigning

课程编号:

01200308005学时:

40学时

适用专业:

软件工程专业授课单位:

软件学院

 

一、C语言课程设计目的及要求

目的:

根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。

要求:

1.熟悉TurboC的编程环境、主要菜单功能。

2.通过上机验证运算符、表达式、运算规则、函数使用。

3.熟练使用C语言的典型语句编写简单程序。

4.调试典型例题或习题。

5.提高上机编程能力

二、实验类型

设计类型

三、实验学时

40学时

四、实验设备

微型计算机、WINDOWS98以上版本的操作系统、TurboC2.0软件一套

五、C语言课程参考教材:

1.C语言程序设计清华大学出版社马靖善主编

2.谭浩强.C语言程序设计(第三版).北京:

高等教育出版社,2002

 

课程设计(报告)任务书

任务及要求:

1.设计(研究)内容和要求

研究内容:

(1).歌星大赛打分系统

(2).五个国家名排序

(3).谜语博士的难题

(4).哪个大夫哪天值班

(5).分辨黑与白

(6)学生成绩查询系统

任务和要求:

(1).学习C语言基础知识,掌握C语言编程和程序调试的基本技能。

(2).对指导教师下达的题目进行系统分析。

(3).根据分析结果完成系统设计。

(4).编程:

在计算机上实现题目的代码实现。

(5).完成对该系统的测试和调试。

(6).提交课程设计报告。

(7).指标:

要求完成课程设计报告3千字以上(约二、三十页).

完成若干综合性程序设计题目,每个综合设计题目的语句行数的和在300行语句以上.

2.原始依据

了解C语言的基础知识,有一定的语言编程基础,能够熟练运用C语言进行程序设计。

通过用C语言完成的题目,提高用C语言解决实际问题的能力。

3.参考文献

[1]黄明等.C语言程序设计辅导教材.大连理工大学出版社,2006

[2]马靖善等.C语言程序设计.清华大学出版社,2005

[3]谭浩强.C语言程序设计(第二版).北京:

高等教育出版社,2002

 

2010年7月20日

 

目录

1歌星大赛打分系统

1.1功能说明1

1.2设计说明1

1.3程序运行截图1

1.4源程序代码1

2五个国家名排序2

2.1功能说明2

2.2设计说明2

2.3程序运行截图2

2.4源程序代码2

3谜语博士的难题3

3.1功能说明3

3.2设计说明3

3.3程序运行截图4

3.4源程序代码4

4哪个大夫哪天值班4

4.1功能说明4

4.2设计说明………………………………………………………………………...4.3程序运行截图4

4.4源程序代码5

5分辨黑与白5

5.1功能说明5

5.2设计说明5

5.3程序运行截图10

5.4源程序代码11

6学生成绩查询系统

6.1功能说明5

6.2设计说明5

6.3程序运行截图10

6.4源程序代码11

 

1歌星大赛打分系统

1.1功能说明

在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1-100分。

选手最后得分为:

去掉一个最高分和一个最低分后其余8个分数的平均值。

编写程序实现。

1.2设计说明

从键盘上输入评委的打分,用for循环结构求出分数中的最大值max、最小值min以及所有分数的和sum,最后输出sum-max-min的值

1.3程序运行截图

1.4源程序代码

#include

intmain()

{

intinteger,i,max,min,sum;

max=-32768;/*先假设当前的最大值max为C语言整型数的最小值*/

min=32767;/*先假设当前的最小值min为C语言整型数的最大值*/

sum=0;/*将求累加和变量的初值置为0*/

for(i=1;i<=10;i++)

{

printf("Inputnumber%d=",i);

scanf("%d",&integer);/*输入评委的评分*/

sum+=integer;/*计算总分*/

if(integer>max)max=integer;/*通过比较筛选出其中的最高分*/

if(integer

}

printf("Canceledmaxscore:

%d\nCanceledminscore:

%d\n",max,min);

printf("Averagescore:

%d\n",(sum-max-min)/8);/*输出结果*/

getch();

}

2五个国家名排序

2.1功能说明

输入5个国名并按字母顺序排列后输出。

2.2设计说明

主函数voidmain():

从键盘上输入各个国家的名字数组cs[5],然后用字符串运算符strcpy将数组cs[5]copy到st[20],再比较两数组对应各元素,输出

2.3程序运行截图

2.4源程序代码

#include

#include

voidmain()

{

charst[20],cs[5][20];

inti,j,p;

printf("inputcountry'sname:

\n");

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

gets(cs[i]);

printf("\n");

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

{p=i;strcpy(st,cs[i]);

for(j=i+1;j<5;j++)

if(strcmp(cs[j],st)<0)p=j;

if(p!

=i)

{

strcpy(st,cs[i]);

strcpy(cs[i],cs[p]);

strcpy(cs[p],st);

}

puts(cs[i]);

}

printf("\n");

getch();

}

3谜语博士的难题

3.1功能说明

两面族是荒岛上的一个新民族,他们的特点是说话真一句假一句且真假交替。

如果第一句为真,则第二句是假的;如果第一句为假的,则第二句就是真的,但是第一句是真是假没有规律。

迷语博士遇到三个人,知道他们分别来自三个不同的民族:

诚实族、说谎族和两面族。

三人并肩站在博士前面。

博士问左边的人:

“中间的人是什么族的?

”,左边的人回答:

“诚实族的”。

博士问中间的人:

“你是什么族的?

”,中间的人回答:

“两面族的”。

博士问右边的人:

“中间的人究竟是什么族的?

”,右边的人回答:

“说谎族的”。

判断这三个人都是哪个民族的。

3.2设计说明

变量A=1表示:

左边的人是诚实族的(用C语言表示为A);

变量B=1表示:

中间的人是诚实族的(用C语言表示为B);

变量C=1表示:

右边的人是诚实族的(用C语言表示为C);

变量AA=1表示:

左边的人是两面族的(用C语言表示为AA);

变量BB=1表示:

中间的人是两面族的(用C语言表示为BB);

变量CC=1表示:

右边的人是两面族的(用C语言表示为CC);

则左边的人是说谎族可以表示为:

A!

=1且AA!

=1(不是诚实族和两面族的人)

用C语言表示为:

!

A&&!

AA

中间的人是说谎族可以表示为:

B!

=1且BB!

=1

用C语言表示为:

!

B&&!

BB

右边的人是说谎族可以表示为:

C!

=0且CC!

=1

用C语言表示为:

!

C&&!

CC

根据题目中“三人来自三个民族”的条件,可以列出:

a+aa!

=2&&b+bb!

=2&&c+cc!

=2且a+b+c==1&&aa+bb+cc==1

根据左边人的回答可以推出:

若他们是诚实族,则中间的人也是诚实族;若他不是诚实族,则中间的人也不是诚实族。

以上条件可以表示为:

c&&!

b&&!

bb||(!

c&&!

cc)&&(b||bb)||!

c&&cc

将全部逻辑条件联合在一起,利用穷举的方法求解,凡是使上述条件同时成立的变量取值就是题目的答案。

3.3程序运行截图

3.4源程序代码

#include

intmain()

{

inta,b,c,aa,bb,cc;

for(a=0;a<=1;a++)/*穷举全部情况*/

for(b=0;b<=1;b++)

for(c=0;c<=1;c++)

for(aa=0;aa<=1;aa++)

for(bb=0;bb<=1;bb++)

for(cc=0;cc<=1;cc++)

if(a+aa!

=2&&b+bb!

=2&&c+cc!

=2&&/*判断逻辑条件*/

a+b+c==1&&aa+bb+cc==1&&

(a&&!

aa&&b&&!

bb||!

a&&!

b)&&

!

b&&

(c&&!

b&&!

bb||(!

c&&!

cc)&&(b||bb)||!

c&cc))

{

printf("Themanstandonleftisa%s.\n",

aa?

"double--dealer":

(a?

"honest":

"lier"));

printf("Themanstandonleftisa%s.\n",

bb?

"double--dealer":

(b?

"honest":

"lier"));

printf("Themanstandonleftisa%s.\n",

cc?

"double--dealer":

(c?

"honest":

"lier"));

/*输出最终的推理结果*/

}

getch();

}

4哪个大夫哪天值班

4.1功能说明

医院有A、B、C、D、E、F、G七位大夫,在一星期内(星期一至星期天)每人要轮流值班一天。

现在已知:

A大夫比C大夫晚一天值班;

D大夫比E大夫晚二天值班;

B大夫比G大夫早三天值班;

F大夫的值班日在B和C大夫的中间,且是星期四;

确定每天究竟是哪位大夫值班。

4.2设计说明

由题目可推出如下已知条件:

F是星期四值班;

B值班的日期在星期一至星期三,且三天后是G值班;

C值班的日期在星期五至星期六,且一天后是A值班;

E两天后是D值班;E值班的日期只能在星期一至星期三;

在编程时用数组元素的下标1到7表示星期一到星期天,用数组元素的值分别表示A-F七位大夫。

4.3程序运行截图

4.4源程序代码

#include

#include

inta[8];

char*day[]={"","MONDAY","TUESDAY","WED","THUSDAY",

"FRIDAY","SATDAY","SUNDAY"};

main()

{

inti,j,t;

a[4]=6;

for(i=1;i<=3;i++)

{

a[i]=2;

if(!

a[i+3])a[i+3]=7;

else{a[i]=0;continue;}

for(t=1;t<=3;t++)

{

if(!

a[t])a[t]=5;

elsecontinue;

if(!

a[t+2])a[t+2]=4;

else{a[t]=0;continue;}

for(j=5;j<7;j++)

{

if(!

a[j])a[j]=3;

elsecontinue;

if(!

a[j+1])a[j+1]=1;

else{a[j]=0;continue;}

for(i=1;i<=7;i++)

printf("Doctor%disonduty%s.\n",1+a[i]-1,day[i]);

}

}

}

getch();

}

5分辨黑与白

5.1功能说明

有A、B、C、D、E五人,每人额头上都帖了一张黑或白的纸。

五人对坐,每人都可以看到其它人额头上的纸的颜色。

五人相互观察后,

A说:

“我看见有三人额头上帖的是白纸,一人额头上帖的是黑纸。

B说:

“我看见其它四人额头上帖的都是黑纸。

C说:

“我看见一人额头上帖的是白纸,其它三人额头上帖的是黑纸。

D说:

“我看见四人额头上帖的都是白纸。

E什么也没说。

现在已知额头上帖黑纸的人说的都是谎话,额头帖白纸的人说的都是实话。

判断五人谁的额头是帖白纸,谁的额头是帖黑纸。

5.2设计说明

假如变量A、B、C、D、E表示每个人额头上所帖纸的颜色,0代表是黑色,1代表是白色。

根据题目中A、B、C、D四人所说的话可以总结出下列关系:

A说:

a&&b+c+d+e==3||!

a&&b+c+d+e!

=3

B说:

b&&a+c+d+e==0||!

b&&a+c+d+e!

=0

C说:

c&&a+b+d+e==1||!

c&&a+b+d+e!

=1

D说:

d&&a+b+c+e==4||!

d&&a+b+c+e!

=4

穷举每个人额头所帖纸的颜色的所有可能的情况,代入上述表达式中进行推理运算,使上述表达式为“真”的情况就是正确的结果。

5.3程序运行截图

5.4源程序代码

#include

intmain()

{

inta,b,c,d,e;

for(a=0;a<=1;a++)/*黑色:

0白色:

1*/

for(b=0;b<=1;b++)/*穷举五个人额头帖纸的全部可能*/

for(c=0;c<=1;c++)

for(d=0;d<=1;d++)

for(e=0;e<=1;e++)

if((a&&b+c+d+e==3||!

a&&b+c+d+e!

=3)

&&(b&&a+c+d+e==0||!

b&&a+c+d+e!

=0)

&&(c&&a+b+d+e==1||!

c&&a+b+d+e!

=1)

&&(d&&a+b+c+e==4||!

d&&a+b+c+e!

=4))

{

printf("Aispastedapieceof%spaperonhisforehead.\n",

a?

"white":

"black");

printf("Bispastedapieceof%spaperonhisforehead.\n",

b?

"white":

"black");

printf("Cispastedapieceof%spaperonhisforehead.\n",

c?

"white":

"black");

printf("Dispastedapieceof%spaperonhisforehead.\n",

d?

"white":

"black");

printf("Eispastedapieceof%spaperonhisforehead.\n",

e?

"white":

"black");

}

getch();

}

6学生成绩查询系统

6.1功能说明

查询修改统计成绩。

6.2设计说明

子函数:

intSelectMainMenu()显示并选择主菜单。

返回:

被选择的菜单项

voidShow()成绩查询模块

voidModify()成绩修改模块

voidStat()成绩统计模块

voidStatAve(float*AveWuLi,float*AveShuXue,float*AveYingYu,float*AveKuaiJi)统计平均分

intFindStudent(intnum)根据学号查找某一学生

voidSetAllTotle()计算所有学生总分

voidSetTotle(intNo)计算第No个学生总分

voidShowAllStudent()显示所有成绩

voidShowTitle()显示表头信息

voidShowStudent(intNo)显示第No个的学生信息

主函数voidmain():

运用switch语句,调用各个子函数完成学生成绩的管理

6.3程序运行截图

6.4源程序代码

#include

structstudent/*成绩表的结构声明*/

{

intnum;

charname[15];

charsex;

floatWuLi;

floatShuXue;

floatYingYu;

floatKuaiJi;

floattotle;

};

/*定义6个学生的信息:

*/

#defineSTU_NUMBER6/*宏定义学生数为6*/

structstudentStu[STU_NUMBER]={{101,"yuchen",'F',98,85,96,89,0},

{102,"xiaotong",'F',99,91,90,93,0},

{103,"likanglong",'M',76,83,74,82,0},

{104,"yinger",'F',88,76,89,77,0},

{105,"fengjiao",'F',97,100,94,96,0},

{106,"sunyao",'M',87,89,66,84,0}};

intSelectMainMenu();/*显示并选择主菜单。

返回:

被选择的菜单项*/

/*所有的函数声明:

*/

voidShow();/*成绩查询模块*/

voidModify();/*成绩修改模块*/

voidStat();/*成绩统计模块*/

voidStatAve(float*AveWuLi,float*AveShuXue,float*AveYingYu,float*AveKuaiJi);/*统计平均分*/

intFindStudent(intnum);/*根据学号查找某一学生*/

voidSetAllTotle();/*计算所有学生总分*/

voidSetTotle(intNo);/*计算第No个学生总分*/

voidShowAllStudent();/*显示所有成绩*/

voidShowTitle();/*显示表头信息*/

voidShowStudent(intNo);/*显示第No个的学生信息*/

voidmain()

{

intisend=0,password=0;/*程序结束标志量,0表示不结束,1表示结束*/

SetAllTotle();/*计算所有学生总分*/

while(password!

=666)

{printf("qingshurumima:

\n");

scanf("%d",&password);

}

while

(1)

{

switch(SelectMainMenu())/*显示并选择主菜单*/

{

case1:

/*成绩查询*/

Show();/*调用成绩查询函数*/

break;

case2:

/*成绩修改*/

Modify();/*调用成绩修改函数*/

break;

case3:

/*成绩统计*/

Stat();/*调用成绩统计函数*/

break;

case4:

/*退出系统*/

printf("\nxiexienindeshiyong,zaijian!

\n\n");

isend=1;/*设置程序结束标志*/

break;

}

if(isend)break;/*程序结束*/

}

}

intSelectMainMenu()/*显示并选择主菜单。

返回:

被选择的菜单项*/

{

intmenu_no=0;

do/*显示并选择菜单*/

{

printf("=================================\n");

printf("\n");

printf("zuozhe:

liyiman\n");

printf("=================================\n");

printf("zhucaidan:

\n");

printf("1-chengjichaxun\n");

printf("2-chengjixiugai\n");

printf("3-chengjitongji\n");

printf("4-tuichuxitong\n");

printf("qingxuanze(1-4):

");

scanf("%d",&menu_no);

}while(menu_no<1&&menu_no>4);/*直到选择出正确的序号*/

returnmenu_no;

}

voidShow()/*成绩查询模块*/

{

intn,i;

while

(1)

{

printf("\n====chengjichaxun====\n");

printf("qingshuruxuehao(shuru0tuichuchengjichaxun,shuru1chaxunquanbu):

");

scanf("%d",&n);

if(n==0)break;/*退出成绩查询模块*/

if(n==1)ShowAllStudent();/*显示所有成绩*/

elseif((i=FindStudent(n))>=0)/*找到学号为n的学生*/

{

ShowTitle();/*显示表头信息*/

ShowStudent(i);/*显示该学生信息*/

}

elseprintf("----zhaobudaogaixuehao----\n");

}

}

voidModify()/*成绩修改模块*/

{

intn,i,a;

while

(1)

{

printf("\n====chengjixiugai====\n");

printf("qingshuruxuehao(shuru0tuichuchengjixiugai):

");

scanf("%d",&n);

if(n==0)break;/*退出成绩修改模块*/

if((i=FindStudent(n

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1