c语言大作业登录看菜单栏,C语言大作业,做一个简单的问题回答小系统。要求程序运行时,显示出系统菜单项:...

#includeint questionNumber; //题库中题目的数量

int score = 0; //答对的题数

//显示菜单

void showMenu() {

printf("1.回答问题\n");

printf("2.查看分数\n");

printf("3.添加新问题和答案\n");

printf("4.查看问题库里的题目和答案\n");

printf("5.退出系统\n");

printf("请选择:");

}

//读取问题, isAnswer = 1 表示在回答问题, isAnswer = 0 表示在显示题库

void question(int isAnswer) {

//打开题库

FILE * f = fopen("question.data", "r");

if(f == 0) {

printf("\n\n问题不存在,请先添加问题!");

return;

}

long length;

//读取文件长度

fseek(f, 0, 2);

length = ftell(f);

rewind(f);

char line[1000], tag;

line[0] = 0;

questionNumber = 0;

while(ftell(f) < length) {

//显示问题

fgets(line, 1000, f);

printf("\n\n问题 %d :%s\n", ++questionNumber, line);

//显示四个选项

for(tag = 'A'; tag <= 'D'; tag++) {

fgets(line, 1000, f);

printf("%c :%s\n", tag, line);

}

//取得答案

fscanf(f, "%c\n", &tag);

if(isAnswer) { //如果在回答问题,就要求输入答案

for( ; ; ) {

printf("请选择答案(A,B,C,D):");

switch(getche()) {

case 'A' :

case 'a' : if(tag == 'A') score++; break;

case 'B' :

case 'b' : if(tag == 'B') score++; break;

case 'C' :

case 'c' : if(tag == 'C') score++; break;

case 'D' :

case 'd' : if(tag == 'D') score++; break;

default : printf("\n"); continue;

}

break;

}

} else { //如果在显示题库,就直接显示答案

printf("答案:%c", tag);

}

}

fclose(f);

}

//添加题目

void addQuestion() {

//打开题库

FILE * f = fopen("question.data", "a");

char line[1000], tag;

//输入问题

line[0] = 0;

while(line[0] == 0) {

printf("请输入问题:");

gets(line);

}

fprintf(f, "%s\n", line);

//输入四个选项

for(tag = 'A'; tag <= 'D'; tag++) {

line[0] = 0;

while(line[0] == 0) {

printf("请输入选项 %c :", tag);

gets(line);

}

fprintf(f, "%s\n", line);

}

//输入答案

for( ; ; ) {

printf("请输入答案(A,B,C,D):");

switch(tag = getche()) {

case 'A' :

case 'B' :

case 'C' :

case 'D' :

case 'a' :

case 'b' :

case 'c' :

case 'd' : fprintf(f, "%c\n", tag >= 97 ? tag - 32 : tag); break;

default : printf("\n"); continue;

}

break;

}

fclose(f);

}

int main(int argc, char * argv[]) {

showMenu();

for( ; ; ) { //循环操作直到用户退出系统

switch(getche()) {

case '1' : score = 0; question(1); break;

case '2' : printf("\n\n你的分数为:%d分", score == 0 ? 0 : score * 100 / questionNumber); break;

case '3' : printf("\n\n"); addQuestion(); break;

case '4' : question(0); break;

case '5' : exit(0); break;

default : printf("\n\n输入错误,请重新输入:"); continue;

}

printf("\n\n");

showMenu();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值