亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用c語言編寫,看不出問題在哪,只輸入了一組數據,程序就退出了。

用c語言編寫,看不出問題在哪,只輸入了一組數據,程序就退出了。

C
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;


查看完整回答
5 反對 回復 2016-05-13
?
莫還生

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;
}

查看完整回答
3 反對 回復 2016-05-13
?
杰倫窗外的小麻雀

TA貢獻16條經驗 獲得超7個贊


寫成i++試試,不是很懂c,但是循環的那里如果num是0的話,你約束了i<mun,但后面++i的意思不是先加1嗎,那不就比num大了嗎,只是懷疑

查看完整回答
1 反對 回復 2016-05-13
  • 4 回答
  • 0 關注
  • 2113 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號