C语言课程设计,小学算术运算测试系统模拟,求大概思路以及具体的程序代码。网上没现成的,按具体的任务来
1.任务描述计划编写小学算术运算测试程序。要求完成100以内的加减法运算。系统能根据用户输入的题目个数自行出题。用户输入答案后可以判断正误,并能计算出算对及算错的题目数,...
1. 任务描述
计划编写小学算术运算测试程序。要求完成100以内的加减法运算。系统能根据用户输入的题目个数自行出题。用户输入答案后可以判断正误,并能计算出算对及算错的题目数,最后显示出本次测试的成绩。系统要求:对于计算错的题目发出报警声,提示用户注意,同时给出正确结果。做完一次测试后用户可决定是否继续进行下一次测试。
2.涉及的知识点
变量的定义、输入和输出函数、随机数函数、if语句、循环语句、转义字符的使用等等。
不要网上那些复制的啊,那些跟这个要求不一样,高手可以把网上的按我的任务要求进行改改。
没多少分了,望高手帮忙额。。。 展开
计划编写小学算术运算测试程序。要求完成100以内的加减法运算。系统能根据用户输入的题目个数自行出题。用户输入答案后可以判断正误,并能计算出算对及算错的题目数,最后显示出本次测试的成绩。系统要求:对于计算错的题目发出报警声,提示用户注意,同时给出正确结果。做完一次测试后用户可决定是否继续进行下一次测试。
2.涉及的知识点
变量的定义、输入和输出函数、随机数函数、if语句、循环语句、转义字符的使用等等。
不要网上那些复制的啊,那些跟这个要求不一样,高手可以把网上的按我的任务要求进行改改。
没多少分了,望高手帮忙额。。。 展开
3个回答
展开全部
代码如下,测试可运行,不过没蜂鸣就是了
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int question(int number)//100以内的加减法
{
int i,j,k,answer,realAnswer;//i,j为被加被减数,k为运算符(通过模2)
char opper;
srand((unsigned)time(NULL));
i=rand()%100;
j=rand()%100;
k=rand()%2;
if(k) opper='+';
else opper='-';
if(i<j&&opper=='-')
{
int temp;
temp=i;
i=j;
j=temp;
}
if(opper=='+')
realAnswer=i+j;
else
realAnswer=i-j;
printf("No.%d: %d%c%d=",number,i,opper,j);
scanf("%d",&answer);
if(answer==realAnswer)
return 1;//正确则返回1
else
{
printf("答案错误,正确答案为%d\n",realAnswer);
return 0;
}
}
int main()
{
int number,i,rightNum=0,wrongNum=0;
float score;
printf("请输入题目个数:\n");
scanf("%d",&number);
i=number;
while(i)
{
rightNum+=question(number-i+1);
i--;
}
wrongNum=number-rightNum;
score=100*((float)rightNum/(float)number);
printf("算对%d题,算错%d题,总得分为%.2f\n",rightNum,wrongNum,score);
system("pause");
}
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int question(int number)//100以内的加减法
{
int i,j,k,answer,realAnswer;//i,j为被加被减数,k为运算符(通过模2)
char opper;
srand((unsigned)time(NULL));
i=rand()%100;
j=rand()%100;
k=rand()%2;
if(k) opper='+';
else opper='-';
if(i<j&&opper=='-')
{
int temp;
temp=i;
i=j;
j=temp;
}
if(opper=='+')
realAnswer=i+j;
else
realAnswer=i-j;
printf("No.%d: %d%c%d=",number,i,opper,j);
scanf("%d",&answer);
if(answer==realAnswer)
return 1;//正确则返回1
else
{
printf("答案错误,正确答案为%d\n",realAnswer);
return 0;
}
}
int main()
{
int number,i,rightNum=0,wrongNum=0;
float score;
printf("请输入题目个数:\n");
scanf("%d",&number);
i=number;
while(i)
{
rightNum+=question(number-i+1);
i--;
}
wrongNum=number-rightNum;
score=100*((float)rightNum/(float)number);
printf("算对%d题,算错%d题,总得分为%.2f\n",rightNum,wrongNum,score);
system("pause");
}
更多追问追答
追问
我题目漏掉了,可以帮忙加上乘除法吗?
追答
乘法好加。除法你要怎样,答案是分数的时候怎么显示?允许出现小数吗?
参考资料: 自己写的
展开全部
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
struct timu
{
int num1;
int num2;
char fuhao;
int right;
int yu;
int yu_r;
int daan;
}std[5];
main()
{
int i,n=0,cj=0;
char fh[4]="+-*/";
system("cls");
srand((unsigned long)time(0));
for(i=0;i<5;i++)
{
std[i].num1=rand()%100;
std[i].num2=rand()%100;
std[i].fuhao=fh[rand()%4];
while((std[i].fuhao=='/')&&((std[i].num2==0)||(std[i].num2>std[i].num1)))
{
std[i].num2=rand()%100;
}
while(std[i].fuhao=='-'&&std[i].num2>std[i].num1)
{
std[i].num2=rand()%100;
}
printf("%d %c %d = ",std[i].num1,std[i].fuhao,std[i].num2);
switch(std[i].fuhao)
{
case '+':std[i].right=std[i].num1+std[i].num2;break;
case '-':std[i].right=std[i].num1-std[i].num2;break;
case '*':std[i].right=std[i].num1*std[i].num2;break;
case '/':std[i].right=std[i].num1/std[i].num2;std[i].yu=std[i].num1%std[i].num2;break;
}
if((std[i].fuhao=='/')&&(std[i].yu!=0))
scanf("%d%d",&std[i].daan,&std[i].yu_r);
else
{
std[i].yu_r=0;
scanf("%d",&std[i].daan);
}
if(std[i].daan==std[i].right&&std[i].yu==std[i].yu_r)
n++;
cj=n*10;
printf("\n当前成绩:%d\n\n",cj);
}
printf("\n\n总成绩:%d\n",cj);
for(i=0;i<5;i++)
{
if((std[i].fuhao=='/')&&(std[i].yu!=0))
printf("\n%d. %d %c %d = %d %d\n\t您的答案:d %d\n",i+1,std[i].num1,std[i].fuhao,std
[i].num2,std[i].right,std[i].yu_r,std[i].daan,std[i].yu);
else
printf("\n%d. %d %c %d = %d\n\t您的答案:%d\n",i+1,std[i].num1,std[i].fuhao,std[i].num2,std
[i].right,std[i].daan);
}
getch();
}
#include "time.h"
#include "stdlib.h"
struct timu
{
int num1;
int num2;
char fuhao;
int right;
int yu;
int yu_r;
int daan;
}std[5];
main()
{
int i,n=0,cj=0;
char fh[4]="+-*/";
system("cls");
srand((unsigned long)time(0));
for(i=0;i<5;i++)
{
std[i].num1=rand()%100;
std[i].num2=rand()%100;
std[i].fuhao=fh[rand()%4];
while((std[i].fuhao=='/')&&((std[i].num2==0)||(std[i].num2>std[i].num1)))
{
std[i].num2=rand()%100;
}
while(std[i].fuhao=='-'&&std[i].num2>std[i].num1)
{
std[i].num2=rand()%100;
}
printf("%d %c %d = ",std[i].num1,std[i].fuhao,std[i].num2);
switch(std[i].fuhao)
{
case '+':std[i].right=std[i].num1+std[i].num2;break;
case '-':std[i].right=std[i].num1-std[i].num2;break;
case '*':std[i].right=std[i].num1*std[i].num2;break;
case '/':std[i].right=std[i].num1/std[i].num2;std[i].yu=std[i].num1%std[i].num2;break;
}
if((std[i].fuhao=='/')&&(std[i].yu!=0))
scanf("%d%d",&std[i].daan,&std[i].yu_r);
else
{
std[i].yu_r=0;
scanf("%d",&std[i].daan);
}
if(std[i].daan==std[i].right&&std[i].yu==std[i].yu_r)
n++;
cj=n*10;
printf("\n当前成绩:%d\n\n",cj);
}
printf("\n\n总成绩:%d\n",cj);
for(i=0;i<5;i++)
{
if((std[i].fuhao=='/')&&(std[i].yu!=0))
printf("\n%d. %d %c %d = %d %d\n\t您的答案:d %d\n",i+1,std[i].num1,std[i].fuhao,std
[i].num2,std[i].right,std[i].yu_r,std[i].daan,std[i].yu);
else
printf("\n%d. %d %c %d = %d\n\t您的答案:%d\n",i+1,std[i].num1,std[i].fuhao,std[i].num2,std
[i].right,std[i].daan);
}
getch();
}
更多追问追答
追问
复制的? 好多符号看不懂额、、、
追答
这可不是复制的,这是原创,我从我的代码库中翻出来的,哪里看不懂,说!
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询