#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include <string.h>
/*參賽者姓名和參賽號碼*/
struct competitor{
char Name[20];
int Num;
}com[3];
/*用來配置機會次數,題量大小*/
struct config{
int chance;//用來存盤每道題目機會次數
int topicNum;//用來存盤題目數量
}con;
/*結構體award用于保存獎勵語*/
struct award{
char good[30];
char well[20];
char cheers[20];
}award1;
int menu(struct competitor com[],int n);
void chuangguan_mode();
void easy_mode(struct config con);
void difficulty_mode(struct config con);
int practice_mode(struct config con);
void see();
void see1();
void see2();
void score();
int main()
{
struct competitor com[3]={{"Li",1001},{"Wang",1002},{"Zhang",1003}};
struct config con={2,5};
struct award award1={"非常棒!","不錯!加油","干得漂亮!"};
}
int menu(struct competitor com[],int n)
{
int i,j,x;
printf("\t\t\t\t模擬中學生計算大賽小游戲\n");
printf("\t\t*******************************\n");
printf("請輸入你的姓名:\n");
for(i=0;i<3;i++)
{
scanf("%s",com[i].Name);
}
printf("請輸入你的參賽號:\n");
for(j=0;j<3;j++)
{
scanf("%s",&com[i].Num);
}
printf("\t\t*******************************\n");
printf("\t\t\t\t[1]闖關模式\n");
printf("\t\t\t\t[2]練習模式\n");
printf("\t\t\t\t[3]查看錯題\n");
printf("\t\t\t\t[4]查看歷史分數\n");
printf("\t\t\t\t[5]退出游戲\n");
printf("\t\t\t*****************************");
printf("請選擇想要進行的操作:");
scanf("%d",&x);
switch(x)
{
case 1:chuangguan_mode();break;
case 2:practice_mode(con);break;
case 3:see();break;
case 4:score();break;
case 5:printf("期待您取得好的成績,再見!");break;
default:printf("input error!");
}
}
void chuangguan_mode()
{
void easy_mode(struct config con);
void difficulty_mode(struct config con);
int i;
printf("[1]簡易模式");
printf("[2]困難模式");
printf("請再次輸入你的選擇:");
scanf("%d",&i);
switch(i)
{
case 1:easy_mode(con);break;
case 2:difficulty_mode(con);break;
default:printf("input error!");
}
}
void easy_mode(struct config con)
{
printf("歡迎來到簡易模式!");
srand((unsigned)time(0));
int a,b,c,d,i,j,p,z;
float x;
for(i=0;i<(con.topicNum);i++)
{
a=rand()%11;
b=rand()%101;
c=rand()%101;
d=rand()%101;
z=a*b+c-d;
printf("請看題:%d*%d+%d-%d=\n",a,b,c,d);
printf("請輸入答案:");
scanf("%f",&x);
if(x==z)
{
printf("\t\t\t恭喜你做對了,請看下一題\n");
int y=rand()%4;
switch(y)
{
case 1:printf("\t\t\t\t%s\n",award1.good);break;
case 2:printf("\t\t\t\t%s\n",award1.well);break;
case 3:printf("\t\t\t\t%s\n",award1.cheers);break;
}
}
}
for (j=0;j<(con.chance-1);j++)
{
printf("\t\t\t\t請再次輸入: ");
scanf("%d",&x);
if (x==z)
{
printf("\t\t\t恭喜你做對了,正在加載下一題\n");
int y=rand()%4;
switch(y)
{
case 1:printf("\t\t\t\t%s\n",award1.good);break;
case 2:printf("\t\t\t\t%s\n",award1.well);break;
case 3:printf("\t\t\t\t%s\n",award1.cheers);break;
}
}
else
{
FILE *fp;
if((fp=fopen("錯題集(闖關模式).txt","a+"))==NULL)
{
printf("can't open this file!\n");
exit(1);
}
fprintf(fp,"%d=%d*%d+%d-%d\n",z,a,b,c,d);
fclose(fp);
printf("正確答案為:%d,這道題被存放在“錯題集(闖關模式)中",z);
}
}
}
void difficulty_mode(struct config con)
{
printf("歡迎來到困難模式!");
srand((unsigned)time(0));
int a,b,c,d,e,i,j,z;
float x;
for(i=0;i<(con.topicNum);i++)
{
a=rand()%11;
b=rand()%101;
c=rand()%101;
d=rand()%101;
z=a*b+c-d*2-e;
printf("請看題:%d*%d+%d-%d*2-%d=\n",a,b,c,d,e);
printf("請輸入答案:");
scanf("%f",&x);
if(x==z)
{
printf("\t\t\t恭喜你做對了,請看下一題\n");
int y=rand()%4;
switch(y)
{
case 1:printf("\t\t\t\t%s\n",award1.good);break;
case 2:printf("\t\t\t\t%s\n",award1.well);break;
case 3:printf("\t\t\t\t%s\n",award1.cheers);break;
}
}
}
for (j=0;j<(con.chance-1);j++)
{
printf("\t\t\t\t請再次輸入: ");
scanf("%d",&x);
if (x==z)
{
printf("\t\t\t恭喜你做對了,正在加載下一題\n");
int y=rand()%4;
switch(y)
{
case 1:printf("\t\t\t\t%s\n",award1.good);break;
case 2:printf("\t\t\t\t%s\n",award1.well);break;
case 3:printf("\t\t\t\t%s\n",award1.cheers);break;
}
}
else
{
printf("正確答案為:%d,這道題被存放在“錯題集(闖關模式)中",z);
FILE *fp;
if((fp=fopen("錯題集(闖關模式).txt","a+"))==NULL)
{
printf("can't open this file!\n");
exit(2);
}
fprintf(fp,"%f=%d*%d+%d*2-%d\n", z,a,b,c,d,e);
fclose(fp);
}
}
}
int practice_mode(struct config con)
{
printf("歡迎來到練習模式");
srand((unsigned)time(0));
int a,b,c,d,e,i,j;
float x,z;
for(i=0;i<con.topicNum;i++)
{
a=rand()%11;
b=rand()%101;
c=rand()%101;
d=rand()%101;
e=rand()%10;
z=a*b+c-d/e;
printf("請看題:%d*%d+%d-%d/%d=\n",a,b,c,d,e);
printf("請輸入答案:");
scanf("%f",&x);
if(x==z)
{
printf("\t\t\t恭喜你做對了,正在加載下一題\n");
int y=rand()%4;
switch(y)
{
case 1:printf("\t\t\t\t%s\n",award1.good);break;
case 2:printf("\t\t\t\t%s\n",award1.well);break;
case 3:printf("\t\t\t\t%s\n",award1.cheers);break;
}
}
}
for (j=0;j<con.chance-1;j++)
{
printf("\t\t\t\t請輸入 ");
scanf("%d",&x);
if (x==z)
{
printf("\t\t\t恭喜你做對了,正在加載下一題\n");
int y=rand()%4;
switch(y)
{
case 1:printf("\t\t\t\t%s\n",award1.good);break;
case 2:printf("\t\t\t\t%s\n",award1.well);break;
case 3:printf("\t\t\t\t%s\n",award1.cheers);break;
}
}
else
{
FILE *fp;
if((fp=fopen("錯題集(訓練模式).txt","a+"))==NULL)
{
printf("can't open this file!\n");
exit(3);
}
fprintf(fp,"%d=%d*%d+%d-%d/%d",a,b,c,d,e);
fclose(fp);
printf("正確答案為:%d,這道題被存放在“錯題集(練習模式)中",z);
}
}
}
void see()
{
void see1();
void see2();
int i;
printf("請選擇錯題集:");
printf("[1]闖關模式");
printf("[2]練習模式");
switch(i)
{
case 1:see1();break;
case 2:see2();break;
default:printf("input error!");
}
}
void see1()
{
FILE *fp;
if((fp=fopen("錯題集(闖關模式).txt","r+"))==NULL)
{
printf("can't open this file!\n");
exit(4);
}
fclose(fp);
}
void see2()
{
FILE *fp;
if((fp=fopen("錯題集(訓練模式).txt","r+"))==NULL)
{
printf("can't open this file!\n");
exit(5);
}
fclose(fp);
}
void score()
{
FILE *fp;
if((fp=fopen("歷史成績.txt","r+"))==NULL)
{
printf("can't open this file!\n");
exit(6);
}
fclose(fp);
}
uj5u.com熱心網友回復:
這是一個模擬中學生算數比賽的小游戲uj5u.com熱心網友回復:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include <string.h>
/*參賽者姓名和參賽號碼*/
struct competitor{
char Name[20];
int Num;
}com[3];
/*用來配置機會次數,題量大小*/
struct config{
int chance;//用來存盤每道題目機會次數
int topicNum;//用來存盤題目數量
}con;
/*結構體award用于保存獎勵語*/
struct award{
char good[30];
char well[20];
char cheers[20];
}award1;
int menu(struct competitor com[],int n);
void chuangguan_mode();
void easy_mode(struct config con);
void difficulty_mode(struct config con);
int practice_mode(struct config con);
void see();
void see1();
void see2();
void score();
int main()
{
struct competitor com[3]={{"Li",1001},{"Wang",1002},{"Zhang",1003}};
struct config con={2,5};
struct award award1={"非常棒!","不錯!加油","干得漂亮!"};
}
int menu(struct competitor com[],int n)
{
int i,j,x;
printf("\t\t\t\t模擬中學生計算大賽小游戲\n");
printf("\t\t*******************************\n");
/*
printf("請輸入你的姓名:\n");
for(i=0;i<3;i++)
{
scanf("%s",com[i].Name);
}
printf("請輸入你的參賽號:\n");
for(j=0;j<3;j++)
{
//scanf("%s",&com[i].Num);
scanf("%d", &com[i].Num);
}
*/
for(i=0;i<3;i++) {
printf("請輸入你的姓名:\n");
scanf("%s",com[i].Name);
printf("請輸入你的參賽號:\n");
scanf("%d", &com[i].Num); //不是%s
}
printf("\t\t*******************************\n");
printf("\t\t\t\t[1]闖關模式\n");
printf("\t\t\t\t[2]練習模式\n");
printf("\t\t\t\t[3]查看錯題\n");
printf("\t\t\t\t[4]查看歷史分數\n");
printf("\t\t\t\t[5]退出游戲\n");
printf("\t\t\t*****************************");
printf("請選擇想要進行的操作:");
scanf("%d",&x);
switch(x)
{
case 1:chuangguan_mode();break;
case 2:practice_mode(con);break;
case 3:see();break;
case 4:score();break;
case 5:printf("期待您取得好的成績,再見!");break;
default:printf("input error!");
}
return 0; //要么加上這句要么int改成void
}
void chuangguan_mode()
{
void easy_mode(struct config con);
void difficulty_mode(struct config con);
int i;
printf("[1]簡易模式");
printf("[2]困難模式");
printf("請再次輸入你的選擇:");
scanf("%d",&i);
switch(i)
{
case 1:easy_mode(con);break;
case 2:difficulty_mode(con);break;
default:printf("input error!");
}
}
void easy_mode(struct config con)
{
printf("歡迎來到簡易模式!");
srand((unsigned)time(0));
int a,b,c,d,i,j,p,z;
float x;
for(i=0;i<(con.topicNum);i++)
{
a=rand()%11;
b=rand()%101;
c=rand()%101;
d=rand()%101;
z=a*b+c-d;
printf("請看題:%d*%d+%d-%d=\n",a,b,c,d);
printf("請輸入答案:");
scanf("%f",&x);
if(x==z)
{
printf("\t\t\t恭喜你做對了,請看下一題\n");
int y=rand()%4;
switch(y)
{
case 1:printf("\t\t\t\t%s\n",award1.good);break;
case 2:printf("\t\t\t\t%s\n",award1.well);break;
case 3:printf("\t\t\t\t%s\n",award1.cheers);break;
}
}
}
for (j=0;j<(con.chance-1);j++)
{
printf("\t\t\t\t請再次輸入: ");
//scanf("%d",&x);
scanf("%f",&x); //上面定義的float,這兒為啥要用%d呢?
if (x==z)
{
printf("\t\t\t恭喜你做對了,正在加載下一題\n");
int y=rand()%4;
switch(y)
{
case 1:printf("\t\t\t\t%s\n",award1.good);break;
case 2:printf("\t\t\t\t%s\n",award1.well);break;
case 3:printf("\t\t\t\t%s\n",award1.cheers);break;
}
}
else
{
FILE *fp;
if((fp=fopen("錯題集(闖關模式).txt","a+"))==NULL)
{
printf("can't open this file!\n");
exit(1);
}
fprintf(fp,"%d=%d*%d+%d-%d\n",z,a,b,c,d);
fclose(fp);
printf("正確答案為:%d,這道題被存放在“錯題集(闖關模式)中",z);
}
}
}
void difficulty_mode(struct config con)
{
printf("歡迎來到困難模式!");
srand((unsigned)time(0));
int a,b,c,d,e,i,j,z;
float x;
for(i=0;i<(con.topicNum);i++)
{
a=rand()%11;
b=rand()%101;
c=rand()%101;
d=rand()%101;
z=a*b+c-d*2-e; //這兒的e沒有初始化哦
printf("請看題:%d*%d+%d-%d*2-%d=\n",a,b,c,d,e);
printf("請輸入答案:");
scanf("%f",&x);
if(x==z)
{
printf("\t\t\t恭喜你做對了,請看下一題\n");
int y=rand()%4;
switch(y)
{
case 1:printf("\t\t\t\t%s\n",award1.good);break;
case 2:printf("\t\t\t\t%s\n",award1.well);break;
case 3:printf("\t\t\t\t%s\n",award1.cheers);break;
}
}
}
for (j=0;j<(con.chance-1);j++)
{
printf("\t\t\t\t請再次輸入: ");
//scanf("%d",&x);
scanf("%f",&x); //相同的問題,同上
if (x==z)
{
printf("\t\t\t恭喜你做對了,正在加載下一題\n");
int y=rand()%4;
switch(y)
{
case 1:printf("\t\t\t\t%s\n",award1.good);break;
case 2:printf("\t\t\t\t%s\n",award1.well);break;
case 3:printf("\t\t\t\t%s\n",award1.cheers);break;
}
}
else
{
printf("正確答案為:%d,這道題被存放在“錯題集(闖關模式)中",z);
FILE *fp;
if((fp=fopen("錯題集(闖關模式).txt","a+"))==NULL)
{
printf("can't open this file!\n");
exit(2);
}
//fprintf(fp,"%f=%d*%d+%d*2-%d\n", z,a,b,c,d,e);
fprintf(fp,"%d=%d*%d+%d*2-%d\n", z,a,b,c,d); //5個%d為啥后面跟6個引數呢?
fclose(fp);
}
}
}
int practice_mode(struct config con)
{
printf("歡迎來到練習模式");
srand((unsigned)time(0));
int a,b,c,d,e,i,j;
float x,z;
for(i=0;i<con.topicNum;i++)
{
a=rand()%11;
b=rand()%101;
c=rand()%101;
d=rand()%101;
e=rand()%10;
z=a*b+c-d/e;
printf("請看題:%d*%d+%d-%d/%d=\n",a,b,c,d,e);
printf("請輸入答案:");
scanf("%f",&x);
if(x==z)
{
printf("\t\t\t恭喜你做對了,正在加載下一題\n");
int y=rand()%4;
switch(y)
{
case 1:printf("\t\t\t\t%s\n",award1.good);break;
case 2:printf("\t\t\t\t%s\n",award1.well);break;
case 3:printf("\t\t\t\t%s\n",award1.cheers);break;
}
}
}
for (j=0;j<con.chance-1;j++)
{
printf("\t\t\t\t請輸入 ");
//scanf("%d",&x);
scanf("%f",&x); //問題同上
if (x==z)
{
printf("\t\t\t恭喜你做對了,正在加載下一題\n");
int y=rand()%4;
switch(y)
{
case 1:printf("\t\t\t\t%s\n",award1.good);break;
case 2:printf("\t\t\t\t%s\n",award1.well);break;
case 3:printf("\t\t\t\t%s\n",award1.cheers);break;
}
}
else
{
FILE *fp;
if((fp=fopen("錯題集(訓練模式).txt","a+"))==NULL)
{
printf("can't open this file!\n");
exit(3);
}
fprintf(fp,"%d=%d*%d+%d-%d/%d",a,b,c,d,e);
fclose(fp);
//printf("正確答案為:%d,這道題被存放在“錯題集(練習模式)中",z);
printf("正確答案為:%f,這道題被存放在“錯題集(練習模式)中",z); //注意z定義的型別
}
}
}
void see()
{
void see1();
void see2();
int i;
printf("請選擇錯題集:");
printf("[1]闖關模式");
printf("[2]練習模式");
switch(i) //i有初始化嗎?
{
case 1:see1();break;
case 2:see2();break;
default:printf("input error!");
}
}
void see1()
{
FILE *fp;
if((fp=fopen("錯題集(闖關模式).txt","r+"))==NULL)
{
printf("can't open this file!\n");
exit(4);
}
fclose(fp);
}
void see2()
{
FILE *fp;
if((fp=fopen("錯題集(訓練模式).txt","r+"))==NULL)
{
printf("can't open this file!\n");
exit(5);
}
fclose(fp);
}
void score()
{
FILE *fp;
if((fp=fopen("歷史成績.txt","r+"))==NULL)
{
printf("can't open this file!\n");
exit(6);
}
fclose(fp);
}
供參考~
邏輯問題沒發現,倒是語法問題很多。樓主的main函式里有呼叫介面嗎?如果不加呼叫函式,程式是什么也不會執行的,你雖然定義了。
基本語法問題是基礎問題,所以建議樓主關注一下編譯警告
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/77468.html
標籤:C語言
下一篇:向大牛們請教下一個簡單的問題
