C语言课程设计报告1
第 PAGE \* Arabic \* MERGEFORMAT 24 页
C语言课程设计
学部: 机电学院
专业: 电信本一
班级: 电信本一
2015年9月
第1章 小学生算术运算测评软件
1.1问题描述
小学生算术运算测试系统能自动生成加法、减法、乘法和除法的算数表达式,并且通过学生输入的答案判断结果是否正确,然后给出提示。在用户选择结束程序时,可以统计共答了多少题,得分是多少。
1.2实现功能
小学生算术运算测评系统要求实现5大功能:随机输出加法表达式并判断答案是否正确;随机输出减法表达式并判断答案是否正确;随机输出乘法表达式并决断答案是否正确;随机输出除法表达式并判断答案是否正确;统计答题数目和得分情况。
1.3设计算法
1.该程序为小学生算术测评程序,主函数中先是用一连串的输出语句来说明程序的功能及使用方法,输1对应加法运算,输2对应减法运算,输3对应乘法运算,输4对应除法运算,输0对应的是退出程序 。
2.然后是程序的分支语句 ,通过switch多分支语句来完成,为了使switch语句里的case语句不仅仅只执行一个,这里我使用for(;;)无限循环解决,这里不用担心程序永远不会结束,因为输0后exit(0)这个系统函数可以帮助我们退出程序,这里需要提到的一点是,我采用的是默认为继续做题,而并非采用输y继续做题。
3.函数的加减乘除功能的实现 ,是通过相对应的子函数实现的,这里我们将对应功能的子函数封装在对应的头文件里等待调用 。
4. 具体的功能函数的实现, add.h头文件包含加法功能的实现。该add()子函数通过rand()函数取10的模得到随机数,余数被作为加法运算的操作数,通过一个双分支if?{}else{}语句来处理用户输入的和的结果是否为对错,对则加10分,错则不加分。这里值得一提的是count变量(计题数的变量)、score变量(用户的得分)一定要为全局变量 。
其他功能的实现,这里我们的改变不是很大,基本上是对应运算符的改变,这里我们不在详述 。
另外,这里在也写出了不自己自定义头文件的方法,见最后的图【源.c】。
1.4设计代码
main.cpp
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
#include"add.h"
#include"div.h"
#include"sub.h"
#include"mul.h"
int main()
{
printf("\t\t欢迎进入算数测试软件\n");
printf("****\t\t******************\t\t****\n");
printf("****\t\t输入1,做加法测试\t\t****\n");
printf("****\t\t输入2,做减法测试\t\t****\n");
printf("****\t\t输入3,做乘法测试\t\t****\n");
printf("****\t\t输入4,做除法测试\t\t****\n");
printf("****\t\t输入0,就退出测试\t\t****\n");
printf("****\t\t******************\t\t****\n");
int score = 0;
int count = 0;
int chose = 0;
for (;;)
{
scanf("%d", &chose);
switch (chose)
{
case 1:
add(); break;
case 2:
sub(); break;
case 3:
mul(); break;
case 4:
div(); break;
case 0:
exit(0); break;
default:
printf("你输入了非法字符\n");
}
printf("默认为继续做题,输入0为退出软件\n");
}
return 0;
}
add.h
#ifndef _ADD_H_
#define _ADD_H_
int score = 0;
int count = 0;
void add()
{
int x = 0, y = 0, z = 0, result = 0;
srand(time(NULL));//避免产生相同数
x = rand() % 10;
y = rand() % 10;
result = x + y;
printf("%d+%d=", x, y);
scanf