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("問題\n");
printf("a.xx b.xx c.xx d.xx\n");
if((choose=getchar())=='a')
*num+=50;
getchar();
printf("問題\n");
printf("a.xx b.xx c.xx d.xx\n");
if((choose2=getchar())=='b')
*num+=50;
}
int main()
{
int numbegain=0;
//int *numlast=&numbegain;
printf("這是壹個XX程序,根據提示選擇abcd\n");
iq(&numbegain);
printf("妳的智商是:%d",numbegain);
system("pause");
}