weibo_青梅竹馬醬_0
2016-05-13 11:09:26
#include
int?main(void)
{
????char?ch;
????int?num,?i;
????????printf("Enter?a?character?and?a?integer:\n");
????while((ch?=?getchar())?!=?'\n')
????{
????????scanf("%d",?&num);
????????????for(i?=?0;?i?<?num;?++i)
????????????putchar(ch);
????????putchar('\n');
????????printf("Enter?an?another?pair.Empty?line?to?quit");
????}
????return?0;
}
4 回答

怪盜飯團
TA貢獻97條經驗 獲得超118個贊
問題就出在換行符,這次是緊跟在第一個輸入的2后面的那個換行符。scanf()函數將該換行符留在輸入隊列中,而getchar()并不跳過換行符。所以在循環的下一個周期,getchar()讀取了第一次輸入時的換行符,而換行符正是終止循環的條件。
解決方案:
吃掉輸入流中的回車即可
在while循環最后,加上以下語句
while?(getchar()?!=?'\n') ????continue;

莫還生
TA貢獻1條經驗 獲得超3個贊
#include<stdio.h>
int main(void)
{
??? char ch;
??? int num, i;
??????? printf("Enter a character and a integer:\n");
??? while((ch = getchar()) != '\n')
??? {
??????? scanf("%d", &num);
??????????? for(i = 0; i < num; ++i)
??????????? putchar(ch);
??????? putchar('\n');
??????? printf("Enter an another pair.Empty line to quit\n");
??????? ch=getchar();
??? }
??? return 0;
}
- 4 回答
- 0 關注
- 2113 瀏覽
添加回答
舉報
0/150
提交
取消