为了账号安全,请及时绑定邮箱和手机立即绑定

用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 关注
  • 1975 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信