正文内容
c语言自动售货机实验报告
来源:文库
作者:开心麻花
2025-09-18
1

c语言自动售货机实验报告(精选6篇)

c语言自动售货机实验报告 第1篇

C语言程序设计实验报告

实验二 循环结构程序设计

班级 2012196 学号 201219628 姓名 李明月

一、实验目的

(1)掌握用while语句,do-while语句和for语句实现循环的方法;(2)掌握循环结构的嵌套;

(3)掌握break语句和continue语句的使用方法。

二、实验内容及步骤

1.相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8×8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第一个格子中放1粒,第2格中放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上的64个格子,我就感恩不尽了。舍罕王让人扛来一袋麦子,他要兑现他的许诺。国王能兑现他的许诺吗?

程序1:试编程计算舍罕王共要多少粒麦子赏赐他的宰相,这些麦子合多少立方米?(已知1立方米麦子约1.42e8粒)总粒数为:sum=1+2+22+23+„+263 程序代码:

#include int main()//定义一个主函数 { int i;double t=1,sum=1,v;//定义变量

for(i=1;i<=63;i++)//用for循环语句实现循环运算 { t=t*2;sum+=t;//循环表达式 } printf(“总麦粒数为:%fn”,sum);v=sum/1.42e8;printf(“折合体积为: %f立方米n”,v);//对结果进行输出

return 0;} 运行结果:

2.求完数。

程序2:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程找出1000之内的所有完数,输出所有的完数(要求:一行显示6个数);

程序代码:

#include int main(){ int i,j,sum,n=0;printf(“ 1000以内的完数有:n”);for(i=1;i<=1000;i++){

sum=0;for(j=1;j

if(i%j==0)

{

sum=sum+j;

} } if(sum==i)

{ printf(“ %d”,i);

n=n+1;

if(n%2==0)

printf(“n”);

} } printf(“n”);return 0;} 运行结果:

3.打印九九乘法表

程序3:编程输出如下上三角形式的九九乘法表。2 3 4 5 6 7 8 9-------n“);for(i=1;i<10;i++)//i { for(j=1;j<=i;j++)// printf(” “);for(j=i;j<10;j++)//j printf(”%-2d “,i*j);// printf(”n“);}

代表行 输出空格达到来使得向右对齐代表列

输出行与列的乘积 3 1 2 3 4 5 6 7 8 9

运行结果:

三、问题讨论

break语句和continue语句在循环结构中使用时有何区别?举例说明。

break语句是跳出整个循环过程,不再判断执行循环的田间是否成立,并且break语句不能用于循环语句和switch语句之外的任何其他语句中。而continue语句则只是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。

例子:

#include int main(){ int i;for(i=100;i<=200;i++){ if(i%3==0)continue;

