C语言的一个问答程序

来源:百度知道 编辑:UC知道 时间:2024/07/05 12:38:27
#include<stdio.h>
#include<stdlib.h>
void iq(int *num)
{
char choose,choose2;
printf("问题\n");
printf("a.xx b.xx c.xx d.xx\n");
scanf("%c",&choose);
if(choose=='a')
*num=*num+50;
printf("问题\n");
printf("a.xx b.xx c.xx d.xx\n");
scanf("%c",&choose2);
if(choose2=='b')
*num=*num+50;
}

int main()
{
int numbegain=0;
//int *numlast=&numbegain;
printf("这是一个XX程序,根据提示选择abcd\n");
iq(&numbegain);
printf("你的智商是:%d",numbegain);
system("pause");
}
为什么最后总是只能执行不到第二个if语句?如果真的回答得好,一定会追满50!大家都知道,如果一个问题没人解决,分数就浪费了……现在分没以前那么多了我…………

scanf("%c",&choose);
if(choose=='a')
\*上面两句改为“if((choose=getchar())=='a')”*\
*num=*num+50;
\*此处加上:“getchar();”。*\
printf("问题\n");
printf("a.xx b.xx c.xx d.xx\n");
scanf("%c",&choose2);
if(choose2=='b')
\*上面两句改为“if((choose2=getchar())=='b')”*\
*num=*num+50;

上面这三个地方改了就行,当输入输出连成一片的时候,会导致
输入输出顺序混乱,往往先执行两条输入语句,首先你输入a\n,
由于是你按\n系统才开始读入字符,顺序把字符'a'赋给了你的变量
choose,把字符'\n'赋给了你的变量choose2,这样,就跳过了
中间的输出语句直接结束了,但是注意,输出语句并不是没有执
行,只是顺序被打乱了(先输入两个变量后执行第二题的输出语句)
,所以你看不到,在TC里,你运行完按ALT+F5还是可以看到的,
其实变量choose2里的字符就是'\n'。

下面是帮你完全修正好的程序,自己运行试试再比较一下:
#include<stdio.h>
#include<stdlib.h>
void iq(int *num)
{
char choose,choose2;
printf("问题