C语言课程设计C语言投票程序.docx

上传人:b****9 文档编号:25604221 上传时间:2023-06-10 格式:DOCX 页数:17 大小:146.32KB
下载 相关 举报
C语言课程设计C语言投票程序.docx_第1页
第1页 / 共17页
C语言课程设计C语言投票程序.docx_第2页
第2页 / 共17页
C语言课程设计C语言投票程序.docx_第3页
第3页 / 共17页
C语言课程设计C语言投票程序.docx_第4页
第4页 / 共17页
C语言课程设计C语言投票程序.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C语言课程设计C语言投票程序.docx

《C语言课程设计C语言投票程序.docx》由会员分享,可在线阅读,更多相关《C语言课程设计C语言投票程序.docx(17页珍藏版)》请在冰豆网上搜索。

C语言课程设计C语言投票程序.docx

C语言课程设计C语言投票程序

 

C程序设计实习报告

 

题目:

C语言投票程序

学院:

专业:

姓名:

班级学号

指导教师:

2010年07月17日

一、课程设计题目描述与要求……………………………………3

二、需求与个人设计思想……………………………………4

三、流程图……………………………………5

四、我的程序设计(源程序)……………………………………6

程序运行情况……………………………………8

五、总结与修改……………………………………9

关于程序实行……………………………………9

问题及可能的解决方法……………………………………9

修改后程序运行情况……………………………………12

修改后的程序优点……………………………………13

心得与体会……………………………………15

C语言投票程序

 

一、课程设计题目描述与要求

要求:

设有代号为a、b、c的足球先生候选人,根据投票者在选票上对他们编号的填写顺序分别记分5、3、2。

请编程从键盘上输入投票人数及投票结果,统计他们的得分,并输出哪位当选足球先生。

注意:

若同一张票上写有两个相同的代号,则显示“此票无效”,若最终前两名得分相同应显示“重新投票”,否则先是三个候选者得分并输出“祝贺X当选冠军!

”。

例如:

投票人数:

5

输入投票内容:

abc

cab

caa该票无效!

cba

bca

三位候选人得分:

a:

12

b:

13

c:

15

祝贺c当选冠军!

提示:

数据结构可用结构体数组,结构体成员包括代号、得分。

或者采用二维数组,行方向对应一张投票,列方向

 

二、需求与个人设计思想

【需求】

此程序意在评出得分最高的“足球先生”,要求编程从键盘上输入投票人数及投票结果,统计他们的得分,并输出哪位当选足球先生。

 

【个人设计思想】

通过结构体数组structcandidateCadt[3]来存储三位候选人的基本信息:

代号、得分。

在用一个一维数组来存储投票内容——代表投票内容(顺序),通过循环语句while,for和一个没有参数的getchar函数(字符输入函数)从终端输入投票内容,处理后得到最终三位候选人得分,比较得到最终结果,评出得分最高的一名候选人,即为“足球先生”。

在过程中,当遇到一张选票上写有两个代号相同时应显示“此票无效”,若最终前两名得分相同应显示“重新投票”,否则先是三个候选者得分并输出“祝贺X当选冠军!

”。

 

三、流程图

1、整体流程图

 

 

图7—1

2、主函数流程图:

图7—2

 

四、我的程序设计(源程序)

#include

structcandidate//定义结构体

{

charname;//名字

intscore;//分数

};

structcandidateCadt[3]={{'a',0},{'b',0},{'c',0}};

voidmain()

