帮朋友写题的时候,遇到个这个还算比较使用的东西,我用来给我弟弟做算术训练了哈哈哈。
小学生算法程序
内容:
面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。功能要求:
(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;
(2)确保算式没有超出12年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出050的范围,负数更是不允许的;
(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;
(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;
(5)总成绩90以上显示SMART”80-90显示“GOOD”,70-80显示OK60-70显示“PASS”,60以下“TRYAGAIN
输入部分代码如下:
int shuru(){//输入方法
int s ;
printf("你的答案是n");
scanf("%d",&s);
return s;
}
生成随机数和计算方法:
限制和为50那里处理的还是不好,本来想用循环进行数次赋值达到目的,但是始终没有显示,最后就不想做了,简单粗暴的直接除2,也满足随机数,倒是没有偏题,就是没有做到完美,,,以后有机会在完善了。
int suanfa(){//随机加减法
int i=0;
int sum = 0;
int a = 0;
int b = 0;
char c;
srand((int)time(NULL));
i = rand()%2;
a = rand()%51;
b = rand()%51;
switch(i){
case 0:
c = '+';
sum = a + b;
if(sum>50){
a = a/2;
b= b/2;
sum = a+b;
break;
}else{
break;//加号
}
case 1:
c = '-';
if(a
int dex = 0;
dex = a;
a = b;
b = dex;
sum = a - b;
}else{
sum = a - b;
}
break;//减号
default: printf("error");
}
printf("%d%c%dn",a,c,b);
return sum;
}
主函数如下
#include#include #include int main() { int answer = 0; int s = 0; int s1 = 0; //int s2 = 0; int youranswer = 0; int score = 0; int j1 = 0; for(int i = 0;i<10;i++){ printf("第%d题n",i+1); answer = suanfa(); youranswer = shuru(); if(youranswer==answer){ printf("恭喜,答对了!你真聪明!n"); score = score +10; }else{//用于增加两次答错机会 for(int j = 0;j<2;j++){ printf("抱歉,回答错误!n"); printf("再试一次!n"); s1 = shuru(); if(s1==answer){ printf("恭喜,答对了!你真聪明!n"); j1 =j1+1;//作为辨别量,用于识别第一次答错后应该加的分数 break; } printf("又错啦,再接再厉哦!n"); }if(j1>0){//判断第一次答错后应该加的分数 if(j1==1){ score = score + 7; }else{ score = score +5; } } } printf("你的分数是:%dn",score); } printf("最终的分数是:%dn",score); //判断输出内容 if(score>=90){ printf("SMART"); }else{ if(score>=80&&score<90){ printf("GOOD"); }else{ if(score>=70&&score<80){ printf("OK"); }else{ if(score>=60&&score<70){ printf("PASS"); }else{ printf("TRY AGAIN");} } } } }
程序不难,大家要是有比较好的控制50的方法,欢迎来一起留言讨论



