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

合集下载

c语言程序课程设计投票系统

c语言程序课程设计投票系统

c语言程序课程设计投票系统一、教学目标本节课的教学目标是使学生掌握C语言程序设计的基本知识,通过构建投票系统,让学生了解和掌握结构体、函数、文件操作等C语言的核心概念和编程技巧。

知识目标:使学生了解C语言的基本语法、数据类型、运算符、控制结构等;使学生理解结构体、文件操作在C语言中的运用。

技能目标:使学生能够运用C语言编写简单的程序;使学生能够运用结构体、函数、文件操作等知识编写中等难度的程序。

情感态度价值观目标:培养学生对计算机科学的兴趣和热情,提高学生的逻辑思维能力和问题解决能力。

二、教学内容本节课的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构等;结构体、文件操作在C语言中的应用;通过构建投票系统,使学生了解和掌握C语言的核心概念和编程技巧。

三、教学方法本节课采用讲授法、案例分析法、实验法等多种教学方法。

讲授法:用于讲解C语言的基本语法、数据类型、运算符、控制结构等知识;案例分析法:通过分析实际案例,使学生了解和掌握结构体、文件操作在C语言中的应用;实验法:让学生动手编写程序,巩固所学知识,培养学生的实际编程能力。

四、教学资源教材:《C语言程序设计》;参考书:《C语言编程思想》、《C语言实践与应用》;多媒体资料:PPT课件、视频教程;实验设备:计算机、网络。

五、教学评估本节课的教学评估主要包括以下几个方面:1.平时表现:通过观察学生在课堂上的参与程度、提问回答、小组讨论等表现,评估学生的学习态度和积极性。

2.作业:通过评估学生提交的作业,了解学生对C语言基本语法、数据类型、运算符、控制结构等知识的掌握情况。

3.实验报告:评估学生在实验过程中的编程能力和问题解决能力,以及对结构体、文件操作等知识的应用能力。

4.考试:设计合理的考试题目,全面考察学生对C语言核心概念和编程技巧的掌握程度。

评估方式应客观、公正,能够全面反映学生的学习成果。

在评估过程中,注重学生的个体差异,给予积极的反馈和指导,激发学生的学习兴趣和自信心。

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

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

投票程序1.题目与要求:题目要求设有代号为’a’,’b’,’c’的三个个足球先生候选人,根据投票者在选票上对他们编号的填写顺序分别记分5,3,2。

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

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

例如:投票人数:5输入投票内容:a b cc a bc b ac a a 该票无效!c b a三位候选人得分:a: 12b: 13c: 15祝贺c当选冠军!1.1问题提出与要求:需求分析本程序中要求候选人有编号和得票数,且每张选票上要同时写上三个候选人的编号,最终输出谁是获胜者。

因此可以用结构体来存储候选人的信息。

唱票中要求相对应的编号分别记分为5、3、2,因此在记分程序中可以用一个条件表达式来进行统计得分。

统计结果中若前两名有相同的得票数则要求重新投票。

为此要求把三个侯选人的总得分进行比较,则可以用一个判断语句来判断,简单明了。

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

或者采用二维数组,行方向对应一张投票,列方向对应各候选人得分。

2.功能实现设计:2.1总体设计——程序流程图流程图:2.2详细设计:<1>程序源代码:#include<stdio.h>{int finish=0,first,seccond,i,scores[3],num;char s1,s2,s3;printf("*******************************************************\n"); printf("*****Welcome to use footballman voting programe! ******\n");printf("*******************************************************\n"); while(finish==0) /*****输入模块*****/{for(i=0;i<3;i++) scores[i]=0;printf("请输入投票人数: \n"); /*****有多少人投票*****/scanf("%d",&num); /*****输入投票人数*****/getchar();printf("请输入投票内容(选择您所需的abc候选人次序): \n"); /*****选票的内容*****/for(i=0;i<num;i++){scanf("%c %c %c",&s1,&s2,&s3); /*****输入投票内容*****/ getchar();if(s1==s2||s1==s3||s2==s3)printf("该票无效!\n"); /*****该票无效*****/if(s1!=s2 && s1!=s3 && s2!=s3 && (s1>='a' && s1<='c')&& (s2>='a' && s2<='c') && (s3>='a' && s3<='c'))/*****统计模块*****/{scores[s1-'a']+=5;scores[s2-'a']+=3;scores[s3-'a']+=2;}}printf("Voting results:\n"); /*****输出模块*****/printf("a: %d\n",scores[0]); /*****结果输出*****/printf("b: %d\n",scores[1]);printf("c: %d\n",scores[2]);first=0;seccond=1;for(i=0;i<3;i++){if(scores[i]>scores[first]){seccond=first;first=i;elseif(scores[i]>scores[seccond]) seccond=i;}if(scores[first]!=scores[seccond]){printf("祝贺 %c 当选冠军!\n",first+'a'); finish=1;}elseprintf("请重新投票!\n");}return 0;}<2>启动程序:编译、链接、运行:输入投票人数:5输入投票内容:a b cc a bc a a 该票无效!c b ac b a成功运行!3.知识点集锦:什么是结构化程序设计?比较其与对象化程序设计的区别。

