请高人用C语言编写一个做选择题的小程序,满意另有加分!

如题: 1.question ea************
a ******
b ******
c ******
d ******

2.question eb************
a ******
b ******
c ******
d ******

3.question ec************
a ******
b ******
c ******
d ******

4.question ed************
a ******
b ******
c ******
d ******

n.question en************
a ******
b ******
c ******
d ******

a:? /*?表示被选择的次数*/
b:?
c:?
d:?

要求:每道选择题只能输入一个有效答案(字符a、b、c、d任意其中一个),否则输出“no”并继续循环直到输入有效答案为止,回答完所有选择题后输出 a、b、c、d各项被选择的次数。
请大家在把自己代码做一下注释,小弟好多地方看不懂,拜托大家了,另外补充一下:每一道选择题的答案都是一样的,比如我可以全部写成:A代表 是的;B代表 不是;C代表 不一定;D代表 偶尔。所以答完所有选择题后,统计并输出ABCD各项被选择的次数即可。

第1个回答  2010-09-01
#include<stdio.h>
#define MaxLen 4
void main()
{
int i=0;//题号
int count[MaxLen];//记录选项被选的次数
char ch;//题目选项
for(int j=0;j<MaxLen;j++)
count[j]=0;
printf("请输入您的选项<选项在ABCD中>,输入#结束输入\n");
printf("第%d题:\n",++i);
scanf("%c",&ch);
getchar();//接收键盘输入的空格
while(1)
{
if(ch=='#')//输入#直接跳出
break;

printf("第%d题:\n",++i);
switch(ch)
{
case 'A':
case 'a':
count[0]++;
break;
case 'B':
case 'b':
count[1]++;
break;
case 'C':
case 'c':
count[2]++;
break;
case 'D':
case 'd':
count[3]++;
break;
default:
printf("对不起您的输入不正确,请重新输入");//输入不正确时重新输入
i--;//题号还原
break;
}

printf("请输入您的选项<选项在ABCD中>\n");
scanf("%c",&ch);
getchar();//接收键盘输入的空格
}
printf("A被选%d次,B被选%d次,C被选%d次,D被选%d次\n",count[0],count[1],count[2],count[3]);//输出abcd被选的次数

}
第2个回答  2010-08-29
#include<stdio.h>
#define MaxLen 4
void main()
{
int i=0;//题号
int count[MaxLen];//记录选项被选的次数
char ch;//题目选项
for(int j=0;j<MaxLen;j++)
count[j]=0;
printf("请输入您的选项<选项在ABCD中>,输入#结束输入\n");
printf("第%d题:\n",++i);
scanf("%c",&ch);
getchar();//接收键盘输入的空格
while(1)
{
if(ch=='#')//输入#直接跳出
break;

printf("第%d题:\n",++i);
switch(ch)
{
case 'A':
case 'a':
count[0]++;
break;
case 'B':
case 'b':
count[1]++;
break;
case 'C':
case 'c':
count[2]++;
break;
case 'D':
case 'd':
count[3]++;
break;
default:
printf("对不起您的输入不正确,请重新输入");//输入不正确时重新输入
i--;//题号还原
break;
}

printf("请输入您的选项<选项在ABCD中>\n");
scanf("%c",&ch);
getchar();//接收键盘输入的空格
}
printf("A被选%d次,B被选%d次,C被选%d次,D被选%d次\n",count[0],count[1],count[2],count[3]);//输出abcd被选的次数

}
绝对好使在Vc下编译通过 希望能够帮助您
第3个回答  2010-08-29
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(int argc, char **argv)
{
int a_count = 0, b_count = 0, c_count = 0, d_count = 0;
int i = 1;
int flag = 0;
char* answer;
while (1) {
flag = 0;
printf("input question No. %d answer:", i++);
answer = gets();
switch (answer[0]) {
case 'a':
a_count++;
break;
case 'b':
b_count++;
break;
case 'c':
c_count++;
break;
case 'd':
d_count++;
break;
case 'n':
flag = 1;
break;
default:
i--;
printf("sorry, you input error, input again\n");
break;
}
if (flag == 1) break;
answer = gets();
}

printf("a:%d\nb%d\nc%dd%d\n", a_count, b_count, c_count, d_count");

return 0;
}本回答被网友采纳
第4个回答  2010-08-29
#include<stdio.h>

char question(int i,char q[])
{
char answer;
A:printf("%d、question %d\n%s\n请答题:",i,i,q);
scanf("%c",&answer);
if((answer>='a'&&answer<='d')||(answer>='A'&&answer<='D'))
return answer;
else
{
printf("no");
goto A;
}
}

void main()
{
int i;
char que[100];//问题和选项
char CountA=0,CountB=0,CountC=0,CountD=0;//计数a、b、c、d被选的次数
for(i=0;i<100;i++)
{
if(question(i,que[i])=='a'||question(i,que[i])=='A')
CountA++;
else if(question(i,que[i])=='b'||question(i,que[i])=='B')
CountB++;
else if(question(i,que[i])=='c'||question(i,que[i])=='C')
CountC++;
else if(question(i,que[i])=='d'||question(i,que[i])=='D')
CountD++;
}

printf("A被选%d次,B被选%d次,C被选%d次,D被选%d次\n",CountA,CountB,CountC,CountD);
}
相似回答