鱼C论坛

 找回密码
 立即注册
查看: 1865|回复: 4

[已解决]字母大小写转换和其他字符原样输出

[复制链接]
发表于 2019-5-6 17:05:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
/*从键盘输入字符,如果是小写字母则输出大写,如果是大写字符则输出小写,其他字符原样输出*/
#include<stdio.h>
#include<conio.h>
void main()
{
    char ch1;
    int i, j;
    printf("请输入一个字符\n");
    ch1 = getchar();
    for (j = 0, i = 0; i <= 127; i++)
    {
        ch1 % i == 1;//判断ch1是不是ASC表中的字符
        j++;//如果是则j+1
    }
    switch (!j)
    {
    case 1:
        printf("请输入合法字符");//输入两个以上的字符或者两位以上的数字都是非法
        break;
    case 0:
        if (ch1 >= 'A' && ch1 <= 'Z')
        {
            printf("%c", ch1 + 32);
        }
        if (ch1 >= 'a' && ch1 <= 'z')
        {
            printf("%c", ch1 - 32);
        }
        else
        {
            printf("%c", ch1);
        }
        break;
    default:
        break;
    }

}
-------------------------------------------------------------------------------------------------------------------------------                                               > & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-r4r40wf4.25g' '--stdout=Microsoft-MIEngine-Out-zfhvdinq.ox2' '--stderr=Microsoft-MIEngine-Error-hgr1ab3a.b1s' '--pid=Microsoft-MIEngine-Pid-xydurwov.uzw' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入一个字符
999
9
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-wiasmjlj.kor' '--stdout=Microsoft-MIEngine-Out-b1o45snm.z4p' '--stderr=Microsoft-MIEngine-Error-0zciin00.mab' '--pid=Microsoft-MIEngine-Pid-0fetw0nt.fyf' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入一个字符
h
H
PS E:\Administrator\Documents\Visual Studio 2019>
========================================================================================
我的目的是当输入两个以上的字符时,提示非法输入,if-else,for试了一个遍达不到目的,应该怎么弄才能行?大小写转换和其他字符输出都没问题.
最佳答案
2019-5-6 19:21:36
int main(){
         char c=getchar();
         int flg=0;
         if (getchar()!='\n')
                 flg=1;
         if (c<0 || c>127)  
                 flg=1;  //在中文环境下,这一句是不需要的
         if (flg){
                 printf("请输入合法字符"); 
                 return; 
        }
        if (isalpha(c)) c^=32;
        printf("%c",c);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-6 18:16:48 | 显示全部楼层
你写的啥啊,判断连if都没有判断个毛线啊
#include <stdio.h>

char* swapcase(char* sz){
        int i;
        for (i=0;sz[i]!='\0';++i){
                if (isalpha(sz[i])){
                        sz[i]^=32;
                }
        }
        return sz;
} 

int main(){
        char sz[256];
        printf("请输入一个字符串:");
        scanf("%s",sz);
        swapcase(sz);
        printf("%s\n",sz);
        
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-6 19:09:05 | 显示全部楼层
本帖最后由 bin554385863 于 2019-5-6 19:10 编辑
Croper 发表于 2019-5-6 18:16
你写的啥啊,判断连if都没有判断个毛线啊


.........
大哥
我才学到循环语句这一块.数组都还没到,
指针更别说了

我的意思是,只能输入单个字符,输入多个字符就用printf()提示非法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-6 19:21:36 | 显示全部楼层    本楼为最佳答案   
int main(){
         char c=getchar();
         int flg=0;
         if (getchar()!='\n')
                 flg=1;
         if (c<0 || c>127)  
                 flg=1;  //在中文环境下,这一句是不需要的
         if (flg){
                 printf("请输入合法字符"); 
                 return; 
        }
        if (isalpha(c)) c^=32;
        printf("%c",c);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-6 19:24:34 From FishC Mobile | 显示全部楼层
多谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 04:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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