关于C语言选择答题系统初次尝试,以下是我的代码部分展示.
1.关于选择题目的不重复选择 (在0~10个题目间随机抽取且不重复)
68| srand((unsigned)time(NULL));//产生随机数种子
部分代码展示:
70 for(i=1;i<=10;i++)
71 {
72 index[i] = rand() %10+1;//随机抽取题目,巧妙利用下标
73 for( j=1;j<i;j++)
74 {
75
76 if(index[i]==index[j])//随机题目不重复
77 {
78 i--;
79 break;
80 }
81
82 }
83 }
2.对于输入答案的评判 (程序对于答案大小写的区分以及部分不规则输入的评判)
例如:标准输入答案一般为A,小写a也被系统判断正确,考虑到有些用户会习惯性在题目出现多打空格如 “__A”或者“A__”这种情况程序也会判定正确,从而更凸显人性化.
代码展示:
96 if(res[0]==' ')
97 {
98 if(res[1]==a[d]||res[1]==a[d]+32)
99 {
100 printf("哔哔恭喜你答对了!不要骄傲哦!\n");
101 score++;
102 arr[score]=j;
103
104 }
105 else printf("很遗憾,正确答案是%c,继续努力\n",a[d]);
106 }
107 else {
108 if(res[0]==a[d]||res[0]==a[d]+32)
109 {
110 printf("哔哔恭喜你答对了!不要骄傲哦!\n");
111 score++;
112 arr[score]=j;
113 }
114 else printf("很遗憾,正确答案是%c,继续努力\n",a[d]);
115 }
116 }
3.程序在用户答题后会记录用户所答对的题目在程序末尾展示,以便于用户更加便捷的发现自己的错误从而改正. (同时会在程序最后给与相应分数与正确率).
代码如下:
if(score!=0)
{
printf("恁答对了:\n");
for(i=0;i<score;i++)
{
printf("第%d题 ",arr[i+1]);
}
printf("\n");
}
else printf("恁运气这不好,咋一个都没说dei\n");
4.核心代码展示.
for(i=1;i<=10;i++)
{
index[i] = rand() %10+1;
for( j=1;j<i;j++)
{
if(index[i]==index[j])
{
i--;
break;
}
}
}
int d=0;
double x=0.0;
char c1;
for(j=1;j<=10;j++)
{
d=index[j];
printf("第%d题: %s\n",j,qu[d]);
printf("%s\n",op[d]);
printf("请输入你的答案:");
if(j==1) getchar();
gets(res);
// scanf("%s",res);
if(res[0]==' ')
{
if(res[1]==a[d]||res[1]==a[d]+32)
{
printf("哔哔恭喜你答对了!不要骄傲哦!\n");
score++;
arr[score]=j;
}
else printf("很遗憾,正确答案是%c,继续努力\n",a[d]);
}
else {
if(res[0]==a[d]||res[0]==a[d]+32)
{
printf("哔哔恭喜你答对了!不要骄傲哦!\n");
score++;
arr[score]=j;
}
else printf("很遗憾,正确答案是%c,继续努力\n",a[d]);
}
}
if(score!=0)
{
printf("恁答对了:\n");
for(i=0;i<score;i++)
{
printf("第%d题 ",arr[i+1]);
}
printf("\n");
}
else printf("恁运气这不好,咋一个都没说dei\n");
x=score*1.0/10;
printf("你的最终成绩为%d\n正确率为%.2lf%%\n",score*5*2,x*100);
}
return 0;
}