这是蒟蒻写的第一个博客,将就看看吧!
首先,我写的是一个填空题答题系统,填空题数目为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).假如你觉得在每一个题目都要加上同样的东西,你可以使用函数
这个系统就写到这了,希望大家可以喜欢