|
楼主 |
发表于 2012-5-22 14:45:54
|
显示全部楼层
本帖最后由 jolly 于 2012-5-22 15:23 编辑
问题解决了!!!!!!!!!!!!!!!!!!!!!
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define M 2
int n=0;
void one();
void two();
void three();
void one()
{
unsigned char str[3];
int i;
char ch;
printf("请听题:\n第1题:“多出各一半”,打一字!\n答案是:");
fgets(str,3,stdin);
while (str[0]=='\n' || str[1]=='\n' )
{
printf("Too short,please input again!\n");
fgets(str,3,stdin);
}
//scanf("%s",str);
str[2]='\0'; //字符串结束标志
while (((ch = getchar()) != '\n') && (ch != EOF));
//fflush(stdin); 清除标准输入缓冲区,不过貌似没有用,超过数组最大长度还是会溢出
for(i=0;i<M;i++)
{
if (strcmp(str,"岁"))
{
if (i<(M-1))
{
printf("差一点!你一定行的!\n ");
printf("第1题:“多出各一半”,打一字!\n 答案是:");
fgets(str,3,stdin);
while (str[0]=='\n' || str[1]=='\n' )
{
printf("Too short,please input again!\n");
fgets(str,3,stdin);
}
// scanf("%s",str);
str[2]='\0';
while (((ch = getchar()) != '\n') && (ch != EOF));
continue;
}
else
{
printf("真是无语了!\n");
}
}
else
{
printf("你太有才了!\n ");
n++;
break;
}
}
}
void two()
{
unsigned char str[3];
char que,ch;
int i;
printf("第2题:“闭着口,却在笑”,打一字!\n答案是:");
fgets(str,3,stdin);
while (str[0]=='\n' || str[1]=='\n' )
{
printf("Too short,please input again!\n");
fgets(str,3,stdin);
}
//scanf("%s",str);
str[2]='\0';
while (((ch = getchar()) != '\n') && (ch != EOF));
for(i=0;i<M;i++)
{
if (strcmp(str,"哈"))
{
if (i<(M-1))
{
printf("努力!请再试一次 !\n ");
printf("第2题:“闭着口,却在笑”,打一字!\n 答案是:");
fgets(str,3,stdin);
while (str[0]=='\n' || str[1]=='\n' )
{
printf("Too short,please input again!\n");
fgets(str,3,stdin);
}
//scanf("%s",str);
str[2]='\0';
while (((ch = getchar()) != '\n') && (ch != EOF));
continue;
}
else
{
printf("又错了,是否继续? Y/N:\n");
que=fgetchar();
// scanf("%c",&que);
while (((ch = getchar()) != '\n') && (ch != EOF));
if(que=='Y')
{
printf("进入第三题!\n");
three();
}
else
{
printf("答题结束!\n");
}
}
}
else
{
printf("还行,下一关!\n ");
n++;
three();
break;/*如果不加break会继续没完成的循环,break 一定要放在调用韩素three()之后,如果放在函数前面不会继续执行three()这个函数,直接跳出函数。*/
}
}
}
void three()
{
unsigned char str[3];
int i;
char ch;
printf("第3题:“五口人说话”,打一字!\n答案是:");
fgets(str,3,stdin);
while (str[0]=='\n' || str[1]=='\n' )
{
printf("Too short,please input again!\n");
fgets(str,3,stdin);
}
//scanf("%s",str);
str[2]='\0';
while (((ch = getchar()) != '\n') && (ch != EOF));
for(i=0;i<M;i++)
{
if (strcmp(str,"语"))
{
if (i<(M-1))
{
printf("努力!请再试一次 !\n ");
printf("第3题:“五口人说话”,打一字!\n 答案是:");
fgets(str,3,stdin);
while (str[0]=='\n' || str[1]=='\n' )
{
printf("Too short,please input again!\n");
fgets(str,3,stdin);
}
//scanf("%s",str);
str[2]='\0';
while (((ch = getchar()) != '\n') && (ch != EOF));
continue;
}
else
{
printf("你又错了,回去再修炼几年吧!\n");
}
}
else
{
printf("你真聪明!\n ");
n++;
break;
}
}
}
void main()
{
one();
two();
printf("您一共答对了 %d 道题!\n",n);
}
|
|