写一个c程序,使用switch case来判断一个字符是元音还是辅音

nkhmeac6  于 2023-11-16  发布在  其他
关注(0)|答案(5)|浏览(126)
include
include
void main() {

    char ch;
    clrscr();
    printf("Enter a character:");
    scanf("%c",&ch);
    switch(ch) {
        case 'a': case 'A': case 'e': case 'E': case 'i': case'I': case'o': case'O': case'u': case'U':
            printf("Vowel");
            break;
        default:
            printf("Consonant");
            getch();
    }

字符串
还给予一个特性,如果我们给予输入数字或一些特殊字符,如@,#等,它应该显示无效而不是辅音。

xtupzzrd

xtupzzrd1#

一个选项是strchr,它查找字符串中出现的特定字符,并且被认为优化得很好。

bool isvowel (char ch)
{
  return strchr("aeiou", tolower(ch)) != NULL;
}

字符串
就这样。完整的例子:

#include <stdbool.h>
#include <string.h>
#include <ctype.h>
#include <stdio.h>

bool isvowel (char ch)
{
  return strchr("aeiou", tolower(ch)) != NULL;
}

int main (void)
{
  for(unsigned char i='A'; i<='Z'; i++)
  {
    char ch = (char)i;
    printf("%c: %s\n", ch, isvowel(ch) ? "vowel" : "consonant");
  }
}

8mmmxcuj

8mmmxcuj2#

#include<stdio.h>
#include<conio.h>
void main()
{
char ch;
printf("Enter a character:");
scanf("%c",&ch);
if((ch >= 65 && ch <= 90)||(ch >= 97 && ch <= 122))
        switch(ch)
        {
            case 'a':
            case 'A':
            case 'e':
            case 'E':
            case 'i':
            case'I':
            case'o':
            case'O':
            case'u':
            case'U':
                printf("Vowel");
                break;
            default:
                printf("Consonant");
        }

else
        printf("Invalid");
 }

字符串
在这里,我使用了ASCII的概念。参考这里的ASCII值。

a64a0gku

a64a0gku3#

如果你要做这个练习,使用switch()是很容易的,没有什么可以阻止你开发一个自定义版本的<ctype.h>函数来满足你的需要。
下面是一个包含7位ASCII范围的128个字符的表。该表中的每个条目都分配了一个字母,以标识ASCII表中该位置的字符类型。示例字符串的翻译(如下所示)显示了功能。

#include <stdio.h>

void tx( char *cp ) {
    const char tbl[] =
        "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        "Spppppppbbppppppddddddddddpppppp"
        "pVCCCVCCCVCCCCCVCCCCCVCCCCCbpbpp"
        "pvcccvcccvcccccvcccccvcccccbpbpp" ;

    puts( cp );
    while( *cp )
        putchar( tbl[ *cp++] );
    puts( "\n" );
}

int main( void ) {
    char *smpl[] = {
        "ABCDEFGHIJKLM01234NOPQRSTUVWXYZ(,=$)",
        "abcdefghijklm56789nopqrstuvwxyz[,=$]",
        "Twas BRILLIG, & the Slithey toves did\t...",
        NULL,
    };

    for( char **ps = smpl; *ps; ) tx( *ps++ );

    puts(
        "Legend:\n"
        "\tX - control char\n"
        "\tS - SP(ace)\n"
        "\tp - punctuation\n"
        "\tb - bracket/brace\n"
        "\tC - consonant\n"
        "\tV - vowel\n"
    );

    return 0;
}

字符串
输出量:

ABCDEFGHIJKLM01234NOPQRSTUVWXYZ(,=$)
VCCCVCCCVCCCCdddddCVCCCCCVCCCCCbpppb

abcdefghijklm56789nopqrstuvwxyz[,=$]
vcccvcccvccccdddddcvcccccvcccccbpppb

Twas BRILLIG, & the Slithey toves did   ...
CcvcSCCVCCVCpSpSccvSCcvccvcScvcvcScvcXppp

Legend:
        X - control char
        S - SP(ace)
        p - punctuation
        b - bracket/brace
        C - consonant
        V - vowel

apeeds0o

apeeds0o4#

#include <stdio.h>
void main()
{
char ch;
int a;
printf("Enter a character: ");
scanf("%c",&ch);
a=ch;                   // Here im converting the character into its ascii form 
if (a >= 65 && a <= 90)
a=a+32;                     /* upper case into lowercase by adding 32 to it*/
ch=a;
if(a >= 97 && a <= 122)
    switch(ch)
    {
        case 'a':
        case 'e':                                  
        case 'i':
        case 'o':
        case 'u':
            printf("\nThe given character is a Vowel");
        break;
        default:
            printf("\nThe given character is a Consonant");
    }

else
        printf("Invalid Input");                     
}

字符串

s71maibg

s71maibg5#

你可以使用isalpha()来判断一个字符是否是字母,你可以通过使用tolower()将字符转换为字符串来减少case语句的数量,这使得代码更简单,你不太可能错过一些东西。

if(isalpha(ch)) {
    switch(tolower(ch)) {
        case 'a':
        case 'e':
        case 'i':
        case 'o':
        case 'u':
            printf("Vowel");
            break;
        default:
            printf("Consonant");
        break;
    }
} else {
    printf("Invalid");
}

字符串

相关问题