c语言网络投票课程设计

c语言网络投票课程设计

c语言网络投票课程设计一、课程目标知识目标:1. 让学生掌握C语言网络编程的基本概念和原理,理解网络投票系统的实现机制。

2. 使学生学会运用C语言进行网络通信,掌握套接字编程的基本方法。

3. 帮助学生了解网络投票系统的数据结构和算法设计,提高数据组织和处理能力。

技能目标:1. 培养学生独立设计和编写C语言网络投票系统代码的能力。

2. 培养学生运用所学知识解决实际问题的能力,具备一定的网络编程调试技巧。

3. 提高学生的团队协作能力,学会与他人共同分析和解决复杂问题。

情感态度价值观目标:1. 培养学生积极探究网络编程领域的兴趣,激发学习热情。

2. 培养学生的创新意识,敢于尝试和挑战新的编程技术。

3. 增强学生的法治观念,认识到网络投票系统在遵守法律法规和道德规范方面的重要性。

课程性质分析:本课程为C语言高级应用课程,旨在让学生将所学知识运用到实际项目中,提高解决实际问题的能力。

学生特点分析:学生已具备一定的C语言基础,对网络编程有一定了解,但实际操作经验不足,需通过实践加深理解。

教学要求:1. 结合课本知识,注重实践操作,让学生在动手实践中掌握网络投票系统的设计与实现。

2. 强调团队合作,培养学生沟通协调能力和解决问题的能力。

3. 定期评估学生的学习成果,确保课程目标的实现。

二、教学内容1. C语言网络编程基础- 网络编程基本概念(套接字编程、TCP/IP协议)- 套接字编程原理及方法(TCP/UDP协议的使用、客户端/服务器模型)2. 网络投票系统设计与实现- 数据结构设计(投票信息、用户信息等数据结构)- 算法设计(投票逻辑、数据传输与存储等)- 网络通信实现(套接字编程实践、多线程/多进程应用)3. 编程实践与调试技巧- C语言网络编程实践(设计网络投票系统)- 调试方法与技巧(常用调试工具、性能优化)4. 团队协作与项目管理- 项目分工与协作(任务分配、进度管理)- 团队沟通与解决问题(沟通技巧、冲突解决)教学内容安排与进度:1. 第一周:C语言网络编程基础,学习网络编程基本概念和套接字编程原理。

C语言课程设计-投票程序系统设计

C语言课程设计-投票程序系统设计

目录课程设计评语...................................................................................................... 错误!未定义书签。

目录. (1)1.课程论文题目 (2)2.程序设计思路 (2)3.功能模块图 (3)4.数据结构设计 (3)5.算法设计 (3)6.程序代码 (7)7.程序运行结果 (11)8.编程中遇到的困难及解决方法 (12)9.总结心得及良好建议 (12)10.致谢 (12)1.课程论文题目投票程序[要求]设有代号为‘a’,‘b’,‘c’的三个足球先生候选人,根据投票者在选票上对他们编号的填写顺序分别记分5,3,2。

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

注意:若同一张票上写有两个相同的代号,则显示“此票无效”,若最终前两名得分相同应显示“重新投票”,否则显示三位候选人得分并输入“祝贺X当选冠军”。