printf(”%d“,i);} printf(”n");return 0;} 输出:

但是换成break之后:

四、实验心得

个人感觉对于这几个循环语句还是for循环最为灵活,不进可以用于循环次数一句in个确定的情况,还可用于不确定的情况下,它也完全可以代替while语句。并且是程序看起来更为简洁明了。

c语言自动售货机实验报告 第2篇

1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。

2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。

二、实验内容

编写一个学生信息排序程序。要求:

1、程序运行时可输入n个学生的信息和成绩(n预先定义)。

2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。

3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。

1、使用函数方法定义各个模块。

三、步骤与过程

c语言自动售货机实验报告 第3篇

目前, 越来越多的高等院校都开设了C语言程序设计基础课, 虽然有些院校采用计算机进行上机考试, 但多局限于诸如选择题和判断题之类的题型。但对于程序设计编程上机考试的评分, 大多采用人工阅卷的方式, 由教师逐句分析学生所写的代码然后给出分数, 这样就消耗了阅卷老师们大量的人力, 物力和时间。

目前很多C语言的上机考试系统一般都包括填空、选择和程序设计三大部分, 填空和选择这样的客观题目的自动评分技术较为成熟[1], 但对于主观题的阅卷技术却一直停滞难前[2]。若采用自动评分的考试系统, 不但能将考生作弊的可能性大幅减小, 并且智能化的给考生所写的程序进行评分, 这样可以更加直观地反应学生的学习效果和教师的教学成果, 还可以取代教师的低效率的、机械的人工阅卷模式。因此, 自动评分技术的设计与研究, 在高等教育计算机考试中具有十分重要的实际意义。本文以C语言程序设计为例, 研究了客观题自动评分算法的设计与实现。

2. 系统体系结构

C语言考试自动评分系统主要包含2部分:考试系统、考试管理系统如图1所示。考试系统采用C/S模式, 只有服务器端和客户端两部分。服务器主要用来分发学生试题, 管理学生登录情况及成绩, 学生通过客户端进行考生登录、试题抽取和提交考试结果。本系统学生提交是试卷的原始文件, 以文件的形式把学生的答案提交到数据库中对应的字段, 评分系统自动提取学生的答案, 再生成C文件进行自动评分, 考生在线考试过程描述如下:首先登录考试系统, 获取考试试题, 在线进行答题, 提交答案, 备份数据库, 系统自动评分。

C语言考试自动评分系统客户端采用Windows XP或者Windows7系统, 服务器采用Windows2003或者Windows2008系统, 实现考试系统。本系统在delphi7.0+oracle11g的开发环境下实现。

3. 评分模块的设计

3.1. 评分系统评阅流程

评分系统的客观试题采用输出文件对比、代码修复与cpp文件对比相结合的评分方法。输出文件对比是检查考生程序的生成out.dat是否与预先给定的答案内容一致。代码修复主要是修复考生cpp文件中的语法错误, 使程序生成EXE文件, 然后运行程序进行结果对比评分。考生提交的cpp文件与标准答案文件进行相似度对比计算, 从而得到各个知识点的分值, 再累计得到总分生成学生分数。其算法描述如下:

算法1:

步骤一:提取考生答案, 生成C文件;

步骤二:启动vc++6.0对考生文件进行编译;如果没有语法错误进入步骤三, 否则进入步骤四;

步骤三:生成EXE文件盒运行结果, 对比正确答案, 如果答案正确生成分数, 否则进入步骤五;

步骤四:代码对比评分;

步骤五:生成学生分数

3.2 客观题评分算法

程序编程题的评分过程分为以下几个步骤:

步骤一:首先判断考生prog1.cpp和out.dat文件是否存在, 若不存在, 则得0分, 评分结束;若存在, 进入步骤二。

步骤二:结果对比, 判断考生的out.dat文件与答案的out.dat文件是否一致。结果对比是检查考生程序的运行结果, 是否与标准答案的运行结果一致, 若一致, 则可得满分, 将得分存入stupf表 (学生评分表) 中的prog_score字段中;否则进入步骤四。

步骤三:规范化预处理, 同一道题目会有不同的解法、程序内部也会不同的设计结构等等这些问题都增加了评分的难度, 因而需要对进行静态评阅的考生源程序cpp预先进行规范化的预处理。主要包括变量的命名、赋值操作、表达式、程序的三种基本控制结构 (顺序、选择和循环) 、冗余代码、函数调用、注释的规范化操作等。可专门设计一个规范化预处理程序, 从stu_answer表 (学生试卷表) 提取prog_answer字段值, 进行上述规范化操作, 再将规范化后的答案保存到stu_answer表 (学生试卷表) 中的对应stu_standard_answer字段中。

步骤四:静态评阅, 最后需要对规范化处理后的程序进行静态评阅, 根据bank表 (题库表) 中给出的知识要点和评分标准, 评判考生规范化的预处理后程序对知识要点的覆盖程度, 从而得出各知识点的最后得分, 分别存入stupf表 (学生评分表) 中的prog_score字段。最后累计各知识点得分字段值存入该题总分 (score) 字段中。

4. 考试流程

考生在使用C语言考试自动评分系统时, 首先需要进行考生注册, 填写自己的个人信息, 包括准考证号及姓名。登陆模块将考生的注册信息保存在数据库中, 以考生的学号作为该考生的ID (用户标识) 。

在考生的注册信息提交之后, 由登陆模块检验考生是否登陆过考试系统, 如果没有, 则显示答题界面, 考生开始抽取试题答题;如果已经登陆过考试系统, 则检查是否已“交卷”, 如果交卷, 则提示考试结束;如果没有交卷”, 则需要使用验证码, 重新登陆考试系统, 继续答题。

考生登录考试系统之后, 开始计时, 该系统考试时间一共为90分钟, 学生选择题型进行考试, 考试系统显示剩余的时间。C语言考试题型共包括选择题、程序填空题、程序修改题、程序设计题。学生在考试界面的各种操作直接写入到数据库表中, 即随时自动保存。图2是考试系统的使用界面。

考生可以根据情况提前进行交卷, 单击“交卷”按钮或者关闭考试系统界面, 考试系统会提示是否退出, 需要考生确认, 如果考生选择“是”, 则考试结束, 学生不能再次登录考试系统;如果考生选择“否”, 则回到考试系统界面继续答题。考试时间倒计时结束, 则自动关闭考试系统。

5. 结束语

本文研究的c语言自动评分系统的算法, 已经应用于c语言程序课上机考试系统中。本系统不但可以作为程序设计课程的期末上机考试系统, 而且也可以让学生熟悉二级C语言考试环境, 从而提高计算机等级考试的通过率。本系统简单易用, 自动评分可以解除教师阅卷的负担, 同时更有利于考试的公平公正, 对于实现无纸化考试具有重要的实际应用价值和推广意义。

参考文献

[1]孟爱国, 卜胜贤, 李鹰, 等.一种网络考试系统中主观题自动评分的算法设计与实现[J].计算机与数字工程, 2005 (7) :147-150.

[2]王永生.计算机阅卷中主观题型的单层模糊综合评判[J].青海大学学报, 2000 (3) :46-49.

[3]李富星, 牛永洁.基于XML结构的C语言考试的自动评分系统[J]。现代电子技术, 2010 (8) :130——132

C语言实验教学方法探讨 第4篇

c语言实验报告 第5篇

学生姓名: 学 号: 专业班级:

√ 综合 □ 设计 □ 创新 实验日期: 实验成绩: 实验类型:□ 验证 □一.实验名称

实验3 控制语句

二.实验目的

1.熟练掌握if、if…else、if……elseif语句和switch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。

2.熟练掌握while语句、do……while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。

3.掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。

三.实验内容

1. 选择结构程序设计; 2. if语句的使用;

3. 使用switch语句实现多分支选择结构; 4. 三种循环语句的应用; 5. 循环结构的嵌套;

6. break和continue语句的使用。

三.实验环境

PC微机

DOS操作系统或 Windows 操作系统 Visual c++程序集成环境

四.实验内容和步骤

本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。学会单步调试和断点调试程序及变量跟踪方法。

1. 任意输入4个整数,要求按由小到大的顺序输出。

2.编程实现:输入一个整数,将其数值按照①小于10,②10~99,③100~999,④1000以上四个类别分类并显示。

要求:(1)将变量定义为整型。

(2)输入整数前,利用puts()/printf()给出提示信息。

(3)输出结果时要有必要的说明,例如:输入358时,显示358 is 100 to 999。(4)该程序利用if语句实现。

运行程序,分别输入9,21,321,4321数据检查输出信息的正确性。

3.编写程序:根据公式

261111......,输出 π的值。

122232n2要求:

(1)变量π为单精度类型,n为整型;

(2)计算当n的取值分别为20,50,100,200时的π值,说明什么问题?

(3)修改程序,不给出n值,而改为求π值,直到最后一项的数值小于10-4 为止。

(4)对修改后的程序,输出π值以及总的项数n。输出格式为:π=值;n=值。

4.从键盘输入一个0~1000之间的任意整数,输出该整数的所有因子(例如:输入12,其因子为1,2,3,4,6,12)。

要求:

(1)采用while循环语句实现。

(2)输出格式为:Input:12 Output:1,2,3,4,6,12 5.从键盘输入学生的考试成绩,利用计算机将学生的成绩划分等级并输出。学生的成绩可分成5个等级,90-100分为A级,80-89分为B级,70-79分为C级,60-69分为D级,0-59分为E级。要求在输入负数时,给出错误提示。

① 事先编好程序,要求分别用if语句和switch语句实现。运行程序,并检查结果是否正确。

② 再运行一次程序,输入分数为负值(如-70),这显然是输入时出错,不应给出等级。修改程序,使之能正确处理任何数据。当输入数据大于100或小于0时,通知用户“输入数据错”,程序结束 6.某航空公司规定:在旅游旺季7~9月份,如果订票20张及其以上,优惠票价的10%,20张以下,优惠5%;在旅游淡季1~6月份,10~12月份,订票20张及其以上,优惠票价的20%,20张以下,优惠10%。编写一个C程序,根据月份和旅客订票张数决定优惠率。已知机票单价,请算出旅客的总付款。请使用不同的测试数据进行测试。7.计算并输出1000以内最大的10个素数以及它们的和。

要求:

(1)在程序内部加必要的注释。

(2)由于偶数不是素数,可以不考虑对偶数的处理。

(3)虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。

(4)输出形式为:素数1+素数2+素数+…+素数10 = 总和值。

五.实验数据及处理结果

/*写出实验内容的算法(用流程图表示)、完整的程序、结果并能对结果的正确性及上机时产生的问题进行分析,注意程序变量命名应见名知意、有适当的注释,程序书写规范*/ 【习题1】

【设计思路】 :输入a,b,c,d四个数,将四个数两两进行比较,如果前者大于后者,则将两数的值交换,否则不变。这样重复操作6次,最后输出a,b,c,d的值,则a,b,c,d从大到小排列。

【数据输入】输入整型变量 a,b,c,d 【数据输出】输出 a,b,c,d的值,使其从大到小排列。【源程序实现】

#include main(){

int a,b,c,d,t;printf(“please input four numbers(example:1 2 3 4):n”);scanf(“%d %d %d %d”,&a,&b,&c,&d);if(a>b){t=a;a=b;b=t;}/* 实现a,b的交换 */ if(a>c){t=a;a=c;c=t;}/* 实现a,c的交换 */ if(a>d)

} {t=a;a=d;d=t;}/* 实现a,d的交换 */ if(b>c){t=b;b=c;c=t;}/* 实现b,c的交换 */ if(b>d){t=b;b=d;d=t;}/* 实现b,d的交换 */ if(c>d){t=c;c=d;d=t;}/* 实现c,d的交换 */ printf(“%d,%d,%d,%d”,a,b,c,d);【结果及截图】

