a13766971255 发表于 2021-1-19 23:01:21

代码又出错了

#include<stdio.h>

int main()
{char ch;
   printf("请输入一个字母");
   scanf("%c",&ch);
   if (ch>=97&&ch<=123)
   {
   ch=ch-32;
   printf("%c\n",&ch);
   }
   else if (ch<=97&&ch>=71)
   {
   ch=ch+32;
   printf("%c\n",&ch) ;
   }
   return 0;
       
       
       
}
这个就是一个转化大小写的程序,但是输出乱码

jackz007 发表于 2021-1-19 23:09:44

本帖最后由 jackz007 于 2021-1-19 23:11 编辑

#include<stdio.h>

int main(void)
{
      char ch                                  ;
      printf("请输入一个字母")               ;
      scanf("%c" , & ch)                     ;
      if (ch >= 'a' && ch <= 'z') ch -= 32   ;// 直接用字符比较直观
      else if(ch >= 'A' && ch <= 'Z') ch += 32 ;// 直接用字符比较直观
      printf("%c\n" , ch)                      ;// 打印字符不用加取址符
}

sunrise085 发表于 2021-1-19 23:18:14

本帖最后由 sunrise085 于 2021-1-19 23:19 编辑

大小写的ASCII码范围搞错了。。。。。。。
大写字母的范围是65~90
小写字母的范围是97~122


还有就是printf中多写了&符号,输出的是地址。。。。。

风过无痕1989 发表于 2021-1-19 23:25:49

本帖最后由 风过无痕1989 于 2021-1-19 23:27 编辑

#include<stdio.h>

int main()
{
    char ch;
    printf("请输入一个字母");
    scanf("%c",&ch);
    if (ch >= 97 && ch <= 122)         // 此处错误,小写字母到122结束
   {
         ch = ch - 32;
         printf("%c\n",ch);         // 输出错误,输出时只写变量,不写地址
   }
   else if (ch <= 90 && ch >= 65)   // 此处错误,大写字母从65开始
   {
      ch = ch + 32;
      printf("%c\n",ch) ;         // 输出错误,输出时只写变量,不写地址
   }
   return 0;
         
}
页: [1]
查看完整版本: 代码又出错了