例如:投票人数:5请参加投票的人开始投票:abccabcaa 此票无效cbabca三位候选人得分:a:12b:13c:15祝贺c当选冠军[提示]数据结构可用结构体数组,结构体成员包括代号、得分。

或者采用二维数组,行方向对应一张投票,列方向对应各候选人得分。

2.程序设计思路根据题目要求,首先要输入投票者人数,再输入投票者的选票,而选票不是都有效,若同一张票上写有两个相同的代号,则此票无效,所以要将有效的选票选出来,然后对选票进行统计得分,最终来比较得分,若有得分相同,则重新来选,最后得分最多的获胜,最终成为足球先生。

但是此程序还不够完善,可以增加以下程序,增强其功能:1.记录废票数目,以便废票太多,影响选举公正。

2.若出现a,b,c以外的投票,应当将该票记为无效。

3.若出现最终前两名得分相同,应该还可以运行程序,使其重新投票,重新计票,直至最后选出足球先生。

c课程设计投票程序

c课程设计投票程序

c 课程设计投票程序一、教学目标本节课的教学目标是让学生掌握C语言中投票程序的基本设计方法。

知识目标要求学生了解并掌握C语言的基本语法、数据结构和函数,能够运用这些知识设计一个简单的投票程序。

技能目标要求学生能够运用C语言编写和调试投票程序,提高其编程能力和问题解决能力。

情感态度价值观目标则是培养学生的团队合作意识和积极探究精神,使其能够主动参与课堂讨论和实践活动。

二、教学内容本节课的教学内容主要包括C语言的基本语法、数据结构、函数和投票程序的设计。

首先,将介绍C语言的基本语法,包括变量、数据类型、运算符和表达式等。

其次,介绍C语言中的数据结构,如数组、链表和栈等,以及如何运用这些数据结构来存储和管理投票数据。

接着,讲解C语言中的函数,包括函数的定义、声明和调用,以及如何利用函数来实现投票程序的功能。

最后,通过实例讲解如何设计一个投票程序,包括投票的输入、输出和统计等功能。

三、教学方法为了激发学生的学习兴趣和主动性,将采用多种教学方法进行教学。

首先,采用讲授法,向学生讲解C语言的基本语法、数据结构和函数等知识。

其次,通过案例分析法,分析并解决实际问题,如设计一个投票程序。

此外,还采用讨论法,让学生在课堂上进行小组讨论,分享自己的设计和思路,互相学习和借鉴。

最后,通过实验法,让学生动手编写和调试投票程序,提高其编程能力和问题解决能力。

四、教学资源为了支持教学内容和教学方法的实施,将选择和准备适当的教学资源。

教材方面,选用《C程序设计语言》作为主教材,辅助以《C语言编程实例解析》等参考书籍。

多媒体资料方面,准备PPT课件、视频教程和在线编程练习等,以丰富学生的学习体验。

实验设备方面,准备计算机和网络设施,让学生能够进行编程实践和在线学习。

同时,还需要准备一些实际投票数据,用于分析和讨论,增强学生对投票程序的理解和应用能力。

五、教学评估本节课的教学评估将采用多元化的方式,以全面、客观、公正地评价学生的学习成果。

C语言课设之投票系统

C语言课设之投票系统

C语言课程设计前言计算机科学技术的发展,不仅极大地促进了整个科学技术的发展,而且明显地加快了经济信息化和社会信息化的进程。

因此,计算机教育在全国备受重视,计算机知识与能力已成为21世纪人才素质的基本要素之一。

如今,高等教育的计算机教育发展十分迅速。

十多年前,只有部分理工科专业开设计算机课程。

今天,几乎所有高校的所有专业都开设了程度不同的计算机课程。

人们已经认识到,计算机知识已成为当代知识分子知识结构中不可缺少的重要组成部分。

而除了掌握计算机的基础知识和操作的基本能力外,掌握一门高级编程语言,并可以熟练运用它,已成为当代大学生综合能力必要组成。

计算机技术发展如此迅猛,计算机应用如此广泛,需要学习的东西愈来愈多,而我们的总学时是有限的。

一般来说,计算机课程学习可以分为两部分:一部分是理论课程学习,一部分是上机应用实习。

