小飞好可爱
2015-08-07 02:31
采纳率: 100%
浏览 1.9k
已采纳

菜鸟求解c语言中putchar和getchar的细节。

 # include <stdio.h>

int main()
{
    int trans(char);
    char c;
    printf("输入一串字符串进行翻译:\n");
    c = getchar();
    while(c != '\n')
    {
        c = trans(c);
        printf("%d", c);
        getchar();
    }
    putchar('\n');
    return 0;
}

trans(char ch)
{
    if(ch >= 65 && ch <= 86 || ch >= 97 && ch <= 118) ch += 4;
    if(ch >= 87 && ch <= 90 || ch >= 119 && ch <= 122) ch -= 22;
    return ch;
}

这里我运行以后会出现这样的情况:
图片说明

就是我只输入了4个字符,结果却输出了5个,这是怎么回事啊??
菜鸟正在学习,跪求大神解答!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 纵横车 2015-08-07 02:41
    已采纳

    while()里的c = getchar();

    点赞 打赏 评论
  • AgoniAngel 2015-08-07 03:06
     # include <stdio.h>
    
    int main()
    {
        int trans(char);
        char c;
        printf("输入一串字符串进行翻译:\n");
        c = getchar();
        while(c != '\n')
        {
            c = trans(c);
            printf("%d", c);
            c=getchar();
        }
        putchar('\n');
        return 0;
    }
    
    trans(char ch)
    {
        if(ch >= 65 && ch <= 86 || ch >= 97 && ch <= 118) ch += 4;
        if(ch >= 87 && ch <= 90 || ch >= 119 && ch <= 122) ch -= 22;
        return ch;
    }
    

    应该这样改

    点赞 打赏 评论

相关推荐 更多相似问题