zuoxuening
zuoxuening
采纳率33.3%
2016-07-26 12:14 阅读 6.5k
已采纳

C语言编程,小写字母转换为大写字母。

编写一个程序,使用户输入的小写字母转换为大写字母,而其它字符不变。
#include
main()
{
char c;
while ((c=getchar() )!='\n')
{
if(c>='a'&&c<='z')
c=c-('a'-'A') ;
putchar(c) ;
}
}
上面程序能编译并且能执行。改成下面程序程序后为什么不一样呢?求教啊!我是C语言初学者。
#include
main()
{
char c;
c=getchar();
while (c!='\n')
{
if(c>='a'&&c<='z')
c=c-('a'-'A') ;
putchar(c) ;
}
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • 已采纳
    CSDNXIAOC Robot-C 2016-07-26 12:27

    #include
    using namespace std;
    int main()
    {
    char c1,c2;
    c1='a';
    c2='b';
    c1=c1-32;
    c2=c2-32;
    cout< return 0;
    }......
    答案就在这里:将小写字母转换为大写字母
    ----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

    点赞 1 评论 复制链接分享
  • cqj339500 BestChiChien 2016-07-26 12:57

    当使用getchar函数的时候程序就等着输入.输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).比如输入(acasd)回车
    缓存区保存的东西就为(acasd‘n’)当用户输入完毕并且检测到回车后,才开始再stdio缓冲流中一个一个读出来,首先就读第一个数据就是a
    此时的c的值就为a a肯定不是'\n'啊 就无限进入了你的while循环中 一直putchar a 出来

    点赞 3 评论 复制链接分享
  • u012280683 我叫古大锤 2016-07-26 13:02

    c=getchar()放在外面和里面不一样,放在里面那么加了括号之后优先级高先执行,执行完一次后getchar()没接受到数据不作出反应;放在外面就不一样了,c=getchar()后,c的值就是先前输入的数据,while循环一直执行,因为c的值!=回车,所以一直在执行,你就没办法输入下一个数据了,你按ctrl+C可以终止

    点赞 2 评论 复制链接分享
  • sumingrui 岳麓山车神 2016-07-26 15:13

    建议你在c=getchar();之后加上一句cout<<c;观察一下,你会发现你输入的一串字符其实只读取了第一个哦,之后的循环就变成无限循环咯

    点赞 2 评论 复制链接分享
  • myWAY1 若有所思2016 2016-07-27 12:26

    看你代码,应该是第一次等你输入完后,while循环会一直运行。原因是,getchar()会等待你输入,而你把它拿到循环外之后,程序不会被中断了

    点赞 评论 复制链接分享

相关推荐