bin554385863 发表于 2019-5-6 17:05:06

字母大小写转换和其他字符原样输出

/*从键盘输入字符,如果是小写字母则输出大写,如果是大写字符则输出小写,其他字符原样输出*/
#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试了一个遍达不到目的,应该怎么弄才能行?大小写转换和其他字符输出都没问题.

Croper 发表于 2019-5-6 18:16:48

你写的啥啊,判断连if都没有判断个毛线啊
#include <stdio.h>

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

int main(){
        char sz;
        printf("请输入一个字符串:");
        scanf("%s",sz);
        swapcase(sz);
        printf("%s\n",sz);
       
}

bin554385863 发表于 2019-5-6 19:09:05

本帖最后由 bin554385863 于 2019-5-6 19:10 编辑

Croper 发表于 2019-5-6 18:16
你写的啥啊,判断连if都没有判断个毛线啊

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

我的意思是,只能输入单个字符,输入多个字符就用printf()提示非法

Croper 发表于 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);
}

bin554385863 发表于 2019-5-6 19:24:34

多谢
页: [1]
查看完整版本: 字母大小写转换和其他字符原样输出