#include<stdio.h>
#include <ctype.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
int a[100],b[100];
int h;
char c[100],sym[5]={'+','-','*','/','!'};
int answer(int i);
void printanswer(int n);
void main()
{
int o,count;
int n;
long k=-10001;
time_t start,end;
int i;
char r;
srand((unsigned)time(NULL));
while(1)
{
count=0;
printf("\t\t\t請輸入題數 (0表示退出)");
n=-1;
scanf("%d",&n);
while(1){
if(n<0){
fflush(stdin);
printf("輸入有誤 請重新輸入");
scanf("%d",&n);
}else{break;}
}
if(n==0) exit(0);
start =time(NULL);
for(i=0;i<n;i++)
{
a[i]=rand()%201-100;
b[i]=rand()%201-100;
c[i]=sym[rand()%5];
if(c[i]==sym[4]) {
while(a[i]<=0 || a[i]>10){
a[i]=rand()%10;
}
printf("%d!=",a[i]);
h=a[i];
}
else if(a[i]<0&&b[i]<0) printf("(%d)%c(%d)=",a[i],c[i],b[i]);
else if(a[i]<0&&b[i]>0) printf("(%d)%c%d=",a[i],c[i],b[i]);
else if(a[i]>0&&b[i]<0) printf("%d%c(%d)=",a[i],c[i],b[i]);
else printf("%d%c%d=",a[i],c[i],b[i]);
scanf("%d",&k);
if(k==-10001){
printf("輸入有誤 請重新輸入 ");
scanf("%d",&k);
if(k==answer(i)) {
printf("正确!\n");
k=-10001;
count++;
else {
printf("輸入有誤 請重新輸入%d\n",answer(i));
end =time(NULL);
printf("恭喜你對了%d題,一共有%d題,",count,n-count);
printf("你一共花了%d秒\n",end-start);
}
}
int answer(int i)
long o;
if(c[i]==sym[0]) o=a[i]+b[i];
if(c[i]==sym[1]) o=a[i]-b[i];
if(c[i]==sym[2]) o=a[i]*b[i];
if(c[i]==sym[3]) o=a[i]/b[i];
if(c[i]==sym[4]){
o=1;
for(i=1;i<=h;i++)
o=o*i;
return o;

我們的作業弄得比較簡單得弄了四個功能,修改花了半個小時,讓程式變得簡單。 不過我發現會出現階乘,國小題目沒有階乘,不過階乘有些意思就用了,還有按成符号會死循環,經過我稍微修改,按符号不會死循環了,但是它會讓接下來的所有題目都答0然後顯示錯誤。
結對同伴:
姓名 | 學号 | 部落格位址 |
領航員 侯聖燊 | 201306114402 | http://home.cnblogs.com/u/sihouzi/ |
駕駛員 刁怿 | 201306114456 | http://home.cnblogs.com/u/diaoyi/ |
大概分工方向
我負責調試跟提供材料大腦 部分功能如階乘是我完成的
刁怿負責打大部分代碼 以及部分功能如判斷
然後我們一緻研究成果
仍有不足 望助教指出 謝謝!
