第1个回答 推荐于2017-12-11
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int* readFile(int a[],const char* ID){
char path[]="score.txt";
int j=0;
bool flag=false;
FILE* f=fopen(path,"rt");
if(f==NULL){
printf("读取文件错误\n");
exit(0);
}
char line[100];
while(!feof(f)){
fgets(line,sizeof(line)-1,f);
if(strstr(line,ID)){
char *r=line+strlen(ID)+1;
int score=atoi(r);
a[j++]=score;
flag=true;
}
}
fclose(f);
if(flag)
return a;
else{
printf("没有找到该用户或读取文件出错");
exit(0);
}
}
int test(){
char fuhao[]="+*-/";
int a,b,c;
srand(time(NULL));
int i=rand()%4;
a=rand()%100;
if(i==3){
b=rand()%10+1;
c=a*b;
printf("%d/%d=",c,a);
return b;
}else if(i==2){
b=rand()%100;
int max=a>b?a:b;
int min=a>b?b:a;
printf("%d-%d=",max,min);
return max-min;
}else{
b=rand()%100;
printf("%d%c%d=",a,fuhao[i],b);
if(fuhao[i]=='+')
return a+b;
else
return a*b;
}
}
void writeFile(const char *id,int score){
FILE* f=fopen("score.txt","a+");
if(f==NULL){
printf("文件打开失败\n");
exit(0);
}
char line[100];
memset(line,0,100);
sprintf(line,"%s %d\r\n",id,score);
fwrite(line,1,strlen(line),f);
fclose(f);
}
int main()
{
char ID[10];
int select,scores[100];
printf("Please input your four digit ID no: ");
scanf("%s",&ID);
memset(scores,-1,100);
readFile(scores,ID);
while(1){
printf("(1) Start a test\n(2) Check score\n(3) Exit\n请输入:");
scanf("%d",&select);
if(select==1){
int count=0;
for(int i=0;i<10;i++){
int right=test();
int ui;
scanf("%d",&ui);
printf("%d | %d | %d \n",i+1,right,ui);
if(right==ui){
count++;
}
}
printf("\n\n答对%d,得分%d\n\n",count,count*10);
writeFile(ID,count*10);
}else if(select==2){
int i=-1;
while(scores[++i]!=-1){
printf("%d ",scores[i]);
}
printf("\n");
}else{
break;
exit(0);
}
}
}本回答被网友采纳