利用c语言设计简单的小学生算术自测系统,求大神编写程序

求C语言大神给写一下程序,要有详细说明,毕竟某慕放出的100分不是白放的嘛。要求如下,我只需要程序代码和详解,报告什么的我自己会写的。

要求:
利用c语言设计简单的小学生算术自测系统(或学生成绩管理系统)
小学生算术自测系统:要求根据用户实际情况可以选择相应的题目等级,系统自动生成题目,用户答题后由系统测试并给出评分。要求设计选择菜单由用户输入数字选择题型题量等,具体功能设计可用多个自定义函数分别实现。
学生成绩管理系统:实现对多个学生的多门课程成绩进行管理,假设初始已有十个学生及其三门课程的成绩,要求系统能够实现如下功能:学生及成绩信息输入,学生课程成绩信息显示,学生或课程成绩求和、平均值、求最高分、求最低分,以及学生成绩查找、成绩排序等。要求设计菜单由用户输入数字选择功能,并用多个自定义函数分别实现上述各种信息管理功能。
具体要求:
1. 使用c-free英文版软件设计应用系统,并采用全英文功能界面。
2. 撰写完善的系统设计报告(英文),应包括功能分析、算法研究、关键问题解决办法、代码编写、重难点总结、系统运行结果展示以及系统设计的参考文献(不少于5个)等环节,注意插图不能超过文档内容的1/3。
3. 在实现软件系统基本功能的基础上,可以适当增加功能设计。

第1个回答  推荐于2016-11-10
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUMBER 10/*定义数组项目的个数为一个符号常量*/
int Num1[10]= {0},Num2[10]= {0},Pos1=0,Pos2=0;
/*定义两个数组来保存已经出现的情况*/
int main()
{
int putquestion();/*声明出题函数*/

int questionnum=10;/*声明变量*/
int i=1;
printf("Please input number of question:");
scanf("%d",&questionnum);
int answer[NUMBER];/*声明一个数组,用于储存学生的答案*/
int rightanswer[NUMBER];/*声明一个数组,用于储存正确答案*/

for(i=1; i<=questionnum; i++)
{
rightanswer[i-1]=putquestion();
scanf("%d",&answer[i-1]);
}
for(i=1; i<=NUMBER; i++)
printf("\n%d%5d",answer[i-1],rightanswer[i-1]);
}
bool exist(int goal,int *Num)
{/*检查数字goal是否已经出现在Num数组里面*/
int i;
for(i=0; i<Pos1; i++)
if(goal==Num[i])
return true;
return false;
}
int putquestion()/*此函数用于出题*/
{
int randValue;
int num1;
int num2;
int correctanswer;
srand((int)time(NULL));
randValue=1+rand()%4;
num1=1+rand()%99;
num2=1+rand()%99;
switch(randValue)
{
case 1:/*加法作业*/
while(num1+num2>=100||exist(num1,Num1)&&exist(num2,Num2))
{/*当满足该条件(满足题目要求且两个数同时出现过)时继续循环*/
num1=1+rand()%99;
num2=1+rand()%99;
}
Num1[Pos1++]=num1;
Num2[Pos2++]=num2;
printf("\n%d+%d=",num1,num2);
correctanswer=num1+num2;
break;
case 2:/*减法作业*/
while(num1-num2<0||exist(num1,Num1)&&exist(num2,Num2))
{
num1=1+rand()%99;
num2=1+rand()%99;
}
Num1[Pos1++]=num1;
Num2[Pos2++]=num2;
printf("\n%d-%d=",num1,num2);
correctanswer=num1-num2;
break;
case 3:/*乘法作业*/
while(num1*num2>=100||exist(num1,Num1)&&exist(num2,Num2))
{
num1=1+rand()%99;
num2=1+rand()%99;
}
Num1[Pos1++]=num1;
Num2[Pos2++]=num2;
printf("\n%d*%d=",num1,num2);
correctanswer=num1*num2;
break;
case 4:/*除法作业*/
while(num1%num2!=0||exist(num1,Num1)&&exist(num2,Num2))
{
num1=1+rand()%99;
num2=1+rand()%99;
}
Num1[Pos1++]=num1;
Num2[Pos2++]=num2;
printf("\n%d/%d=",num1,num2);
correctanswer=num1/num2;
break;
}
return(correctanswer);
}追问

后五行的东西表示无法理解

本回答被提问者采纳
相似回答