例如:請輸入題數:2
1+5=
2+4=
由用戶輸入答案,程序根據答案判斷正誤,輸出正確率(%)
界面要示:圖形方式界面(使用c語言繪制界面)
我目前做的程序,現在腦子很混亂,所以最後幾行亂七八糟的沒改。。。希望有高人指點,幫我完成整個程序的循環。還有,用turbo c為這個程序制作壹個簡單的歡迎界面和運行界面
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
char d1,d2;
int Getanum(int num)
{
int a;
srand(num*num+time(0));
a=(rand()+num)%10;//產生10以內的隨機數
return a;
}
void main()
{
loop:int i,num,a,b,c,op,error;
error = 0;//錯誤數置零
num = 100;//使得下面的while循環成立即可
printf("同學們,開始做題嘍!輸入題數吧^.^:");
scanf("%d",&num);
for(i=0;i<num;i++)//每次出題開始
{
a = Getanum(i);//第壹個操作數
b = Getanum(a);//第二個
op = (Getanum(a+b)+b)%2;//產生符號 +或者-
switch(op)
{
case 0://+
if(a+b>10)//超過10重新來
{
i--;
break;
}
else
{
printf("%d : %d + %d = ",i+1,a,b);//出題
scanf("%d",&c);//取輸入的結果
if(c != a+b)//答案錯誤
{
printf("出錯啦,做題要仔細哦!\n");
error++;
}
else//正確答案鼓勵壹下
{
printf("真棒!再接再厲哦!\n");
}
}
break;
case 1://-
if(b>a)//保證a>b 使得不出現負數
{
a=a+b;
b=a-b;
a=a-b;
}
printf("%d : %d - %d = ",i+1,a,b);//出題
scanf("%d",&c);//取結果
if(c != a-b)
{
printf("出錯啦,做題要仔細哦!\n");
error++;//錯誤自加
}
else
{
printf("真棒!再接再厲哦!\n");
}
break;
default:
break;
}
}
printf("%d 道題錯誤!\n",error);//輸出錯誤數
printf("妳的正確率為百分之 %d .\n",(num-error)*100/num);//所得分數
printf("還需要多加努力哦,繼續做題麽?\n繼續請輸入y,不繼續請輸入n");
d1=getchar();
if(d1='y')goto loop;
else printf("byebye!");
}
最佳答案
程序改好了 界面先放放吧 不用graphics.h的話做個簡單的歡迎界面還是可以的
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
char d1,d2;
int Getanum(int num)
{
int a;
srand(num*num+time(0));
a=(rand()+num)%10;//產生10以內的隨機數
return a;
}
int main()
{
int i,num,a,b,c,op,error;
error = 0;//錯誤數置零
num = 100;//使得下面的while循環成立即可
printf("同學們,開始做題嘍!輸入題數吧^.^:");
scanf("%d",&num);
for(i=0;i<num;i++)//每次出題開始
{
a = Getanum(i);//第壹個操作數
b = Getanum(a);//第二個
op = (Getanum(a+b)+b)%2;//產生符號 +或者-
switch(op)
{
case 0://+
if(a+b>10)//超過10重新來
{
i--;
break;
}
else
{
printf("%d : %d + %d = ",i+1,a,b);//出題
while(!scanf("%d",&c))
{
fflush(stdin);
}//取輸入的結果
if(c != a+b)//答案錯誤
{
printf("出錯啦,做題要仔細哦!\n");
error++;
}
else//正確答案鼓勵壹下
{
printf("真棒!再接再厲哦!\n");
}
}
break;
case 1://-
if(b>a)//保證a>b 使得不出現負數
{
a=a+b;
b=a-b;
a=a-b;
}
printf("%d : %d - %d = ",i+1,a,b);//出題
scanf("%d",&c);//取結果
if(c != a-b)
{
printf("出錯啦,做題要仔細哦!\n");
error++;//錯誤自加
}
else
{
printf("真棒!再接再厲哦!\n");
}
break;
default:
break;
}
}
printf("%d 道題錯誤!\n",error);//輸出錯誤數
printf("妳的正確率為百分之 %d .\n",(num-error)*100/num);//所得分數
printf("還需要多加努力哦,繼續做題麽?\n繼續請輸入y,不繼續請輸入n");
fflush(stdin);
d1=getchar();
if(d1=='y')
main();
else
{
printf("byebye!\n");
exit(0);
}
return 0;
}
這個是加法的:
#include <iostream.h>
#include <windows.h>
#include <time.h>
void main()
{
int i,n=0,x,k;
cout<<"請輸入題目的數目:";
cin>>x;
for(i=1;i<=x;i++)
{
int a,b,c,d;
srand(time(NULL));
a=rand()%10;
Sleep(200);
srand(time(NULL));
b=rand()%10;
cout<<a<<"+"<<b<<"=";
c=a+b;
cin>>d;
if(c==d)
{
cout<<"回答正確,繼續加油"<<endl;
n++;
}
else cout<<"回答錯誤,加把勁哦"<<endl;
cout<<"\n";
}
k=n*(100/x);
if(k>=80)
{
cout<<"恭喜妳得到好成績,妳的得分為:"<<k<<"\n";
}
else cout<<"成績壹般哦,請繼續加油,妳的得分為:"<<k<<"\n";
}
這個是減法的:
#include <iostream.h>
#include <windows.h>
#include <time.h>
void main()
{
int i,n=0,x,k;
cout<<"請輸入題目的數目:";
cin>>x;
for(i=1;i<=x;i++)
{
int a,b,c,d,t;
srand(time(NULL));
a=rand()%10;
Sleep(200);
srand(time(NULL));
b=rand()%10;
if(a<b)
{
t=a;a=b;b=t;
}
cout<<a<<"-"<<b<<"=";
c=a-b;
cin>>d;
if(c==d)
{
cout<<"回答正確,繼續加油"<<endl;
n++;
}
else cout<<"回答錯誤,加把勁哦"<<endl;
cout<<"\n";
}
k=n*(100/x);
if(k>=80)
{
cout<<"恭喜妳得到好成績,妳的得分為:"<<k<<"\n";
}
else cout<<"成績壹般哦,請繼續加油,妳的得分為:"<<k<<"\n";
}