鱼C论坛

 找回密码
 立即注册
查看: 5441|回复: 12

字母大小写转换

[复制链接]
发表于 2012-8-15 18:55:42 | 显示全部楼层 |阅读模式
1鱼币
这是小甲鱼的源文件。运行后输入大写A提示输入有误, 请重新输入一个字母输入其他大写字母正常。请帮忙看看错在哪?
#include <stdio.h>
#include <conio.h>
void main()
{
      char ch, temp;
      printf("请输入一个字母: \n");
      ch = getchar();
      temp = getchar();
      while( !(ch>'A' && ch<'z') || (ch > 'Z' && ch < 'a') )
      {
           printf("输入有误, 请重新输入一个字母: \n");
           ch = getchar();
      }
      if( ch & 32 )   
      {
            ch = ch & 223;  // 使第五位为0,变大写
      }
      else
      {
            ch = ch | 255;  // 使第五位为1,变小写
      }
      putchar(ch);
      printf("\n");
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-8-15 19:18:23 | 显示全部楼层
找到原因了。。。。while( !(ch>'A' && ch<'z') || (ch > 'Z' && ch < 'a') )
这个部分错了。应该是加上“=”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-8-15 19:19:33 | 显示全部楼层
找到原因了。。。。while( !(ch>'A' && ch<'z') || (ch > 'Z' && ch < 'a') )
这个部分错了。应该是加上“=”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-8-15 20:05:39 | 显示全部楼层
本帖最后由 zquchs 于 2012-8-15 20:12 编辑

判断好像有点问题,修改后:

  1. #include <stdio.h>
  2. #include <conio.h>
  3. void main()
  4. {
  5.         char ch, temp;
  6.         printf("请输入一个字母: \n");
  7.         ch = getchar();
  8.         temp = getchar();

  9.         while( (ch>'A' && ch<'z') && (ch > 'Z' && ch < 'a') )  //这里就是清除掉A到Z与a到z之外的所有字符,
  10.                                                                               //while(ch <'A'||ch >'Z'&&ch < 'a'||ch >'z')这样也可以

  11.        {                                                                              
  12.                 printf("输入有误, 请重新输入一个字母: \n");
  13.                 ch = getchar();
  14.         }
  15.         if( ch & 32 )   
  16.         {
  17.                 ch = ch & 223;  // 使第五位为0,变大写
  18.         }
  19.         else
  20.         {
  21.                 ch = ch | 32;  // 使第五位为1,变小写,是
  22.                         // |0010 0000 == | 32<!--EndFragment-->
  23.         }
  24.         putchar(ch);
  25.         printf("\n");
  26. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-8-24 10:00:32 | 显示全部楼层
while( !(ch>'A' && ch<'z') || (ch > 'Z' && ch < 'a') )这里应该改 把||改为&&
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-10-14 19:21:06 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-10-17 17:23:18 | 显示全部楼层
好像大写改小写都不对吧!除了A外提示错误,其他都没有改小写呢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-11-14 16:14:04 | 显示全部楼层
四楼是对的哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-30 18:13:02 | 显示全部楼层
你们都不对,看看我写的。注意while循环条件和大小写转换机制,新增清除缓冲区函数。

  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. void main()
  5. {
  6.         char ch;
  7.         printf("请输入一个字母: \n");
  8.         ch = getchar();
  9.         fflush(stdin);  //清除缓冲区
  10.        
  11.         while( !(ch>='A' && ch<='z') || (ch > 'Z' && ch < 'a') )  //当ch不是 A~Z 或 a~z 时循环重新输入                                                                           
  12.         {                                                                              
  13.                 printf("输入有误, 请重新输入一个字母: \n");
  14.                 ch = getchar();
  15.                 fflush(stdin); //清除缓冲区
  16.         }
  17.         if( ch & 32 )   //如果是小写
  18.         {
  19.                 ch = ch & 223;  // 第五位置0,变大写
  20.         }
  21.         else
  22.         {
  23.                 ch = ch | 32;  // 第五位置1,变小写
  24.         }
  25.         putchar(ch);
  26.         printf("\n");
  27. }
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-6-2 21:07:42 | 显示全部楼层
本帖最后由 少先队队长 于 2017-6-2 21:09 编辑

这样可以,主要看判断是否为字母那里,看着ascii码表就知道怎么写了

  1. #include <stdio.h>
  2. #include <conio.h>
  3. void main()
  4. {
  5.         char ch;
  6.         printf("请输入一个字母: \n");
  7.         ch = getchar();
  8.       

  9.         while( (ch<'A' || ch>'z')  || (ch > 'Z' && ch < 'a') )  
  10.        {                                                                              
  11.                 printf("输入有误, 请重新输入一个字母: \n");
  12.                 ch = getchar();
  13.         }
  14.         if( ch & 32 )   
  15.         {
  16.                 ch = ch & 223;  
  17.         }
  18.         else
  19.         {
  20.                 ch = ch | 32;
  21.                         
  22.         }
  23.         putchar(ch);
  24.         printf("\n");
  25. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-5 17:41:42 | 显示全部楼层
本帖最后由 kailugaji 于 2018-3-5 18:04 编辑

#include<stdio.h>
#include<stdlib.h>
void main(){
    char ch,t;
    printf("请输入一个字母:\n");
    ch=getchar();
    t=getchar();
    while(!(ch>='A' && ch<='z') && !(ch>='Z' && ch<='a')){
        printf("输入有误,请重新输入一个字母:\n");
        ch=getchar();
    }
    if(ch & 32){
        ch=ch & 223;//使第5位为0,变大写
    }
    else{
        ch=ch | 32;//使第5位为1,变小写
    }
    putchar(ch);
    printf("\n");
    //ch=getchar();
    //putchar(ch);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-5 18:03:41 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. void main(){
  4.     char ch,t;
  5.     printf("请输入一个字母:\n");
  6.     ch=getchar();
  7.     t=getchar();
  8.     while(!(ch>='A' && ch<='z') && !(ch>='Z' && ch<='a')){
  9.         printf("输入有误,请重新输入一个字母:\n");
  10.         ch=getchar();
  11.     }
  12.     if(ch & 32){
  13.         ch=ch & 223;//使第5位为0,变大写
  14.     }
  15.     else{
  16.         ch=ch | 32;//使第5位为1,变小写
  17.     }
  18.     putchar(ch);
  19.     printf("\n");
  20.     //ch=getchar();
  21.     //putchar(ch);
  22. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-5 20:54:23 | 显示全部楼层
while( (ch>'A' && ch<'z') && (ch > 'Z' && ch < 'a') )
//这样就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 18:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表