{

inti,j,num;

charvote[3],s;

printf("请问共有多少人投票?

\n");

scanf("%d",&num);

while(num--)

{

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

{

s=getchar();

while(s!

='a'&&s!

='b'&&s!

='c')

s=getchar();

vote[i]=s;

}

if(vote[0]+vote[1]+vote[2]!

='a'+'b'+'c')//判断选票上是否有重复代码

{

printf("该票无效!

\n");

continue;

}

else

for(j=0;j<3;j++)

{

if(vote[0]==Cadt[j].name)

 

Cadt[j].score+=5;

if(vote[1]==Cadt[j].name)

Cadt[j].score+=3;

if(vote[2]==Cadt[j].name)

Cadt[j].score+=2;

}

}

printf("三位候选人得分:

\n");

for(j=0;j<3;j++)

printf("%c:

%d\n",Cadt[j].name,Cadt[j].score);

if(Cadt[0].score==Cadt[1].score||Cadt[1].score==Cadt[2].score||Cadt[2].score==Cadt[0].score)

printf("pleasevoteagaine.\n");

else

if(Cadt[0].score

Cadt[0].name=Cadt[1].name;

if(Cadt[0].score

Cadt[0].name=Cadt[2].name;

printf("祝贺%c当选冠军.\n",Cadt[0].name);

}

 

程序运行情况如下:

 

(1)当遇到一张选票上写有两个代号相同时成功显示“该票无效”:

图7—3

(2)显示最终结果:

图7—4

五、总结与修改

暑假期间,通过八天的C语言程序设计实习,我重新温习了C语言,更是对C语言有了更新的认识,更为深层次的认识。

以下几点是我在实习期间遇到的问题及心得体会。

【关于程序实行】

程序运行情况的截图如图7—3,7—4所示,图中显示有投票人数、投票的内容、候选人最后的得分情况以及最终冠军的获得者,系统运行情况较好,但仍存在一些不足,例如:

没有控制开始结束的语句,程序没有很好的体现模块化等。

在以后的程序设计中要特别注意这次遇到的问题,改进不足,探索新颖的思路,力求将程序设计完美化。

 

【问题及可能的解决方法】

程序中最大的不足是模块化没有很好的发挥其作用,个人觉得可以通过调用函数来弥补这一不足。

至于开始结束语句地解决,可以增加一个输出语句来解决。

还有一个问题是,源代码中没有注释语句,虽然这次设计的程序比较简单没用到注释,但以后设计中一定要注意这方面。

 

【修改后程序】

#include

#include

structcandidate//定义结构体

{

charname;//名字

intscore;//选票得分

};

structcandidateCadt[3]={{'a',0},{'b',0},{'c',0}};

voidthanks()

{

printf("thankyou!

\n");

}

voidfootball()

{

inti,j,num;

charvote[3],s;

printf("请问共有多少人投票?

\n");

scanf("%d",&num);

while(num--)

{

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

{

s=getchar();

while(s!

='a'&&s!

='b'&&s!

='c')

s=getchar();

vote[i]=s;

}

if(vote[0]+vote[1]+vote[2]!

='a'+'b'+'c')//判断选票是否有重复代号

{

printf("该票无效!

\n");

continue;

}

else

for(j=0;j<3;j++)

{

if(vote[0]==Cadt[j].name)

Cadt[j].score+=5;

if(vote[1]==Cadt[j].name)

Cadt[j].score+=3;

if(vote[2]==Cadt[j].name)

Cadt[j].score+=2;

}

}

printf("三位候选人得分:

\n");

for(j=0;j<3;j++)

printf("%c:

%d\n",Cadt[j].name,Cadt[j].score);

if(Cadt[0].score==Cadt[1].score||Cadt[1].score==Cadt[2].score||Cadt[2].score==Cadt[0].score)

printf("pleasevoteagaine.\n");

else

if(Cadt[0].score

Cadt[0].name=Cadt[1].name;

if(Cadt[0].score

Cadt[0].name=Cadt[2].name;

printf("祝贺%c当选冠军!

\n",Cadt[0].name);

}

intmain()

{

intID,ture=0;

printf("\n****************************此程序为足球先生投票程序****************************\n");

while

(1)

{

printf("请选择是否继续:

1为继续,2为退出;\n");

scanf("%d",&ID);

getchar();

switch(ID)

{

case1:

football();break;

case2:

thanks();break;

default:

ture=1;break;

}

if(ture!

=1)printf("**********************************谢谢您的参与**********************************\n");

printf("\n");

if(ture)break;

getchar();

printf("\n请按任何键继续......\n");

getchar();

}

return0;

修改后程序运行情况:

图7—5

图7—6

【修改后的程序优点】

程序被修改后更好地实现了模块化:

 

(1)主函数

图7—7

 

(2)thanks函数

 

图7—8

 

(3)football函数

图7—9

【心得与体会】

c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要,于是学校组织我们进行了为期八天的实习。

   在这八天里,我们在老师的带领下进行了暑期c语言程序实践学习。

在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。

实习前两天由于对所学的知识忘记了不少,编的程序中有很多错误,而且很多找不出原因所在,也就是说完成程序的编写,并不意味着万事大吉。

原本认为万无一失的程序,实际上机运行时却不断出现麻烦。

如编译程序检测出一大堆错误。

有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。

经过几天对书上知识如:

数组、结构体数组、循环语句(for\while)、if语句等的复习以及老师的耐心辅导,不仅重拾以前所学知识而且对c语言有了更深层次的理解。

当看到自己设计出来的程序运行成功时,感觉很欣慰的同时更痛下决心,以后一定要多看c语言源程序。

特别时要注意程序中的算法与数据结构,毕竟学c的关口就是算法和数据结构。

别的方面也要关注一下,诸如变量的命名、库函数的用法、结构体的定义等等。

有些库函数是经常用到的。

对于这些库函数的用法一定要牢牢记住。

只是看是不行的,编程序是个实干的活。

一个c语言程序从编辑、编译、连接到运行,光说不练不行。

刚开始学的时候可以多练习书上的习题。

对于自己不明白的地方,自己编个小程序实验一下是最好的方法,能给自己留下深刻的印象。

自己动手的过程中要不断纠正自己不好的编程习惯和认识错误。

有一定的基础以后可以尝试编一些经典的案例程序。

由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。

包括了程序模块处理、程序的添加修改、程序错误检查中用到的屏蔽操作、程序的调试等基本操作,更多的还是要靠自己努力。

   上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。

对于程序设计语言的学习,可以概括为学习语法规定、掌握程序设计方法、提高程序处理能力,而这些都必须通过充分的实际上机操作才能完成。

通过多次上机练习,我对于语法知识有了感性的认识,加深了对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。

对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差。

所以学习c语言不能只停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。

即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。

只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。

所以,这次实习对于c语言初学者的我意义非凡,通过它我学到了很多在书上学不到的知识。

关于养成良好的编程习惯方面1、在比较复杂的代码后面要有注释;2、注意语句的嵌套不能过长;3、注意语句的选择。

分支语句注意if循环和while、for的使用。

通过这次为数不多的几天计算机实践学习,我们了解了一些关于c语言的知识,理解巩固了我们c语言的理论知识,对我们将来其他编程学习将会有莫大的帮助。

同时它让我知道,“功夫不负有心人”,只要我努力,我就一定能做到。

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

当前位置:首页 > 解决方案 > 商业计划

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

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