用c语言编写,看不出问题在哪,只输入了一组数据,程序就退出了。

#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;
}
weibo_青梅竹马酱_0
浏览 2028回答 4
4回答

怪盗饭团

问题就出在换行符,这次是紧跟在第一个输入的2后面的那个换行符。scanf()函数将该换行符留在输入队列中,而getchar()并不跳过换行符。所以在循环的下一个周期,getchar()读取了第一次输入时的换行符,而换行符正是终止循环的条件。解决方案:吃掉输入流中的回车即可在while循环最后,加上以下语句while (getchar() != '\n')     continue;

莫还生

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

杰伦窗外的小麻雀

写成i++试试,不是很懂c,但是循环的那里如果num是0的话,你约束了i<mun,但后面++i的意思不是先加1吗,那不就比num大了吗,只是怀疑
打开App,查看更多内容
随时随地看视频慕课网APP