根据我们专业的性质和要求,则应侧重于上机操作运用。

为此,学校特意在暑期最后一星期安排了32个学时的上机实习。

现将一星期的实习内容及结果分析分列如下:投票程序一.题目要求:设有代号为’a’,’b’,’c’的三个个足球先生候选人,根据投票者在选票上对他们编号的填写顺序分别记分5,3,2。

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

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

二.需求分析:根据题目要求,选票数据以txt文件的形式存储,所以应提供文件的打开,关闭,输入,输出等操作,并对读取的文件进行调用。

三.总体设计根据题目要求,可对程序进行如下设计:四.详细设计:1.主函数本系统主要用主函数调用打开的选票数据和进入主菜单函数,通过调用主菜单函数实行主函数的功能。

程序main(){void choose();menu();}void menu(){ void choose();int n,w;do{ puts("\t\t^^^^^^^^^^^^足球先生投票程序^^^^^^^^^^^^^^^^^^");puts("\t\t{ }");puts("\t\t{ [1.选票人数:] }");puts("\t\t{ [2.选票信息:] }");puts("\t\t{ [3.分数:] }");puts("\t\t{ [4.结果:] }");puts("\t\t{ [5.退出] }");puts("\t\t{ }");puts("\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");printf("请选择你的数字(1-5):[ ]\b\b");scanf("%d",&n);if(n<1||n>5){w=1;getchar();}else w=0;}while(w==1);switch(n){case 1:innum();break;case 2:input();break;case 3:output();break;case 4:choose();break;case 5:exit(0);}}2.选票人数模块选票信息保存在“voter.txt”文件中,之前已通过只读的方式从“voter.txt”文件中打开并读取出来并保存在之前建立的结构体变量vote[NUM]中。

c语言电子投票系统课程设计

c语言电子投票系统课程设计

c语言电子投票系统课程设计一、教学目标本课程的目标是让学生掌握C语言的基本知识,能够运用C语言设计一个简单的电子投票系统。

具体的学习目标包括:1.知识目标:理解C语言的基本语法、数据类型、运算符、控制结构等基本知识。

2.技能目标:能够使用C语言编写程序,解决实际问题。

3.情感态度价值观目标:培养学生的逻辑思维能力,提高学生解决问题的能力,使学生对编程产生兴趣。

二、教学内容教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构等。

具体安排如下:1.第一章:C语言概述,介绍C语言的基本概念、特点和应用。

2.第二章:数据类型和运算符,介绍C语言的基本数据类型、运算符及其用法。

3.第三章:控制结构,介绍条件语句、循环语句等控制结构的使用。

4.第四章:函数,介绍函数的定义、声明和调用,以及函数的参数传递。

5.第五章:数组和字符串,介绍数组的基本概念、操作和字符串的使用。

6.第六章:指针,介绍指针的概念、运算和指针的应用。

7.第七章:结构体和文件,介绍结构体的定义和使用,以及文件的读写操作。

三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。

1.讲授法:通过讲解C语言的基本概念、语法和编程技巧,使学生掌握C语言的基本知识。

2.案例分析法:通过分析典型的C语言程序,使学生理解编程思路和方法,提高编程能力。

3.实验法:通过上机实验,让学生动手编写程序,培养学生的实际操作能力。

四、教学资源教学资源包括教材、参考书、多媒体资料和实验设备。

1.教材:选用《C程序设计语言》作为主要教材,介绍C语言的基本知识和编程技巧。

2.参考书:推荐《C Primer Plus》等参考书,供学生自主学习。

3.多媒体资料:制作课件、视频等多媒体资料,帮助学生更好地理解课程内容。

4.实验设备:提供计算机实验室,让学生进行上机实验,提高实际操作能力。

五、教学评估教学评估主要包括平时表现、作业和考试三个部分。

1.平时表现:评估学生在课堂上的参与程度、提问回答等情况,占总评的20%。

C语言课程设计报告-电子投票平台

C语言课程设计报告-电子投票平台

C语言课程设计报告——08级电子4班 **** 3108009296一、需求分析1.设计题目:电子投票平台2.设计内容1)编程建立一个小型电子投票系统,其中包含电子投票、票数统计功能,。

尽量做到提供一个简单的人机界面,系统界面友好,使用方便。

