C语言课程设计报告
院系:信息工程系
专业:11 级 计算机科学与技术
题目:教小学生算术
姓名:许庆超
学号:2111714135
指导教师:夏学文
2012.12.31
湖北工程学院新技术学院
一、实验目的:
1.使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。 2.培养学生综合运用所学知识独立完成课题的能力。
3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
4.提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。
5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
6.对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核
二、实验内容:
(1)制作一个可供小学数学运算程序:10以内加减法,能根据输入题数出题,判断做题是否正确。正确的给鼓励,错误的发出警报,并给出正确答案,最后计算分数。
(2)执行编译操作,并根据提示调试此程序,排除所有的错误和警告。直到编译成功为止。
(3)执行运行操作,逐一对每个模块进行调试。直到全部程序运行成功为止。
三、 需求分析:
通过此系统实现以下功能:
做个位数,十位数的加,减,乘和除,减法不能得负数,除法要除尽,屏幕上随机出现两个数,提示小学生给出答案,答错了要提示重新输入,直到答对为止。要统计给分,且累计,够一定分数后可进级,即从个位进到十位。同样,也可降级。
1.1加法功能:
用PLUS函数实现加法算数,答对输入的题量后可晋级,难度有所增加,结果错误后提示错误并且重新输入。
1.2减法功能:
用sub函数实现减法算数,并且结果不为负数,答对输入的题量后可晋级,难度有所增加,结果错误后提示错误并且重新输入。
1.3乘法功能:
用mul函数实现乘法算数,答对输入的题量后可晋级,难度有所增加,结果错误后提示错误并且重新输入。
1.4除法功能:
用div函数实现除法功能,并且生成的除法算数要除尽,答对输入的题量后可晋级,难度有所增加,结果错误后提示错误并且重新输入。
一.输入模块:(2种算法)
加法:请选择:1
欢迎进入第一关!
请设定题目数量:1
1+7=8
恭喜你,答对了!
恭喜你通过了第一关!
晋级模块:
是否继续挑战第一关?y(1)/n(0):1
欢迎进入第二关!
请设定题目数量:1
9+24=33
恭喜你,答对了!
恭喜你通过了第二关!
是否继续挑战第一关?y(1)/n(0):0
欢迎进入第三关!
请设定题目数量:1
78+58=136
恭喜你,答对了!
恭喜你通过了第三关!
乘法::请选择:1
欢迎进入第一关!
请设定题目数量:1
1*7=7
恭喜你,答对了!
恭喜你通过了第一关!
晋级模块:是否继续挑战第一关?y(1)/n(0):1
欢迎进入第二关!
请设定题目数量:1
34*0=0
恭喜你,答对了!
恭喜你通过了第二关!
是否继续挑战第一关?y(1)/n(0):0
欢迎进入第三关!
请设定题目数量:1
25*4=100
恭喜你,答对了!
恭喜你通过了第三关!
二.总体设计
主函数结构图:
三.算法设计:
1、本程序实现的功能要求:利用for循环、do...while循环和switch完成的主菜单。
2、
3、进入第一步出现如下信息:
用户输入要练习的题数。
第二步:输出算术式子
用户输入结果进行测试。
第三步:输出测试结果
屏幕显示出本次测试的基本情况。
四.流程图
五.主要函数之间相互调用如下:
主函数调用:
六、调试情况,设计技巧及体会
( 1 )、调试中的问题:
a. 运行后关掉黑屏后,输入的数据将不会保存,再运行时修改函数等将不会进行该数据,多次使用后发现,再关掉该屏前要输入5,数据就会保存.
b. 在输入数据时要注意其输入形式,输错后数据将不会保存.就不会进行其他函数的使用.
c. c语言设计的体会:
((1).这次课程设计和以前所做题目截然不同,在这之前,以前从未尝试过写一个较大的程序,由于上学期C语言学得不是很好,所以设计过程中遇到好多问题,比如没有思路、不知如何下手等。但是通过查阅资料和咨询同学终于有了想法。所以自己就慢慢设计了这个程序。但是程序设计有些简单,没有运用链表知识,只应用了结构体和数组。而且设计中还存在很多问题,管理系统不够完善,实现的功能不够详尽,没有实现自己想要实现的那么复杂和完善的功能。
(2)通过对此程序的编写,让我把书本上学到的应用到实际中去,但在编序后,再进行编译时出现了许多错误和警告。这才让我认识到理论和实践是存在一定差别的。最后,在多次查阅资料,询问同学后把程序给改编完成了。它让我体会到自己的不足,所以自己以后要踏踏实实地把计算机年学好,为自己将来的发展打下坚实基础。
在此次程序编写中,发现的问题有:
1.函数应该是先定义后使用,所以一开始时,总是出现很多警告,说没有定义!!后来经过仔细检查,发现主函数应该是放在各个模块之后!!
2.要注意全局变量的应用,若全局变量没定义好的话,对整个程序的编写与都有很大影响!!
3.在删除模块中,刚开始存在很多问题,删除不了,或者删除后还能打印出来,结果后来发现是删除模块本身的问题。。(该块较难处理)
4.在查询模块中,刚开始那个按商品类别查询无法运行,经检查,是由于未定义成字符串数组形式,因此定义变量的类型非常重要。
(3)此次设计感受:
要想编写一个准确、高效并有使用价值的程序,一定先要对课本知识熟悉,还要掌握必要的上机操作能力,写程序其实很容易而关键在于调试程序。这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验。
程序运行:
主菜单运行情况:
加法运行情况:
减法运行情况:
乘法运行情况:
除法运行情况:
退出运行情况:
七.原程序清单:
// 1.cpp : Defines the entry point for the console application.
//
#include<stdafx.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("********************************************************************************");
printf("^_^_^_^_^_^_^_^_^_^_^_^小朋友,欢迎你们来学习小学算术_^_^_^_^_^_^_^_^_^_^_^_^_^_");
printf(" ");
printf(" 1.加法 ");
printf(" 2.减法 ");
printf(" 3.乘法 ");
printf(" 4.除法 ");
printf(" 0.退出 ");
printf(" ");
printf(" 快选择你要学习的内容吧! ");
printf(" ");
printf("^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_");
printf("********************************************************************************");
}
void plus1()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第一关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
printf("%d",m=rand()%10);
printf("+");
printf("%d",n=rand()%10);
printf("=");
total=m+n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;}
}
printf("恭喜你通过了第一关!\n");
}
void plus2()
{
int count=0, m,n,s,total,k;
printf("欢迎进入第二关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand()%10;
n=rand()%100;
}while(n<10);
printf("%d",m);
printf("+");
printf("%d",n);
printf("=");
total=m+n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;} }
printf("恭喜你通过了第二关!\n");
}
void plus3()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第三关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand ()%100;
n=rand()%100;
}while(m<10&&n<10);
printf("%d",m);
printf("+");
printf("%d",n);
printf("=");
total=m+n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;}
}
printf("恭喜你通过了第三关!\n");
}
void sub1()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第一关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand()%10;
n=rand()%10;
}while(m<=n);
printf("%d",m);
printf("-");
printf("%d",n);
printf("=");
total=m-n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;}
}
printf("恭喜你通过了第一关!\n");
}
void sub2()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第二关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand()%100;
n=rand()%10;
}while(m<10);
printf("%d",m);
printf("-");
printf("%d",n);
printf("=");
total=m-n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;}
}
printf("恭喜你通过了第二关!\n");
}
void sub3()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第三关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand()%100;
n=rand()%100;
}while(m<=n||m<10||n<10);
printf("%d",m);
printf("-");
printf("%d",n);
printf("=");
total=m-n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;}
}
printf("恭喜你通过了第三关!\n");
}
void plus()
{
int i;
plus1();
printf("是否继续挑战?Y(1)/N(0):");
scanf("%d",&i);
if(i==1)
plus2();
else
return;
i=NULL;
printf("是否继续挑战?Y(1)/N(0):");
scanf("%d",&i);
if(i==1)
plus3();
else
return;
}
void sub()
{
int i;
sub1();
printf("是否继续挑战?Y(1)/N(0):");
scanf("%d",&i);
if(i==1)
sub2();
else
return;
i=NULL;
printf("是否继续挑战?Y(1)/N(0):");
scanf("%d",&i);
if(i==1)
sub3();
else
return;
}
void mul1()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第一关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
printf("%d",m=rand()%10);
printf("*");
printf("%d",n=rand()%10);
printf("=");
total=m*n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;}
}
printf("恭喜你通过了第一关!\n");
}
void mul2()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第二关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand()%100;
n=rand()%10;
}while(m<10);
printf("%d",m);
printf("*");
printf("%d",n);
printf("=");
total=m*n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;}
}
printf("恭喜你通过了第二关!\n");
}
void mul()
{
int i;
mul1();
printf("是否继续挑战?Y(1)/N(0):");
scanf("%d",&i);
if(i==1)
mul2();
}
void div1()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第一关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand()%10;
n=rand()%10;
}while(n==0||m%n!=0);
printf("%d",m);
printf("/");
printf("%d",n);
printf("=");
total=m/n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;}
}
printf("恭喜你通过了第一关!\n");
}
void div2()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第二关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand()%100;
n=rand()%10;
}while(n==0||m<10||m%n!=0);
printf("%d",m);
printf("/");
printf("%d",n);
printf("=");
total=m/n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;}
}
printf("恭喜你通过了第二关!\n");
}
void div3()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第三关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand()%100;
n=rand()%100;
}while(n==0||m<10||n<10||m%n!=0);
printf("%d",m);
printf("/");
printf("%d",n);
printf("=");
total=m/n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;}
}printf("恭喜你通过了第三关!\n");
}
void div()
{
int i;
div1();
printf("是否继续挑战?Y(1)/N(0):");
scanf("%d",&i);
if(i==1)
div2();
else
return;
i=NULL;
printf("是否继续挑战?Y(1)/N(0):");
scanf("%d",&i);
if(i==1)
div3();
else
return;}
main()
{
void menu();
int k;
do{
menu();
printf("请选择:");
scanf("%d",&k);
switch(k)
{
case 1:plus();break;
case 2:sub();break;
case 3:mul();break;
case 4:div();break;
case 0:break;
}printf("\n");
}while(k!=0);
printf("\n");
return 0;}
题名学生:*****电子**学号****实验地点:现代教育技术中心***房间实验日期和时间:20##年*月*日-*月*日实验类别:…
西安科技大学C语言课程设计报告题目学生成绩管理系统班级测控技术与仪器1102班学号姓名20xx年6月C语言课程设计实验报告C语言课…
C语言课程设计报告题目1文件移位加密与解密2学生成绩管理系统班级电子信息工程班学号姓名艾依河里的鱼20xx年7月C语言课程设计说明…
华中科技大学计算机科学与技术学院C语言程序设计课程设计实验报告题目汽车租赁信息管理系统专业班级学号完成日期20xx年10月21日指…
综合性实验报告课程名称C语言程序设计实验题目班级成绩管理系统的设计与实现姓名学号组长系别专业班级指导教师实验日期20xx年06月0…
C程序设计实验报告实验名称控制结构综合程序设计学时安排2课时实验类别上机操作型实验要求1人1组一实验目的1熟练掌握分支结构循环结构…
C课程设计报告题目小学算术运算测试设计者刘星刘俊良凌锋专业班级计算机网络0901班学号343337指导教师任长安所属系部计算机与信…
海南大学三亚学院信息管理与信息系统专业课程设计实验报告题目C语言程序设计实习分院管理分院专业信息管理与信息系统班级信管0902姓名…
程序设计基础课程设计院系班级姓名指导教师20xx年12月25日第1页共49页贪吃蛇程序设计基础课程设计任务书一题目贪吃蛇二设计要求…
C语言程序设计实验报告专业班级日期11月26日成绩实验组别第327次实验指导教师李开学生姓名学号同组人姓名实验名称数组实验一实验目…
大连交通大学软件学院C语言课程设计报告SOFTWAREINSTITUTEOFDALIANJIAOTONGUNIVERSITYEXP…