【无标题】C语言编写一个简单答题系统

这是蒟蒻写的第一个博客,将就看看吧!

首先,我写的是一个填空题答题系统,填空题数目为20。

其次,需要随机出题,题目出现顺序要不一致

     (1) 产生随机数 1~20

     (2)  解决运气不好的问题1-18 极少出现19 20

然后,及时反馈正确情况,记录同学的准确率

最后,自定义特性

        (1) 大小写答案不区分
        (2) 答错之后,要告诉我正确答案是什么
        (3) 自己再增加一些人性化的功能
        (比如:一开始什么都不输入,就只输出回车或者空格,就判断为错误不太好
        思考:_5 5 5_是否算同一个答案? _A A A_是否算同一个答案?)

我拿到这个题的时候也很懵,所以我们先理理思路吧!!!

1.随机数怎么处理???

        在C语言中比较常用的是rand函数,它可以随机处理产生0~rand_max的随机数。

rand函数包含在头文件stdlib.h中,记得在开头加上#include<stdlib.h>

#include<stdio.h>
#include<stdlib.h>
int main(){
    int a = rand();
    printf("%d",a);
    return 0;
}

所以在这个题目中我们也可以用rand函数

#include<stdio.h>
#include<stdlib.h>
int main(){
    int a[20]={0};//本菜鸟喜欢开始就赋初值为0,毕竟怕忘记
    for(int i = 1;i <= 20;i ++){
        a[i]=1+rand()%20;//因为rand是从0开始的,是从0~19,但是题号是从1开始,所以+1
        for(int m = 1;m<i;m++){
            if(a[m]==a[i]){
                i--;//假如有重复的就退回去重新随机出数字
              }
        }
    }
}
    

2.那我们怎么把数字和题目对应嘞

        这就很容易了,用if函数就行

3.大小写不区分怎么弄嘞?

                这个有2种方法。我们可以用strlen知道str字符串的长度。记得加上头文件string.h

int len = strlen(str);

法一:

我们可以直接用 函数tolower(将ch字符转换为小写字母),记得加上头文件ctype.h

也可以用 函数toupper(将ch字符转换为大写字母),也要加上头文件ctype.h

法二:

for(int i = 0;i < len;i ++){
    if(a[i]>='A'&&a[i]<='Z'){
        a[i]=a[i]+32;
    }
}

假如是大写字母,就把它的ASC码加上32,成为小写字母。

4.只输入回车或空格,不能判断错误

char c;
int flag = 0;
while(1){
			scanf("%c",&c);
			if(c=='\n'&&flag==1){
				break;
			}
			if(c18!=' '&&c18!='\n'){
				str[i]=c;
				i++;
				flag=1;
			}
		}

flag是来判断是否输入字符,假如输入了字符,flag=1,假如没有输入,flag=0;

5.怎么计算准确率

可以定义一个全局变量double sum=0,假如正确sum++,当然也要定义一个全局变量double count=0,记录随机出了多少题。用sum/count就得出准确率。

6.其他

(1)颜色

        比如

#include<stdio.h>
#include<stdlib.h>
int main(){
    system("color f5);
    printf("hello");
    return 0;
}

运行这个代码你会发现,背景色是白色,文字颜色变成紫色。

那么设计背景色和文字颜色的方法是,在color后面加上两个数字,第一个代表背景色,第二个代表文字颜色。

(2).时间

我们可以用暂停命令Sleep来控制时间,比如Sleep(1000)就是暂停1秒。

假如你觉得有以前数字不好看,可以用清屏幕命令system("cls")

(3).假如你觉得在每一个题目都要加上同样的东西,你可以使用函数

这个系统就写到这了,希望大家可以喜欢

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值