#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 关注
- 2027 浏览
添加回答
举报
0/150
提交
取消