信念:会成功的!
目录
2.存完你想存的题目和答案 接下来可以对这个“测试”进行一些说明
前言
本人学习两个月c语言,自己捣鼓出来的一个答题系统
整个答题系统分为四部分,首先是需要“存”题目和答案,第二步是需要进行抽题目,第三步是需要作答,最后一步是输出结果。
一、运行效果
二、创作过程
1.先用字符数组存储一次性的题目与答案
代码如下(示例):
定义20道题目
char tm[200][101];
char daan[200];
int z=0,z1=0,z2=0;
strcpy(tm[z++] ,"表达式!10的结果是-10");
daan[z1++] = 'f';
strcpy(tm[z++] ,"若变量定义为double x;,则x%2是符合C语言语法的表达式。");
daan[z1++] = 'f';
strcpy(tm[z++] ,"'a’和“a”是完全等价的常量");
daan[z1++] = 'f';
strcpy(tm[z++] ,"c语言中运算符%的优先级高于&&。");
daan[z1++] = 't';
strcpy(tm[z++] ,"C语言中3/2的值是1");
daan[z1++] = 't';
strcpy(tm[z++] ,"函数pow(x,y)的作用是计算y的x次方");
daan[z1++] = 'f';
strcpy(tm[z++] ,"判断整型变量a是否是偶数的表达式为a%2=0。");
daan[z1++] = 'f';
strcpy(tm[z++] ,"表达式的值只能是1或者0。");
daan[z1++] = 'f';
strcpy(tm[z++] ,"假设有float f=7;则f%2的值为1");
daan[z1++] = 'f';
strcpy(tm[z++] ,"空语句不是一条合法的语句,因为它没有作用。");
daan[z1++] = 'f';
strcpy(tm[z++] ,"在逻辑运算符中,逻辑非的优先级别最高。");
daan[z1++] = 't';
strcpy(tm[z++] ,"表示变量x的值在1到9之间的逻辑表达式为1<=x<=9。");
daan[z1++] = 'f';
strcpy(tm[z++] ,"switch(x)中的x可以是整型、字符型或者浮点型变量");
daan[z1++] = 'f';
strcpy(tm[z++] ,"任何表达式语句都是表达式加分号组成的");
daan[z1++] = 't';
strcpy(tm[z++] ,"C语言中,当int型与double型数据进行算术运算时,数据类型由double型向int型转换。");
daan[z1++] = 'f';
strcpy(tm[z++] ,"C 语言中的变量名不区分大小写。");
daan[z1++] = 'f';
strcpy(tm[z++] ,"赋值号左边必须为变量");
daan[z1++] = 't';
strcpy(tm[z++] ,"C 语言是面向过程的程序设计语言。");
daan[z1++] = 't';
strcpy(tm[z++] ,"C语言中变量名r和R表示同一个变量。");
daan[z1++] = 'f';
strcpy(tm[z++],"c语言中运算符%的优先级高于&&。");
daan[z1++] = 't';
2.存完你想存的题目和答案 接下来可以对这个“测试”进行一些说明
printf("请输入你的名字拼音:");
char name[1001];
scanf("%s",name);
getchar();
printf("欢迎%s来到zyx的智能判断题小测验1.0版\n\n",name);
Sleep(1000); //这里我们采用延时,可以让说明更加人性化
printf("注意:答案只能是t\\T或f\\F\n\n");
Sleep(1000);
int i,j;
int dui = 1;
printf("下面将会进行二十道判断题\n\n");
Sleep(1000);
for( i = 5;i>0;i--){
printf("倒计时还有:%d s,准备好了吗!\n",i);
Sleep(1000);
}
printf("答题开始,么么哒\n\n");
3.生成随机数(代表抽取的题目)
接下来我们需要随机生成题目,我们则需要产生随机数,产生的随机数代表题目
srand(time(0));
int chouti=rand()%20; //声明chouti就是生成的随机数。
我们用一个数组和一个循环 判断是否生成了重复的随机数
int chuxian[20] = {0};
int zyx = 0;
for(j=0;j<20;j++){
if(chuxian[chouti]==1){
zyx = 1;
break;
}
}
chuxian[chouti] = 1;
if(zyx==1) continue;
一共有20道 要每次成功抽取了不重复的题目 才算成功抽题
4、输出答案并判断正误
char c1;
do{
scanf("%c",&c1);
}while(c1=='\n'||c1==' ');
char c = tolower(c1);//这里我们让输入的答案是转换为小写字母,注意头文件#include <ctype.h>
if(c==daan[chouti]||c==t1[chouti]){
dui1[chouti] = 1;
printf("恭喜你 你成功答对了%d道题!\n\n",dui++);
zhengquelv++;
}
else printf("很遗憾 你答错了\n正确的答案应该是%c\n\n",daan[chouti]);
5、输出结果
printf("同学你答对的题号是:");
for(int i = 0 ;i<20;i++){
if(dui1[i]==1) printf(" %d",i+1);
}
printf("\n");
printf("答错的题号是:");
for(int i = 0 ;i<20;i++){
if(dui1[i]==0) printf(" %d",i+1);
}
printf("\n\n共答对%d道题,",dui-1);
printf("正确率是%d%%",zhengquelv*5);
总结
这是第一次独立完成的大作业,也算是自己认真写的第一个小程序,尚且还有很多不足,希望在大二大三大四能够做出更完美的程序,写出更好的软件,加油!