C语言小学生测验

面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。
功能要求:
1、电脑随机出10道题,每题10分,程序结束时显示学生得分;
2、确保算式没有超出1-2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;
3、每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;
4、对于每道题,学生第一次输入正确答案得10 分,第二次输入正确答案得7 分,第三次输入正确答案得5 分,否则不得分;
5、总成绩90 以上显示“SMART” ,80-90 显示“GOOD”,70-80 显示“OK”,60-70 显示“PASS”,60 以下“TRY AGAIN”

#include<stdio.h>
#include<stdlib.h>///包含rand()
#include <time.h>///srand()


void main() {
	int left, right,mid,result=0,answer;///left加减法左边数字 right加减法右边数字 result真实结果 answer用户输入的结果
	int temp = 1,chance=1,grade=0;///temp算术式编号 chance用户回答次数 grade用户成绩


	for (int i = 0; i < 10; i++) {

		while (1){
			srand(time(NULL));///获取随机数的种子
			left = rand() % 51;///获取随机数
			right = rand() % 51;
			mid = rand() % 51;///获取一个数用来决定加法还是减法
			if (mid % 2 == 0) result = left + right;///如果mid是偶数则加法
			if (mid % 2 != 0 && left != 0) result = left - right;
			if (result >= 0 && result <= 50) { break; }///真实结果符合要求则进行输出
		}

			if (mid % 2 == 0) {
				printf("(%d) %d+%d=", temp, left, right);
				scanf("%d", &answer);
				if (answer == result) {
					printf("回答正确\n");
					temp++;
					grade += 10; ///第一次回答正确 成绩加十分
				}
				if (answer != result) {
					printf("回答错误,请重新输入\n");
					printf("(%d) %d+%d=", temp, left, right);
					scanf("%d", &answer);
					if (answer == result) {
						printf("回答正确\n");
						temp++;
						grade += 7; ///第二次回答正确 成绩加七分
					}
					else {
						printf("回答错误,请重新输入\n");
						printf("(%d) %d+%d=", temp, left, right);
						scanf("%d", &answer);
						if (answer == result) {
							printf("回答正确\n");
							temp++;
							grade += 5; ///第三次加五分
						}
						else {
							printf("回答错误,正确答案:%d\n", result);///三次机会用完  输出正确答案 
							temp++; 
						}
					}
				}
			}
			else {///减法同加法
				printf("(%d) %d-%d=", temp, left, right);
				scanf("%d", &answer);
				if (answer == result) {
					printf("回答正确\n");
					temp++;
					grade += 10; 
				}
				if (answer != result) {
					printf("回答错误,请重新输入\n");
					printf("(%d) %d-%d=", temp, left, right);
					scanf("%d", &answer);
					if (answer == result) {
						printf("回答正确\n");
						temp++;
						grade += 7; 
					}
					else {
						printf("回答错误,请重新输入\n");
						printf("(%d) %d-%d=", temp, left, right);
						scanf("%d", &answer);
						if (answer == result) {
							printf("回答正确\n");
							temp++;
							grade += 5; 
						}
						else {
							printf("回答错误,正确答案:%d\n", result); 
							temp++; 
						}
					}
				}
			}
		
	}


	///进行成绩判断并输出
	if (grade >= 90) printf("SMART\n");
	else if (grade >= 80 && grade < 90) printf("GOOD\n");
	else if (grade >= 70 && grade < 80)printf("OK\n");
	else if (grade >= 60 && grade < 70)printf("PASS\n");
	else printf("TRY-AGAIN\n");
}

欢迎关注

掘金:https://juejin.cn/user/4156573190724030
Github:https://github.com/zhubingran
CSDN:https://blog.csdn.net/qq_43118757
QQ:1330022055

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值