答:输入64 3 5 23,运行结果为3,5,23,64,其截图如下:

输入格式的提示。

【修改后程序实现及结果】 /*习题2、4请添加此步*/

【问题分析】 输入数据时,没有按正确格式输入,所以在输入数据之前,应该给出一个【习题2】

【设计思路】

【数据输入】 输入整型变量x。【数据输出】 输出x的范围。【源程序实现】

#include

main()

{

int x;

printf(“Please input a number:n”);

scanf(“%d”,&x);

printf(“%d is ”,x);

if(x<10)printf(“less than 10n”);

else if(x<100)printf(“10 to 99n”);

else if(x<1000)printf(“100 to 999n”);

else printf(“more than 1000n”);

return 0;

}

【结果及截图】

答:运行程序,分别输入9,21,321,4321,截图如下:

【习题3】

【源程序实现】

#include

#include

main()

{

int n,N;

float pi,sum=0;

printf(“Please input a number:nN=”);

scanf(“%d”,&N);

for(n=1;n<=N;n++)

sum+=1.0/(n*n);

pi=sqrt(6*sum);

printf(“pi=%f”,pi);

return 0;} 修改后的程序: #include #include main(){

int n=0;

float pi,sum=0;

do

{

n++;

sum+=1.0/(n*n);

}while(1.0/(n*n)>=1e-4);

