3编写一个程序,实现一个小学生算术运算(可以选择只有+、-还是包括*、/,100以内的口算,菜单选项课自行定义)的测试系统,一套题有十道,每道题显示序号如:3、47+25=?你的答案是:,每答对一道题给10分,测试结束给出得分和评价(100分显示太棒了,90分以上显示还不错……,可自行定义)。
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void test()
{
system("cls");
int i = 0, sum = 0;
srand(time(0)); //调用随机种子函数,避免每次运行测试题都一样
while (i ++ < 10)
{
printf("\n\n\n");
int fs = 10;
if (rand() % 2 == 1) // 加减法
{
int a = rand() % 100, b = rand() % 100;
if (a < b)
{
int t = a;
a = b;
b = t;
}
if (rand() % 2 == 1) // 加法
{
printf("\t(题 %d)请问 : %d + %d = ? ", i, a, b);
int n;
here:
scanf("%d", &n);
putchar('\n');
if (n == a + b)
{
sum += fs;
printf("\t回答正确!~^_^~!");
}
else
{
if (fs == 5)
{
printf("\t真可惜,三次机会都用完了`-_-`");
system("pause");
continue;
}
printf("\t回答错误!!,请重新出入正确答案: ");
fs -= fs == 10 ? 3 : 2;
goto here;
}
}
else // 减法
{
printf("\t(题 %d)请问 : %d - %d = ? ", i, a, b);
int n;
here1:
scanf("%d", &n);
putchar('\n');
if (n == a - b)
{
sum += fs;
printf("\t回答正确!~^_^~!");
}
else
{
if (fs == 5)
{
printf("\t真可惜,三次机会都用完了`-_-`");
system("pause");
continue;
}
printf("\t回答错误!!,请重新出入正确答案: ");
fs -= fs == 10 ? 3 : 2;
goto here1;
}
}
}
else // 乘除法
{
int a = rand() % 50, b = rand() % 10;
if (a < b)
{
int t = a;
a = b;
b = t;
}
if (rand() % 2 == 1) // 乘法
{
printf("\t(题 %d)请问 : %d * %d = ? ", i, a, b);
int n;
here2:
scanf("%d", &n);
putchar('\n');
if (n == a * b)
{
sum += fs;
printf("\t回答正确!~^_^~!");
}
else
{
if (fs == 5)
{
printf("\t真可惜,三次机会都用完了`-_-`");
system("pause");
continue;
}
printf("\t回答错误!!,请重新出入正确答案: ");
fs -= fs == 10 ? 3 : 2;
goto here2;
}
}
else // 除法
{
a = rand() % 10, b = rand() % 10; // 避免除法过大
if (a < b)
{
int t = a;
a = b;
b = t;
}
int s = a * b;
printf("\t(题 %d)请问 : %d / %d = ? ", i, s, a);
int n;
here4:
scanf("%d", &n);
putchar('\n');
if (n == b)
{
sum += fs;
printf("\t回答正确!~^_^~!");
}
else
{
if (fs == 5)
{
printf("\t真可惜,三次机会都用完了`-_-`");
system("pause");
continue;
}
printf("\t回答错误!!,请重新输入正确答案: ");
fs -= fs == 10 ? 3 : 2;
goto here4;
}
}
}
}
printf("\n\t\t\t测试结束!!!得分评价:");
switch (sum / 10)
{
case 10:
printf("\t太棒了 100分!\n");
break;
case 9:
printf("\t还不错 90分!\n");
break;
case 8:
printf("\tG O O D \n");
break;
case 7:
printf("\tO K \n");
break;
case 6:
printf("\tP A S S \n");
break;
default:
printf("\tT R Y A G A I N \n");
break;
}
system("pause");
}
void menu()
{
int sel;
system("cls");
printf("--------------------------------------------------\n");
printf("| 小学生四则运算测试练习 |\n");
printf("| 1. 开始测试 |\n");
printf("| 2. 退出程序 |\n");
printf("--------------------------------------------------\n");
printf("输入你的选择(1-2): ");
scanf("%d", &sel);
while (sel <= 0 || sel >= 2)
{
printf("输入错误!!!\n");
printf("重新输入你的选择(1-2):");
scanf("%d", &sel);
}
switch (sel)
{
case 1:
test();
menu();
break;
case 2:
exit(0);
break;
}
system("pause");
}
int main(void)
{
menu();
return 0;
}