2)软件的使用者分为两类,一类为管理员,可以对候选人信息进行初始化和修改,还可浏览候选人信息介绍,对于候选人所得票数,管理员可以进行排序,以便得出最终投票结果,也可以对系统的用户进行管理,创建使用者用户名和密码等。

另一类为使用者为普通投票者,该类用户需要用管理员分配的用户名和密码正确登录系统,可以查询候选人信息、浏览候选人信息和进行投票等,其中投票是只需做到输入自己想要投票的候选人编号即可完成投票。

3.系统功能1)投票者功能A.浏览候选人信息.B.输入候选人的号码即可查询候选人信息。

C.输入所选候选人的号码即可完成投票。

2)管理员功能A.初始化候选人信息且创建候选人:在系统投入使用前,管理员先将需要投票选举的候选人信息录入系统中,以便投票和查看。

管理员的初始化工作就是将候选人的号码、姓名和简介录入系统。

B.浏览和查询候选人信息:管理员有权浏览候选人信息及其投票情况,以便随时掌握候选人的信息和对候选人信息进行修改。

C.管理员可以对投票者的用户名和密码进行管理,也可对投票的结果进行排序。

二、详细设计1.主要功能模块a.主程序模块输出主菜单,调用其他函数实现整体功能b.封面输出模块输出欢迎信息,主要是用点阵字模来输出中文内容。

c.功能选择模块根据输入的用户名{1}和密码{1},进入不同的界面d.身份验证模块验证管理员和用户(投票者)的用户名和密码是否正确,不正确可选择重新输入用户名和密码或者退出。

e.投票人管理模块该模块主要实现常规的管理功能,如投票人的初始化,即创建投票人用户名和密码。

因此该模块主要用结构体类型的数组和文件的读写来完成对大量数据的管理操作。

f.候选人管理模块候选人管理模块和投票人管理模块类似,要对大量有一定结构的信息进行管理操作,如创建候选人,查询、浏览候选人信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中国地质大学本科生课程论文封面课程名称C语言课程设计教师姓名邵老师本科生姓名常堃本科生学号***********本科生专业应用化学所在院系材化学院类别: C.本科生日期: 2011 年7 月6 日课程设计评语注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。

目录课程设计评语 (2)目录 (3)1.课程论文题目 (4)2.程序设计思路 (4)3.功能模块图 (5)4.数据结构设计 (5)5.算法设计 (5)6.程序代码 (9)7.程序运行结果 (13)8.编程中遇到的困难及解决方法 (14)9.总结心得及良好建议 (14)10.致谢 (14)1.课程论文题目投票程序[要求]设有代号为‘a’,‘b’,‘c’的三个足球先生候选人,根据投票者在选票上对他们编号的填写顺序分别记分5,3,2。

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

注意:若同一张票上写有两个相同的代号,则显示“此票无效”,若最终前两名得分相同应显示“重新投票”,否则显示三位候选人得分并输入“祝贺X当选冠军”。

例如:投票人数:5请参加投票的人开始投票:abccabcaa 此票无效cbabca三位候选人得分:a:12b:13c:15祝贺c当选冠军[提示]数据结构可用结构体数组,结构体成员包括代号、得分。

或者采用二维数组,行方向对应一张投票,列方向对应各候选人得分。

2.程序设计思路根据题目要求,首先要输入投票者人数,再输入投票者的选票,而选票不是都有效,若同一张票上写有两个相同的代号,则此票无效,所以要将有效的选票选出来,然后对选票进行统计得分,最终来比较得分,若有得分相同,则重新来选,最后得分最多的获胜,最终成为足球先生。

但是此程序还不够完善,可以增加以下程序,增强其功能:1.记录废票数目,以便废票太多,影响选举公正。

2.若出现a,b,c以外的投票,应当将该票记为无效。

3.若出现最终前两名得分相同,应该还可以运行程序,使其重新投票,重新计票,直至最后选出足球先生。

3.功能模块图输入选票信息:输入对足球先生候选人的选票输出结果:输出最后足球先生的获得者统计选票:对选票进行统计4.数据结构设计要输入投票人数,将其定义为re,选票信息可以用一个p[100][3]的数组来存放,re来控制投票信息数组的行数。

