程序代码:
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编辑过]