一、题目要求
每个同学对已有的四则运算生成器进行优化,让程序能接受用户输入答案,并判断对错,最后给出总共对/错的数量。
二、设计思想
把结果算出来存入到一个数组中,与用户输入的答案进行比较,一样就是正确,不一样就是错误。
三、程序源代码
#include<iostream> #include<stdlib.h> using namespace std; #define MAX 10000 #include <ctime> #include <cstdlib> int answer(int a[],int length) //判断正误 { int answer[100]; int sum=0; for(int i=0;i<length;i++) { cout<<"请输入第"<<i+1<<"道题结果:"; cin>>answer[i]; if(a[i]==answer[i]) { sum=sum+1; } } return sum; } int jisuan(char a,int op1,int op2) //计算题目正确结果 { int correct; switch(a) { case '+':correct=op1+op2;break; case '-':correct=op1-op2;break; case '*':correct=op1*op2;break; case '/':correct=op1/op2;break; } return correct; } void display() { int jieguo[100]; char yun; int op1; int op2; char q[4]={'+','-','*','/'}; int a,b,k,m,n,o,p; cout<<"请输入定制数量"<<endl; cin>>k;//定制数量 cout<<endl; cout<<"请输入数值范围(如 10 50)"<<endl; cin>>m>>n; cout<<endl;//数值范围 cout<<"0.无乘除法"<<endl; cout<<"1.有乘除法"<<endl; cin>>o;//有无乘除 0 无 1有 if(m<n) { int temp=n; n=m; m=temp; } if(o!=0) { cout<<endl;//数值范围 cout<<"0.无余数"<<endl; cout<<"1.有余数"<<endl; cin>>p;//有无余数 0无 1有 } int d[MAX][2]; srand(time(0)); for(int i=0;i<k;i++) { d[i][0]=rand()%(m-n)+n; d[i][1]=rand()%(m-n)+n; a=rand()%4; if(o==1) { a=rand()%4; } else { a=rand()%2; } if(o==0) { cout<<"第"<<i+1<<"道题:"<<d[i][0]<<q[a]<<d[i][1]<<"="<<endl; yun=q[a]; op1=d[i][0]; op2=d[i][1]; jieguo[i]=jisuan(yun,op1,op2); } else if(p==0) { if(a==3) { if(d[i][0]%d[i][1]==0) { cout<<"第"<<i+1<<"道题:"<<d[i][0]<<q[a]<<d[i][1]<<"="<<endl; yun=q[a]; op1=d[i][0]; op2=d[i][1]; jieguo[i]=jisuan(yun,op1,op2); } else { i=i-1; } } else { cout<<"第"<<i+1<<"道题:"<<d[i][0]<<q[a]<<d[i][1]<<"="<<endl; yun=q[a]; op1=d[i][0]; op2=d[i][1]; jieguo[i]=jisuan(yun,op1,op2); } } else { cout<<"第"<<i+1<<"道题:"<<d[i][0]<<q[a]<<d[i][1]<<"="<<endl; yun=q[a]; op1=d[i][0]; op2=d[i][1]; jieguo[i]=jisuan(yun,op1,op2); } } int s=answer(jieguo,k); cout<<"正确题目数量为:"<<s<<endl; } int main() { display(); return 0; }
四、截图
五、实验总结
本次实验运用了函数,运用一位数组。把结果算出来存入到一个数组中,与用户输入的答案进行比较,一样就是正确,不一样就是错误。实验运用了函数,本来对函数传参不是很懂,通过做这次实验,学会了函数传参。以后做程序不管题目有多难设计,多难编写,都要仔细分析,也不太犯憷。每一个大程序可能乍看起来比较多,其实他都是每一个小程序组成的,要一点一滴慢慢解决。