最开始定义一个全局变量m=3,来表示候选者人数。

这样来控制数列数,达到控制输入的目的。

每输入一行,就开始判断是否一张票上写有两个相同代号,或者是出现‘a’,‘b’,‘c’以外的投票结果,如果出现这种情况,就将票作废,并记录作废票数。

定义变量v记录作废票数。

判断完毕后,若出现废票,就将其中的票府赋值为‘0’。

返回投票人数re,留到后续函数使用。

5.算法设计1、主函数:主函数只提供输入、处理和输出部分函数调用:【程序】#include<stdio.h>#include<math.h>int start(char p[][3]); /****输入函数****/void count(int a,char p[][3],int pp[]); /***统计函数***/int result(int a,int b,int c); /***输出函数***/int m; /*****全局变量*****/void main() /*****主函数*****/{int a;m=3;int pp[3]={0,0,0};do{char p[100][3]={{0}};/******p[100][3]赋初值,清空******/a=start(p);count(a,p,pp);/******计算得分******/}while(result(pp[0],pp[1],pp[2]));/*****若m=2循环,直至选出足球先生*****/}2、各功能模块设计(1)输入模块【分析】要输入投票人数,将其定义为re,选票信息可以用一个p[100][3]的数组来存放,re来控制投票信息数组的行数。

最开始定义一个全局变量m=3,来表示候选者人数。

这样来控制数列数,达到控制输入的目的。

每输入一行,就开始判断是否一张票上写有两个相同代号,或者是出现‘a’,‘b’,‘c’以外的投票结果,如果出现这种情况,就将票作废,并记录作废票数。

定义变量v记录作废票数。

判断完毕后,若出现废票,就将其中的票府赋值为‘0’。

返回投票人数re,留到后续函数使用。

【程序】int start(char p[][3]){int re,i,j,v=0;printf("请输入投票人数\n");scanf("%d",&re);/******a为投票人数******/printf("请参加投票的人开始投票\n");getchar();/******输入时以回车结束******/for(i=0;i<re;i++){int flag=0;for(j=0;j<m;j++)scanf("%c",&p[i][j]);getchar();/******输入选举投票******/if(p[i][0]==p[i][1]||p[i][1]==p[i][2]||p[i][0]==p[i][2])flag=1;/******判断一张票上是否写有两个相同代号******/for(j=0;j<m;j++){if(p[i][j]!='a'&&p[i][j]!='b'&&p[i][j]!='c')flag=1;}/******判断是否有a,b,c以外的字母******/if(flag){printf("此票无效\n");v++;for(j=0;j<m;j++)p[i][j]=0;}/******若有以上情况,显示"此票无效",忽略此票,并记录废票数******/}printf("作废票数是%d票\n",v);return re;}(2)统计模块【分析】功能上要求分别统计a,b,c三个人的得分,因而用x,y,z来存放,每一票中分别统计得分,根据投票者在选票上对他们编号的填写顺序分别记分5,3,2,将如果出现废票,直接跳过不计,将最后结果分别放入x,y,z.。

引用主函数中的数组pp[3],将统计的x,y,z分别赋值到pp[0],pp[1],pp[2]中,这样就可以带回主函数中。

【程序】void count(int a,char p[][3],int pp[]){int b=a,i;int x=0,y=0,z=0;/******'a','b','c'分别代表三个候选人x y z分别是他们的得分******/for(i=0;i<a;i++){if(p[i][0]=='a')else if(p[i][1]=='a')x+=3;else if(p[i][2]=='a')x+=2;if(p[i][0]=='b')y+=5;else if(p[i][1]=='b')y+=3;else if(p[i][2]=='b')y+=2;if(p[i][0]=='c')z+=5;else if(p[i][1]=='c')z+=3;else if(p[i][2]=='c')z+=2;if(p[i][0]=='0')continue;}pp[0]=x;pp[1]=y;pp[2]=z;}(3)输出模块【分析】功能上要求比较三位候选人的最后得分,三人得分分别为x,y,z。

定义max,将最高分赋值到max中。

只有一位最高分时,输出三位候选人得分,显示“祝贺某人当选冠军”。

