程序代码:int main()
{
char ch = '+';
switch (ch)
{
case '+':
printf("+\n");
break;
case '-':
printf("-\n");
break;
}
return 0;
}
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <windows.h>
// #define NUM 20 //预先设置题目总数
int main()
{
int i=0;
int j; //控制出题的次数
int result=0; //计算题结果
int result1; //输入人计算的结果
int score; //最终得分
int a,b; //要随机运算的两个数值
int mode; //随机运算符
int t; //用来交换a与b的大小位置
int ag; //用来控制再次测验
int n; //显示倒计时
int score1; //单题整分数
int num=0; //题目总数
int right1=0; //记录对题数量,判断最终得分等级
int deficult=0;
// score1=100/NUM;
again:system("cls"); //again 用来输入总数出错时候再次输入,与goto一起用
fflush(stdin); //清空缓存区数据
printf("请输入测验题目的难度:\n\n"); //家长自主选择测试数量
printf("难度1:请输入10:测验10以内两数的加减法!\n\n");
printf("难度2:请输入20:测验20以内两数的加减法!\n\n");
printf("否则难度选择错误,请重新输入难度选择:10 或者 20.\n\n");
scanf("%d",&deficult);
printf("\n");
if(deficult!=10&&deficult!=20)
goto again;
if(deficult==10)
{
system("cls");
printf("已选择难度1,将进行10以内两数加减法测验。\n\n");
}
if(deficult==20)
{
system("cls");
printf("已选择难度2,将进行20以内两数加减法测验。\n\n");
}
printf("请输入需要测验题目的总数:\n\n"); //家长自主选择测试数量
printf("请输入1-100之间的整数,否则出错,需重新输入!\n\n");
scanf("%d",&num);
printf("\n");
if(num>0&&num<=100)
{
while(num>0&&num<=100)
{
score1=100/num; //计算单题分数
{
score=0; //再次测验初始得分归零
right1=0; //再次测验初始对题数量归零
system("cls"); //清屏
for(n=5;n>=0;n--) //打印5秒倒计时
{
system("cls"); //清屏
if(100%num!=0)
{
printf("单题分数有小数,故单题分数取整数分计算.\n\n");
}
// printf("每轮测试共%d题,每题%d分,总分100分,加油吧,孩子们!\n\n",NUM,score1);
printf("每轮测试共%d题,每题%d分,总分100分,加油吧,孩子们!\n\n",num,score1);
printf("小朋友准备好了吗?5秒之后进入答题时间!加油!\n\n");
printf("\t%d",n);
_sleep(1000); //暂停1秒
}
system("cls"); //清屏
printf("答题开始,请作答:\n\n");
// for(j=1;j<=NUM;j++) //做20题
for(j=1;j<=num;j++) //做家长输入题目总数的题
{
// system("cls"); //清屏
srand((unsigned)time(NULL));//用当前时间,设置种子
if(deficult==10)
{
a = rand() % 10+1; //生成一个0~20之间的随机数
b = rand() % 10+1; //生成一个0~20之间的随机数
}
if(deficult==20)
{
a = 2*(rand() % 10+1); //生成一个0~20之间的随机数
b = 2*(rand() % 10+1); //生成一个0~20之间的随机数
}
// mode = rand() % 4; //生成一个0~3之间的随机数,代表运算符,可四则运算
mode = rand() % 2; //生成一个0~1之间的随机数,代表运算符,只能加减运算
printf("第%d题:",j);
if(a>=b&&mode!=3)
{
printf("%d ", a); //打印算式
switch(mode) //确定运算符
{
case 0:
printf("+ ");
result= a + b; //选择了+运算的正确答案
break;
case 1:
printf("- ");
result= a - b; //选择了-运算的正确答案
break;
case 2:
printf("* ");
result= a * b; //选择了*运算的正确答案
break;
case 3:
printf("÷ ");
result= a / b; //选择了/运算的正确答案
break;
}
printf("%d = ?\t请认真计算后输入答案,Enter确认\n\n", b);
}
if(a>=b&&mode==3&&a%b==0) //补充过滤小数运算后剩下的整数除法
{
printf("%d ", a); //打印算式
switch(mode) //确定运算符
{
case 0:
printf("+ ");
result= a + b; //选择了+运算的正确答案
break;
case 1:
printf("- ");
result= a - b; //选择了-运算的正确答案
break;
case 2:
printf("* ");
result= a * b; //选择了*运算的正确答案
break;
case 3:
printf("÷ ");
result= a / b; //选择了/运算的正确答案
break;
}
printf("%d = ?\t请认真计算后输入答案,Enter确认\n\n", b);
}
if(mode==3&&a%b!=0) //过滤小数运算
{
// printf("%d\n",a);
// printf("%d\n",b); //查看出现小数运算时候的a、b值
a=b;
printf("%d ", a); //打印算式
switch(mode) //确定运算符
{
case 0:
printf("+ ");
result= a + b; //选择了+运算的正确答案
break;
case 1:
printf("- ");
result= a - b; //选择了-运算的正确答案
break;
case 2:
printf("* ");
result= a * b; //选择了*运算的正确答案
break;
case 3:
printf("÷ ");
result= a / b; //选择了/运算的正确答案
break;
}
printf("%d = ?\t请认真计算后输入答案,Enter确认\n\n", b);
}
if(a<b&&mode==1) //过滤出现负数运算
{
// printf("%d\n",a);
// printf("%d\n",b); //查看此a<b然后交换运算是否有效执行
t=a;
a=b;
b=t;
printf("%d ", a); //打印算式
switch(mode) //确定运算符
{
case 0:
printf("+ ");
result= a + b; //选择了+运算的正确答案
break;
case 1:
printf("- ");
result= a - b; //选择了-运算的正确答案
break;
case 2:
printf("* ");
result= a * b; //选择了*运算的正确答案
break;
case 3:
printf("÷ ");
result= a / b; //选择了/运算的正确答案
break;
}
printf("%d = ?\t请认真计算后输入答案,Enter确认\n\n", b);
}
if(a<b&&mode!=1) //允许小数加、乘、除以大数
{
printf("%d ", a); //打印算式
switch(mode) //确定运算符
{
case 0:
printf("+ ");
result= a + b; //选择了+运算的正确答案
break;
case 1:
printf("- ");
result= a - b; //选择了-运算的正确答案
break;
case 2:
printf("* ");
result= a * b; //选择了*运算的正确答案
break;
case 3:
printf("÷ ");
result= a / b; //选择了/运算的正确答案
break;
}
printf("%d = ?\t请认真计算后输入答案,Enter确认\n\n", b);
}
// if(mode==3&&b!=0&&a!=b)
// printf("注意:本题涉及小数运算,暂请输入商的整数部分即可,不用四舍五入\n\n");
if(mode==3&&b==0)
{
printf("注意:除数生成0,出错,Enter自动重新出题!");
break;
}
printf("答:");
scanf("%d", &result1); //输入答案
fflush(stdin); //清空缓存区数据
printf("\n");
if(result==result1) //与正确答案一致
{
score+= score1; //加分
printf("Right √\n\n");
// if(j<NUM)
if(j<num)
{
right1++;
printf("回答正确,加%d分,此时得分:%d 分,请继续解答下一题:\n\n",score1,score);
}
// if(j==NUM)
if(j==num)
{
right1++;
if(right1==num)
printf("回答正确,加%d分,测验完毕最后得分:100 分!\n\n",score1);
else
printf("回答正确,加%d分,测验完毕最后得分:%d 分!\n\n",score1,score);
}
}
else
{
printf("Wrong X \n\n");
// if(j<NUM)
if(j<num)
printf("回答错误,正确答案为: %d 此时得分:%d 分,加油别灰心,继续回答下一题吧!\n\n",result,score);
// if(j==NUM)
if(j==num)
printf("回答错误,正确答案为: %d 测验完毕最后得分:%d 分!\n\n",result,score);
}
} // for循环的
printf("本次测验一共%d题,答对%d题。",num,right1);
if(score<=70)
printf("-_-|| 本次得分C等,奖励 ★ \n\n小朋友要更加努力学习哦\n\n");
if(score>=80&&score<90)
printf("^_^ 本次得分B等,奖励 ★★ \n\n小朋友要继续加油哦\n\n");
if(score>=90)
printf("本次得分A等,奖励 ★★★ \n\n小朋友要继续保持良好的学习习惯哦\n\n");
printf("请输入1后Enter再次运算,或非1任意键按Enter退出\n\n");
scanf("%d",&ag);
fflush(stdin); //清空缓存区数据
if(ag==1) goto again;
else break;
}
}
} //第一个if的大括号
else
goto again;
return 0;
}
[此贴子已经被作者于2016-6-21 16:11编辑过]