A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. #include <stdio.h>
  2. int main()      
  3. {      
  4.         char c;

  5.         printf("请输入一个字符串:\n");

  6.         c=getchar();

  7.         while( c != '\n')

  8.         {

  9.             if(c>='A'&&c<='W'||c>='a'&&c<='w')

  10.             {

  11.                 c=c+3;

  12.             }

  13.             else if(c>='X'&&c<='Z'||c>='x'&&c<='z')

  14.             {

  15.                 c=(c+3)-26;

  16.             }
  17.         printf("%c",c);
  18.         }

  19.       return 0;

  20. }
复制代码


为什么我的这段代码在vc中运行结果是刷屏的啊?大神指点!

11 个回复

倒序浏览
if 条件里面写的有问题,"||"和"&&"这么写容易写错,建议你一个条件里面只写"||"或者"&&".
回复 使用道具 举报
本帖最后由 wehuazi 于 2014-10-16 22:44 编辑

#include <stdio.h>
int main()
{
    char c;
    while ((c=getchar())!='\n')
    {
        if ((c>='a' && c<='z') || (c>='A' && c<='Z'))
        {
            c=c+3;
            if (c>'Z' && c<='Z'+3 || c>'z')

                c=c-26;
        }
       printf("%c",c);
    }
    printf("\n");
    return 0;
}
这样就行了.
回复 使用道具 举报
表示要好好研究一下
回复 使用道具 举报
  1. #include "stdafx.h"


  2. int _tmain(int argc, _TCHAR* argv[])
  3. {
  4.                 char c;

  5.         printf("请输入一个字符串:\n");

  6.       

  7.         while( (c = getchar()) != '\n')

  8.         {

  9.             if(c>='A'&&c<='Z'||c>='a'&&c<='z')

  10.             {

  11.                 c=c+3;

  12.             }
  13.         printf("%c",c);
  14.         }

  15.       return 0;
  16. }
复制代码


这种结果肯定是你的while循环的条件有问题啊  你看一下我修改之后的 按照你的写法  只是从键盘上接收第一个传入的字母(假设输入abc)a   之后 while条件中c的取值是 是你第一步求得(d) 而不是键盘接收的 (b)
说的有点乱  希望对你有帮助
回复 使用道具 举报
wehuazi 发表于 2014-10-16 22:36
#include int main()
{
    char c;

这个可以了,但是我想知道为什么出现刷屏啊
回复 使用道具 举报
LeeWong 发表于 2014-10-16 22:47
这种结果肯定是你的while循环的条件有问题啊  你看一下我修改之后的 按照你的写法  只是从键盘上接收第一 ...

大哥,你这是用C写的?我是菜鸟,不过你说的指出了我的问题。。。
回复 使用道具 举报
LeeWong 中级黑马 2014-10-16 23:22:51
8#
菜鸟_琦 发表于 2014-10-16 23:06
大哥,你这是用C写的?我是菜鸟,不过你说的指出了我的问题。。。

唉,俺的电脑不行啊,装了个虚拟机,有点卡,我寻思 就直接在windows下搞了 你凑合这看看呗!
回复 使用道具 举报
if判断条件要用括号区分先执行哪步后执行哪步,不仅方便阅读,还不容易出现逻辑错误。有些运算符优先级搞不太清楚,我一般都用括号括起来。
回复 使用道具 举报
getchar()函数会先把你键盘输入的字符存入一个缓冲区,你每次调用getchar(),他才会从缓冲区读取一个字符,所以你要把getchar()放在while循环中才能读完你输入的字符 while ((c=getchar())!='\n'){}
回复 使用道具 举报
而且因为‘c’的asc码比'\n'大。所以你c=c+3不会等于'\n.就一直刷屏了'
回复 使用道具 举报
IOS小菜鸟 发表于 2014-10-17 18:23
getchar()函数会先把你键盘输入的字符存入一个缓冲区,你每次调用getchar(),他才会从缓冲区读取一个字符, ...

赞一个~~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马