如果有两位最高分,则显示“请重新投票”,接着,令m=2,改变全局变量,只剩下两位候选者,显示三位候选人得分,重新投票统计。

如果两位候选人分数还相同,则再次循环,若不同,则显示两人得分,并显示“祝贺某人当选冠军”。

【程序】int result(int a,int b,int c){int x,y,z,max=0,s=0,l=0;char k;x=a;y=b;z=c;max=x;k='a';if(max<y)max=y;k='b';}if(max<z){max=z;k='c';}if(max==x&&max==y||max==x&&max==z||max==y&&max==z){printf("请重新投票\n");/******若最高票数有两人相同,提示重新投票******/l=1;}if(m==3)printf("三位候选人得分:\n");elseprintf("两位候选人得分:\n");if(l)m=2;if(x>0)printf("a:%d\n",x);if(y>0)printf("b:%d\n",y);if(z>0)printf("c:%d\n",z);if(!l)printf("祝贺%c当选冠军\n",k);/******输出最后结果******/return l;}如果l返回主程序,若l为真值,则代表最后两位候选人分数还相同,主程序的do,while 循环,可以再次统计票数,再次比较得分,直到选出最后的足球先生。

6.程序代码#include<stdio.h>#include<math.h>int start(char p[][3]);void count(int a,char p[][3],int pp[]);int result(int a,int b,int c);int m;void main(){int a;m=3;int pp[3]={0,0,0};do{char p[100][3]={{0}};/******p[100][3]赋初值,清空******/a=start(p);count(a,p,pp);/******计算得分******/}while(result(pp[0],pp[1],pp[2]));}int start(char p[][3]){int re,i,j,v=0;printf("请输入投票人数\n");scanf("%d",&re);/******a为投票人数******/printf("请参加投票的人开始投票\n");getchar();/******输入时以回车结束******/for(i=0;i<re;i++){int flag=0;for(j=0;j<m;j++)scanf("%c",&p[i][j]);getchar();/******输入选举投票******/if(p[i][0]==p[i][1]||p[i][1]==p[i][2]||p[i][0]==p[i][2])flag=1;/******判断一张票上是否写有两个相同代号******/ for(j=0;j<m;j++){if(p[i][j]!='a'&&p[i][j]!='b'&&p[i][j]!='c')flag=1;/******判断是否有a,b,c以外的字母******/if(flag){printf("此票无效\n");v++;for(j=0;j<m;j++)p[i][j]=0;}/******若有以上情况,显示“此票无效”,忽略此票,并记录废票数******/ }printf("作废票数是%d票\n",v);return re;}void count(int a,char p[][3],int pp[]){int b=a,i;int x=0,y=0,z=0;/******'a','b','c'分别代表三个候选人x y z分别是他们的得分******/for(i=0;i<a;i++){if(p[i][0]=='a')x+=5;else if(p[i][1]=='a')x+=3;else if(p[i][2]=='a')x+=2;if(p[i][0]=='b')y+=5;else if(p[i][1]=='b')y+=3;else if(p[i][2]=='b')y+=2;if(p[i][0]=='c')z+=5;else if(p[i][1]=='c')z+=3;else if(p[i][2]=='c')z+=2;if(p[i][0]=='0')continue;}pp[0]=x;pp[1]=y;pp[2]=z;}int result(int a,int b,int c){int x,y,z,max=0,s=0,l=0;char k;x=a;y=b;z=c;max=x;k='a';if(max<y){max=y;k='b';}if(max<z){max=z;k='c';}if(max==x&&max==y||max==x&&max==z||max==y&&max==z) {printf("请重新投票\n");/******若最高票数有两人相同,提示重新投票******/l=1;}if(m==3)printf("三位候选人得分:\n");elseprintf("两位候选人得分:\n");if(l)m=2;if(x>0)printf("a:%d\n",x);if(y>0)printf("b:%d\n",y);if(z>0)printf("c:%d\n",z);if(!l)printf("祝贺%c当选冠军\n",k);/******输出最后结果******/return l;}7.程序运行结果1、主函数运行,输入选票信息3、统计选票,输出结果8.编程中遇到的困难及解决方法在编程的过程中,很容易出现一个问题,就时少大括号“}”的问题。

相关文档
最新文档