C语言入门 发表于 2014-3-22 21:17:52

运行后的结果与我想的不一样,求救!!!

#include<stdio.h>
#include<ctype.h>
int main(void)
{
        char ch;

        while((ch=getchar())!='\n')
        {
                if(toupper(ch))
                        toupper(ch);
                else
                        tolower(ch);
        }
        putchar(ch);
        return 0;
}
                我的意思是输入大写字母,打印它的小写字母,反之亦然,输入小写字母,打印它的大写字母

谓我心忧 发表于 2014-3-22 21:17:53

按照楼主的思路改了一下代码,VC++6.0完美运行
#include<stdio.h>

#include<ctype.h>

int main(void)

{
   
    char ch;
   
   
    while((ch=getchar())!='\n')
      
    {
      
      if(ch == toupper(ch))
            
            ch = tolower(ch);
      
      else
            ch = toupper(ch);
            

      putchar(ch);
      
    }
   
   
   
    return 0;
   
}


首先,你的if语句是必然执行的(接受的ASCII非0), 其次,你的转化函数的返回值没有付给一个变量,执行的没有意义.最后,getchar还是接受了回车,单步调试发现的,这样导致ch的值也被覆盖了.
页: [1]
查看完整版本: 运行后的结果与我想的不一样,求救!!!