C语言小程序
帮朋友写题的时候,遇到个这个还算比较使用的东西,我用来给我弟弟做算术训练了哈哈哈。
小学生算法程序
内容:
面向小学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<b){
int dex = 0;
dex = a;
a = b;
b = dex;
sum = a - b;
}else{
sum = a - b;
}
break;//减号
default: printf("error");
}
printf("%d%c%d\n",a,c,b);
return sum;
}
主函数如下
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
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("你的分数是:%d\n",score);
}
printf("最终的分数是:%d\n",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的方法,欢迎来一起留言讨论