pi=sqrt(6*sum);

printf(“pi=%f;n=%d”,pi,n);

return 0;}

【结果i及截图】

答:计算当N的取值分别为20,50,100,200时,截图如下:

【结果ii及截图】

【习题4】

【源程序实现】

#include main(){ int num,i=2;printf(“Input:”);scanf(“%d”,&num);printf(“Output: 1”);/*第一个因式为 1*/ while(i<1000){ if(num%i==0)printf(“,%d”,i);i++;} return 0;}

【结果及截图】

答:输入30,得其因式为 1,2,3,5,6,10,15,30,截图如下:

【习题5】

【源程序实现】

If 语句

#include main(){

int num;

printf(“Input:”);

scanf(“%d”,&num);

if(num<0||num>100)printf(“The number is wrong!”);

else if(num<=59)printf(“E”);

else if(num<=69)printf(“D”);

else if(num<=79)printf(“C”);

else if(num<=89)printf(“B”);

else printf(“A”);

return 0;}

Switch 语句

#include main(){

int num,n;

printf(“Input:”);

scanf(“%d”,&num);

n=num/10;

switch(n)

{

case 0:

case 1:

case 2:

case 3:

case 4:

case 5: printf(“E”);break;

case 6: printf(“D”);break;

case 7: printf(“C”);break;

case 8: printf(“B”);break;

case 9:

case 10: printf(“A”);break;

default: printf(“error!”);

}

