shell编程,输入一个字符串,判断是否是数字。

shell编程,输入一个字符串,判断是否是数字。,第1张

read a

if [[ $a =~ /\-[0-9][0-9]+/]] ; then

echo “$a is num”

fi

或:

|read -p "请输入一个字符串" str

if echo "$str"|shugrep "[a-zA-Z]" >/dev/null &&echo "$str"|grep "[0-9]" >/dev/null

then

echo "yes"

else

echo "no"

fi

扩展资料:

字符串在存储上类似字符数组,它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。

通常以串的整体作为 *** 作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

参考资料来源:百度百科-字符串

bool Check(char ch)

{

for(int i=0;i<strlen(ch);i++)

{

if(ch[i]<'('||ch[i]>'9')return false;//可以包括()+,-/0~9的符号,

if(ch[i]==','||ch[i]=='')return false;//如果不想要逗号和小数点,这句来处理

}

return true;

}

函数返回假为不符条件回真为符合条件自己看怎么用吧

#include

int

main

()

{

char

ch;

printf("输入一个字符:");

ch=getchar();

if(ch<32)

{

puts("这是一个控制字符");

}

else

if(ch>='0'

&&

ch<='9')

{

puts("这是一个数字字符");

}

else

if

(ch>'a'&&

ch<'z')

{

puts("

这是一个小写字母");

}

else

if

(ch>='A'

&&

ch<='Z')

{

puts("这是一个大写字母");

}

else

{

puts("这是一个其他字符");

}

return

0;

}

//直接编译连接就可以了。

下面的代码大致可以实现你想要的功能,主要借助

input

函数和

str2double来实现:

123456789101112clc;clear;%将键盘输入的转换为字符串格式储存x = input('请输入x的值:','s');%将字符串转换为double类型,转换不成功,则a为NaNa = str2double(x);%判断a是否为NaN,即可判断输入的是否为数字if isnan(a) == 1 disp('输入的不是数字');else disp('输入的是数字'); disp(['输入的数字为',num2str(a)]);end

在C语言中,可以使用标准库函数isdigit()来判断一个字符是否是数字字符。isdigit()函数接受一个字符作为参数,如果该字符是数字字符则返回非零值,否则返回0。

可以使用循环和isdigit()函数来遍历数字字符串中的每一个字符,并判断它是否为数字字符。如果不是数字字符,则可以将其下标保存到一个数组中,最后返回该数组即可。

以下是一个示例代码:

#include <stdioh>

#include <stringh>

#include <ctypeh>

int main() {

char str[] = "12345a6789b0c";

int len = strlen(str);

int index[len];

int count = 0;

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

if (!isdigit(str[i])) {

index[count] = i;

count++;

}

}

printf("Non-digit characters are at the following indexes: ");

for (int i = 0; i < count; i++) {

printf("%d ", index[i]);

}

return 0;

}

这段代码会遍历数字字符串str中的每一个字符,如果不是数字字符则将其下标保存到数组index中。最后,程序会输出所有非数字字符的下标。在这个例子中,输出结果为Non-digit characters are at the following indexes: 5 10 12,表示字符串中第6、第11和第13个字符不是数字字符。

#include<stdioh>

 

int main(void)

{

    int d = 0;   //大写个数

    int x = 0;   //小写个数

    int s = 0;   //数字个数

    char arr[] = {'中', 'a', 'b', 'c' , 'A', 'B', 'C', '0', '1', 'd', '国', 'z'};

    int len = sizeof(arr) / sizeof(arr[0]);

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

    {

        if(arr[i] <= 'z' && arr[i] >= 'a')

        {

            x = x +1;

        }

        else if(arr[i] <= 'Z' && arr[i] >= 'A')

        {

            d = d +1;

        }

        if(arr[i] <= '9' && arr[i] >= '0')

        {

            s = s +1;

        }

    }

 

    printf("大写个数 %d\n小写个数 %d\n 数字个数 %d\n 其他个数%d\n\n", d, x, s, len - d - x - s);

    return 0;

}

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

----------------------------------------------------------

#include

#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

4)

//长度超过4位,非法输入

{

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

continue;

}

flag=0;

for(i=0;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

评论

0

0

加载更多

以上就是关于shell编程,输入一个字符串,判断是否是数字。全部的内容,包括:shell编程,输入一个字符串,判断是否是数字。、C++:求判断语句,判断数组中有非数字或除+、-、*、/、(、)外其他字符,则输出错误式子、用C语言 写一个程序 判断输入的数字是否是数字字符 注意:区分数字字符等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10109368.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存