本次代码主要是对于随机出题程序的一次尝试设计,运用了随机数,简单题库建立,以及简单循环。
srand( ( int ) time ( 0 ) ); //时间做种子
for( i=0; i<20; i++ )
{
r=rand( ) % 20;
}
以上一段是对于随机取数的设计,第一行是利用时间作为随机种子取随机数,可以避免每次随机的数都一样的情况发生。其中用了简单的循环,循环二十次,也就是抽取二十道题。最后一段 r=rand( ) % 20; 是利用r作为数组中的数,如 a[ r ] ,取到相应题目。
if ( f>='a' && f<='z' )
{
f=f-32;
}
本段程序为选择题,为解决大小写问题,此段判断代码可有效解决大小写难以辨识问题,提高程序人性化程度。
需要注意的是,如果你的输入用的是scanf进行输入,那么请尽量使用%s作为输入格式,否则容易出现使用空格或回车造成的程序混乱(用%c可验真伪)
scanf("%s",&f);
最后呢,其实也没什么太复杂的东西,而且作者也还有一块地方没解决——当输入“a a a”时会出问题...也希望有大佬对此程序予以点评,若有疏漏,还请雅正!
以下附上部分核心代码(其中j [ ] 为答案,timu [ ] [ ]为题目,都以数组形式写进程序)
int i,r,t,l;
int fen=0;
int ti=0;
int shu[100];
char f;
int y;
t=1;
printf("开始答题,这是选择题\n一题五分,总分100分\n\n");
srand((int)time(0));
for(i=0;i<20;i++,t++)
{
r=rand()%20;
shu[i]=r;
if(r!=shu[100])
y=1;
else
y=0;
if(y==1)
printf("第%d题.%s\n请输入答案(回车进入下一题)___",t,timu[r]);
scanf("%s",&f);
{
if(f>='a'&&f<='z')
{
f=f-32;
}
if(f==j[r])
{
printf("对了\n");
fen=fen+5;
ti=ti+1;
}
else{
printf("错了,答案是 %c\n",j[r]);
}
printf("\n");
getchar ();
}
printf("结束了\n");
printf("答对了%d道 你的分数是%d",ti,fen);