return 0;}

【问题分析】

【习题6】

【源程序实现】

#include main(){ int month,num;float price,cost;printf(“month=”);scanf(“%d”,&month);printf(“nprice=”);scanf(“%f”,&price);printf(“nnum=”);scanf(“%d”,&num);if(month>=7month<=9){if(num>=20)cost=price*0.9*num;else cost=price*0.95*num;} if((month>=1month<=6)||(month>=11month<=12)){if(num>=20)cost=price*0.8*num;else cost=price*0.9*num;} printf(“cost=%f”,cost);}

【习题7】

【源程序实现】

#include #include void main(){ int num,i,sum=0,count=0;for(num=999;count!=10;num-=2){for(i=2;i=sqrt(num)){count++;sum+=num;printf(“%d+”,num);} } printf(“b=%d”,sum);} 【结果及截图】

六.简答题

C语言实验报告 第6篇

实验名称 ____ C程序的运行环境和运行C程序的方法_学期日期

同组人李江涛指导老师_杨雪松___________成绩___________-------------------------

【实验目的】:

1.了解所用的计算机系统的基本操作方法,学会独立使用该系统

2.了解在该系统上如何编辑、编译、连接和运行一个C程序

3.通过运行简单的C程序,初步了解C源程序的特点

【实验原理及相关知识】:(此处请简短概述一下就可以)

【实验设备】:(正确填写每次实验所用的设备型号)

【实验内容】:(此外按实指导书的要求写自己设计的东西)

【实验过程】:

【实验总结】:(此处写实验完成情况及对相关结果的分析总结)

【实验心得及其他】:

请各位同学认真添写实验报告,不要抄袭,尽量用自己的语言,自己的想法完成实验及

相关文章
运动会跳绳通讯稿

运动会跳绳通讯稿

运动会跳绳通讯稿(精选6篇)运动会跳绳通讯稿 第1篇跳出健康、跳出风采胶州市第六实验小学举行跳绳比赛活动随着一生哨响,胶州市第六实验...

3
2025-09-23
艺术匠心范文

艺术匠心范文

艺术匠心范文(精选10篇)艺术匠心 第1篇一篇文学作品的优秀,源于作者深邃而独特的见识,源于作者独具匠心的表现技巧,源于作者精准而细腻的...

1
2025-09-23
英文入学申请书范文

英文入学申请书范文

英文入学申请书范文(精选9篇)英文入学申请书范文 第1篇Application Letter for AdmissionDear Sir or Madam,My name is ______...

2
2025-09-23
远程网络控制范文

远程网络控制范文

远程网络控制范文(精选11篇)远程网络控制 第1篇1 智能网络现场控制单元的基本结构远程控制依附于网络技术, 其控制模式是客户服务器模...

1
2025-09-23
银行面试题自我介绍

银行面试题自我介绍

银行面试题自我介绍(精选5篇)银行面试题自我介绍 第1篇在准备自我介绍时,我们要先明白自我介绍的目的是什么?其实,HR让你做自我介绍,...

1
2025-09-23
移动安全生产工作总结

移动安全生产工作总结

移动安全生产工作总结(精选8篇)移动安全生产工作总结 第1篇近年来,分公司始终把安全生产作为头等大事来抓,坚持“安全第一,预防为主”...

1
2025-09-23
一缕阳光的小学作文

一缕阳光的小学作文

一缕阳光的小学作文(精选6篇)一缕阳光的小学作文 第1篇当我们汲汲于富贵,戚戚于贫贱时,何不让一缕阳光走进我们的心里,晕开满心的疲惫...

1
2025-09-23
医院2016年医疗质控工作计划

医院2016年医疗质控工作计划

医院2016年医疗质控工作计划(精选12篇)医院2016年医疗质控工作计划 第1篇冕宁漫水湾友松医院2016年医疗质控工作计划2016年我院为进一步...

2
2025-09-23
付费阅读
确认删除?
回到顶部