❶ c語言:為什麼會沒有字元的輸入,請指出哪裡錯了,應該怎麼改。
# include<stdio.h>
void main()
{
float a,b,sum;
char d;
printf("請輸入兩個數字\n");
scanf("%f",&a);
scanf("%f",&b);
while(getchar()!='\n')continue;//加上這句就可以了
printf("選擇演算法 '+','-','*','/'\n");
scanf("%c",&d);//這里,上面scanf輸入接收後的回車符被這個scanf接收了,把上面輸入後的回車符去掉就可以了
switch(d)
{
case '+':sum=a+b;break;
case '-':sum=a-b;break;
case '*':sum=a*b;break;
case '/':sum=a/b;break;
}
printf("%.0f%c%.0f=%.0f\n",a,d,b,sum);
}
❷ c語言問題 為什麼沒有提示輸入字元 改成 choice=getchar()也不行,改成choice=getch()才可以 詳細一下
這是由於輸入流的問題,緩沖區內還存在數據,讀寫的時候直接就賦給了 變數choice。
你要注意,在處理字元類型的輸入時地注意緩沖區是否還留有數據,有可能是個回車(一般情況下)。所以在讀入字元型語句前,比如 scanf("%c",&choice); 前加 getchar(); 語句,這樣就不會有問題了,或者也可以使用 fflush(stdin); 直接清空輸入流。那位說用 scanf("%s",&choice); 這種字元串處理代替字元,其實這種方法在所有數據都是字元時使用倒是挺好,這樣就不用管輸入流了,因為 %s 是輸入到回車結束的,也不會產生類似問題!
❸ c語言字元串可以輸入,但是字元無法輸入
#include"stdafx.h"
intmain()
{charstr[30];
charm;
inti,j=0;
printf("inputastring: ");
scanf("%s",str);
printf("inputachar: ");
//m=getchar();(這里出問題,換成scanf("%c",&m)也是一樣問題,問題見下面圖片)
fflush(stdin);
scanf("%c",&m);
for(i=0;str[i]!='