4 回答

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

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超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;
}

TA貢獻(xiàn)16條經(jīng)驗(yàn) 獲得超7個贊
寫成i++試試,不是很懂c,但是循環(huán)的那里如果num是0的話,你約束了i<mun,但后面++i的意思不是先加1嗎,那不就比num大了嗎,只是懷疑
- 4 回答
- 0 關(guān)注
- 2106 瀏覽
添加回答
舉報(bào)