c中输入一字符串,判断是不是是由全数字或全字符还是混合字符组成的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c中输入一字符串,判断是不是是由全数字或全字符还是混合字符组成的?相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
void main()

char c;
int digit=0,num=0;
printf("请输入一字符串\n");
while((c=getchar())!='\n')

if(c>='0'&&c<='9')
digit++;
num++;

if(digit==num) printf("全部是数字\n");
else if(digit==0) printf("全部是字符\n");
else printf("数字和字符混合\n");
参考技术A #include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<conio.h>
#include<stdlib.h>

static int ch=0,num=0,sp=0,ot=0;
int main()

int i,j;
char p[100];
printf("输入字符串:\n");
gets(p);
j=strlen(p)-1;

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

if(isdigit(p[i])) num++;


if (num == j+1) printf("它全部是数字");
if (num < j+1) printf("它不全部是数字");

getch();
追问

你好!我的题目输出结果有三种:是不是全是数字;是不是全是字母或&#等字符;是不是数字和这些字符的混合。那么应该怎样编程?

追答

空格怎么算?

追问

空格不算的,不过你的编程也很不错!赞!

参考技术B #include
<stdio.h>
void
main()

char
c;
int
digit=0,num=0;
printf("请输入一字符串\n");
while((c=getchar())!='\n')

if(c>='0'&&c<='9')
digit++;
num++;

if(digit==num)
printf("全部是数字\n");
else
if(digit==0)
printf("全部是字符\n");
else
printf("数字和字符混合\n");

C语言中如何实现验证输入的是不是为数字?

isalpha isdigit isalnum 之类的函数就算了 行不通...

输入的数字可能为0~9999之间的数字,要判断输入的是否是这一范围的数还是其他字符
输入符合要求的进入下一语句
输入不符合的,给出提示,要求重新输入,直到输入正确为止
我知道这些函数包含在ctype.h里
另外,三楼的高手,你这个程序符合判定要求了,但如果输入的不是数字,输出ERROR以后不能再输入呀,然后再判断...直到输入正确为止
-----------------------
四楼大侠,用你的代码,比如随便输入dsk,不符合条件不能再次输入呀

先按字符串输入,然后对字符串进行检查,判定是否符合条件,若符合条件,则转为数值输出。代码如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int chk_data( char *num )

    int i;
    for( i=0;num[i];i++ )
    
        if ( num[i] >'9'|| num[i] <'0' ) //只要有非数字,就返回错误
            return 0;
    
    if ( i>4 ) //都是数字,但长度超过4位,返回错误
        return 0;
    return 1;


void main()

    char str[100];
    while ( 1 )
    
        printf("input :");
        scanf("%s", str );
        if ( chk_data( str )==0 )
        
            printf("输入数据错误,请重新输入!\\n");
        
        else
            break;
    
    printf("%d\\n", atoi(str) );

参考技术A 在头文件ctype.h中有很多验证变量的函数
所以你要验证字符的话要包含这个头文件 #include<ctype.h>

验证数字的函数是int isdigit(int c),C语言里面所区分大小写的.
下面我给一个例子
#include<ctype.h>
int main()

char *str = "2343#fd$%df34343dfsadkj";
int i;
for (i=0; str[i]!='\0'; i++)

if (isdigit(str[i]))

printf("%c is a digit\n", str[i]);


return 0;

参考技术B 那要看你的变量数据类型是什么?如果是字符型,那么可以用字符测试函数(就是你提到的这些),如果是数值数据类型,可以根据scanf()的返回值进行判断:

***********************************************

加一个循环不就可以了吗?如下:

//---------------------------------------------------------------------------

#include <stdio.h>

int main(void)

int a,fok=1;
do
if (scanf("%d",&a)&&a>=0&&a<10000) fok=0;
else puts("ERROR! re-input:\n");
fflush(stdin); /*清空缓冲区,避免遗留的字符影响后续的读取*/
while (fok);/*如果不满足要求,就重新输入*/

printf("%d\n",a);/*如果满足要求,就输出该数字*/
return 0;

//---------------------------------------------------------------------------
参考技术C LZ要在C中实现这个功能比较麻烦,需要首先要用字符型输入来判断,之后把字符型转化为整型,我写了一段代码,给LZ参考:
----------------------------------------------------------
#include <stdio.h>

#define MAX 100 //最大输入长度为100

int CharToInt(char *a,int l); //把字符型转化为int型
int Ten(int k); //10的k次幂

int main()

char a[MAX];
int b; //最终输入的整数存放在b中
int i,l,flag;
while(1) //输入

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

scanf("%c",&a[i]);
if(a[i]=='\n')
break;


l=i;

if(l>4) //长度超过4位,非法输入

printf("输入非法,请重新输入\n");
continue;

flag=0;
for(i=0;i<l;i++) //判断每个字符是否在0~9之间

if(a[i]<'0' || a[i]>'9')

flag=1;
break;


if(flag==1) //其中有一个不在,则输入非法

printf("输入非法,请重新输入\n");
continue;

break;

b=CharToInt(a,l); //把字符型转化为int型

//继续执行下面程序

return 0;


int CharToInt(char *a,int l)

int i=0;
int b=0;
for(i=l-1;i>=0;i--)

b+=(a[i]-'0')*Ten(i);

return b;


int Ten(int k)

int i=0;
int b=1;
for(i=0;i<k;i++)

b*=10;

return b;

----------------------------------------------------------------
可以再次输入啊~~我试了dsk可以的本回答被提问者采纳
参考技术D c标准函数库里面提供了一个叫做isdigit的函数就可以用来了,使用前必须包含头文件ctype.h

以上是关于c中输入一字符串,判断是不是是由全数字或全字符还是混合字符组成的?的主要内容,如果未能解决你的问题,请参考以下文章

字符型怎么判断是否数字和字母?

怎么判断一个字符是否数字字符?

c判断是不是为数字

c语言 输入一个字符,判断是字母,数字,还是特殊字符?

c语言判断输入的是不是是数字(不止一位)

如何判断一个字符是数字还是字母