这是个关于随机抽题系统的初次尝试,以下是该系统运用的关键技术。
1.生成随机数并不重复(拿在0~20间的数随机抽取并不重复来举例)
srand((unsigned)time(NULL));//产生随机数种子
for(j=0;j<20;j++)
{
index[j]=rand()%20;//随机抽数
for(i=1;i<j;i++)
{
if(index[i]==index[j])
{
j--;
break;//如果两个随机数相等,跳出循环(消除重复)
}
}
}
2.解决答案不一致的问题(如“1+1=”,答案可为2,two,Two皆对)
if(c[x][0]==a[x][0]-32)//单词的首字母小写变大写
{
printf("恭喜正确\n");
sum=sum+5;
}
这一步直接有利于答题者作答,提高辨识度。
最后是注意点:题目的printf输出和答案的scanf输入应用%s来输出。
以下是核心代码:
for(i=1;i<=20;i++)
{
printf("第%d题 ",i);
//int x=21;
x=index[i];
printf("%s",b[x]);
scanf("%s",n);
//if(i==1) getchar();
for(j=0;j<strlen(n);j++)
{
c[x][j]=n[j];
}
if(strcmp(n,s[x])==0||strcmp(n,a[x])==0){
printf("恭喜正确\n");
sum=sum+5;
}
if(c[x][0]==a[x][0]-32&&strlen[n]==strlen(a[x]))//单词的首字母小写变大写,并且保持输入的字母长度与答案字母长度一样
{
printf("恭喜正确\n");
sum=sum+5;
}
else printf("回答错误了奥!正确答案是%s 或者 %s\n",a[x],s[x]);
printf("\n");
getchar();
}
printf("答题结束!");