C语言用switch实现从键盘输入一个字符,判断是数字还是其它?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言用switch实现从键盘输入一个字符,判断是数字还是其它?相关的知识,希望对你有一定的参考价值。

参考技术A 使用switch判断比较麻烦,不建议使用这种方式。 char ch; // scanf ch switch(ch) case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': printf("%c is a number.\n", ch); break; case 'a': case 'b': .... case 'z': printf("%c is a lower alphabet.\n",ch); break; case 'A': ... case 'Z': printf("%c is a upper alphabet.\n",ch); break; default: printf("%c is other ascII code.\n",ch);
建议使用#include <ctype.h>中的函数

isdigit

islower

isupper

来进行判断。
参考技术B

没必要用switch……直接和'0'与'9'比较好得多。

用switch的做法:

    unsigned char ch = getchar();

    switch(ch)

    case '0': case '1': case '2': case '3': case '4':

    case '5': case '6': case '7': case '8': case '9':

    return true;

    default:

    return false;

更好的做法:

    unsigned char ch = getchar();

    return (ch >= '0' && ch <= '9') ? true : false;

c语言--键盘输入数字,输出汉字读法

例如:我输入4561。要求输出四千五百六十一
输入254。要求输出二百五十四
输入40001,输出四万零一
输入数字w,0<w<=99999999

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *change(char ch)

static char shu[3];
memset(shu, 0, 3);
switch(ch)

case '1':strcpy(shu,"一");break;
case '2':strcpy(shu,"二");break;
case '3':strcpy(shu,"三");break;
case '4':strcpy(shu,"四");break;
case '5':strcpy(shu,"五");break;
case '6':strcpy(shu,"六");break;
case '7':strcpy(shu,"七");break;
case '8':strcpy(shu,"八");break;
case '9':strcpy(shu,"九");break;
case '0':strcpy(shu,"零");break;
default:printf("输入有误!");exit(0);

return shu;


char *func(char *s, int len)

int i, j;
char *dest;
char *shu;
char *wei[4]="千","百","十","";

dest = (char *)malloc(64);
memset(dest, 0, 64);
switch(len)

case 1:j=3;break;
case 2:j=2;break;
case 3:j=1;break;
case 4:j=0;break;

for(i=0;i<len;i++)

shu = change(*(s+i));
if( !(i>0&&*(s+i-1)=='0'&&*(s+i)=='0') )

strcat(dest, shu);
if(*(s+i)!='0')
strcat(dest, wei[j+i]);


if( (strlen(dest)>2) && (strcmp(shu,"零")==0) )dest[strlen(dest)-2]='\0';
return dest;


int main()

int len;
char num[10];
char *hanzi, *tmp;

hanzi = (char *)malloc(64);
tmp = (char *)malloc(32);

printf("输入数字,1~99999999:");
gets(num);
len = strlen(num);
memset(hanzi, 0, 64);
memset(tmp, 0, 32);
if(len>4)

hanzi = func(num, len-4);
strcat(hanzi, "万");
tmp = func(num+len-4, 4);
if(strcmp(tmp, "零")!=0)
strcat(hanzi, tmp);

else hanzi = func(num, len);
printf("汉字读法:");
puts(hanzi);

free(hanzi);
free(tmp);
return 0;
参考技术A 用数组把没位上的数字都保存下来,在写个循环用switch语句进行转换就可以了,这个没有什么难度的

以上是关于C语言用switch实现从键盘输入一个字符,判断是数字还是其它?的主要内容,如果未能解决你的问题,请参考以下文章

用c语言从键盘输入两个数字,判断哪个数更大?

用java编写实现从键盘输入一个字符串,判断其是不是为浮点数?

用c语言编写从键盘输入一个数,判断是不是在数组a里(1~10的整数)

c语言 从键盘上任意输入一个字符(字母大小写,数字,控制字符和其他字符)判断所属字符类型,只发

用c语言写一个函数,从键盘得到整行的输入.

C++怎么用switch语句判断输入的字符