鱼C论坛

 找回密码
 立即注册
查看: 5885|回复: 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 编辑

判断好像有点问题,修改后:
#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') )  //这里就是清除掉A到Z与a到z之外的所有字符,
                                                                              //while(ch <'A'||ch >'Z'&&ch < 'a'||ch >'z')这样也可以

       {                                                                               
                printf("输入有误, 请重新输入一个字母: \n");
                ch = getchar();
        }
        if( ch & 32 )   
        {
                ch = ch & 223;  // 使第五位为0,变大写
        }
        else
        {
                ch = ch | 32;  // 使第五位为1,变小写,是
                        // |0010 0000 == | 32<!--EndFragment-->
        }
        putchar(ch);
        printf("\n");
}
想知道小甲鱼最近在做啥?请访问 -> 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循环条件和大小写转换机制,新增清除缓冲区函数。
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
        char ch;
        printf("请输入一个字母: \n");
        ch = getchar();
        fflush(stdin);  //清除缓冲区
        
        while( !(ch>='A' && ch<='z') || (ch > 'Z' && ch < 'a') )  //当ch不是 A~Z 或 a~z 时循环重新输入                                                                           
        {                                                                               
                printf("输入有误, 请重新输入一个字母: \n");
                ch = getchar();
                fflush(stdin); //清除缓冲区
        }
        if( ch & 32 )   //如果是小写
        {
                ch = ch & 223;  // 第五位置0,变大写
        }
        else
        {
                ch = ch | 32;  // 第五位置1,变小写
        }
        putchar(ch);
        printf("\n");
}

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

使用道具 举报

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

这样可以,主要看判断是否为字母那里,看着ascii码表就知道怎么写了
#include <stdio.h>
#include <conio.h>
void main()
{
        char ch;
        printf("请输入一个字母: \n");
        ch = getchar();
       

        while( (ch<'A' || ch>'z')  || (ch > 'Z' && ch < 'a') )  
       {                                                                               
                printf("输入有误, 请重新输入一个字母: \n");
                ch = getchar();
        }
        if( ch & 32 )   
        {
                ch = ch & 223;  
        }
        else
        {
                ch = ch | 32; 
                        
        }
        putchar(ch);
        printf("\n");
}
想知道小甲鱼最近在做啥?请访问 -> 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 | 显示全部楼层
#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 20:54:23 | 显示全部楼层
while( (ch>'A' && ch<'z') && (ch > 'Z' && ch < 'a') )
//这样就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-1 15:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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