
題圖
這與昨天的練習(xí)類似,只是改為實(shí)數(shù)類型而已。
我的代碼如下:
#include <stdio.h>
int main(){
double a;
double b;
puts("請(qǐng)輸入兩個(gè)整數(shù)。");
printf("整數(shù)A:"); scanf("%lf",a);
printf("整數(shù)B:"); scanf("%lf",b);
printf("A是B的 %f%%。",a/b*100);
return 0;
}
如果你仔細(xì)看了,可能就會(huì)發(fā)現(xiàn) scanf()的第二個(gè)實(shí)參缺少了&。
此時(shí)運(yùn)行如下圖

問(wèn)題代碼運(yùn)行
當(dāng)掃描第一個(gè)實(shí)數(shù)時(shí),程序意外停止。
最初我并未發(fā)現(xiàn)代碼的錯(cuò)誤,可能是寫(xiě)得太累了。我轉(zhuǎn)而考慮是否可能是兼容性問(wèn)題,并嘗試地更改設(shè)置。最后腦子一清醒,發(fā)現(xiàn)是 scanf()錯(cuò)了,我也是很囧。。。
缺少取值運(yùn)算符&時(shí),編譯通過(guò)、程序運(yùn)行,僅在掃描第一個(gè)實(shí)數(shù)時(shí)停止的現(xiàn)象,也算是唯一稍微讓我有點(diǎn)興趣的了。
照例貼上修改過(guò)的正確代碼:
#include <stdio.h>
int main(){
double a;
double b;
puts("請(qǐng)輸入兩個(gè)整數(shù)。");
printf("整數(shù)A:"); scanf("%lf",&a);
printf("整數(shù)B:"); scanf("%lf",&b);
printf("A是B的 %f%%。",a/b*100);
return 0;
}