num1 num2&qu"og:type" content="webpage"> num1 num2&qu" /> num1 num2&qu"> 在Linux *** 作系统中设计一个shell程序,比较三个整数的大小,并输出最小值?_系统运维_内存溢出

阅读 8

在Linux *** 作系统中设计一个shell程序,比较三个整数的大小,并输出最小值?,第1张

我分享一个2个数字的SHELL 你可以举一反三《Linux就该这么学》中有个Linux命令大全

#1.判断是不是两个数

[ $# -ne 2 ] &&{

echo "Usage:$0 num1 num2"

exit 1

}

#2.判断是否为数字

expr $1 + $2 + 999 &>/dev/null

[ $? -ne 0 ] &&{ echo "请输入两个整数

"

exit 2

}

if [ $1 -gt $2 ]

then

echo "$1>$2"

elif [ $1 -lt $2 ]

then

echo "$1<$2"

else

echo "$1=$2"

fi

========================

read -p "please two number: " a b

expr $a + $b + 999 &>/dev/null

if [ $? -ne 0 ]

then

echo "请输入两个整数"

exit 1

else

if [ $a -gt $b ]

then

echo "$a>$b"

elif [ $a -lt $b ]

then

echo "$a<$b"

else

echo "$a=$b"

fi

fiLinux环境下,C语言中整数类型最长的是long long类型,占8个字节,即使如此,其能表示的数仍是有限的。如果想要实现更大的整数相加或其他运算,就不能只用long long类型或者普通整型。我们可以使用字符来表示整数,可以由我们规定位数,这样就可以实现更大的(某种意义上的任意长)整数相加减。在这里,我使用

字符

串实现的是两个任意长整数相加。由于是使用的字符串,需要考虑的情况很多。下面我罗列几个需要注意的点:

1、输入的问题:

使用的输入方法不同,需要注意的点也不同。若是使用scanf("%s",str),需要考虑字符数组的大小,但使用这个函数有个缺点,如果无意输入了空格,由于该函数不读空格,检测不出这个错误。我使用的是fgets(str,SIZE,stdin)函数,需要注意的是,若是输入的字符串长度(不包括回车)小于SIZE-1,则会将回车符读入,需要去掉回车符;若是输入的字符串长度(不包括回车)等于或大于SIZE-1,多余的字符(包括回车)不会读入,但是会留在缓冲区,输入下一个字符串时,会直接将这些字符读入,所以要先清空缓冲区(再用fgets读一下)。

2、是否是数字:

在字符串读取后,需要判断每一个字符是否是数字字符或者'\0',不是的话就要报错。

3、对齐的问题:

我们进行整数加法是最低位对齐的,从最低位开始计算,但是我们输入字符数字后,字符串是从最高位对齐的。所以解决的办法可以将两个字符串逆序,计算后将结果逆序回来。

4、进位的问题:

进行正常的整数加法不需要我们考虑进位问题,计算机会给我们解决。但是使用字符串计算就需要考虑这个问题了,当两个数相加后(这里还要考虑一个问题就是不能直接字符相加,需要减掉一个字符0),大于字符9,就要进位,下一位计算时要考虑前一位是否进位过来。(当两个字符串不等长时,不等长的部分相加不需要减字符0)最后还要考虑最高位的问题,如果有进位,长度会加1,要处理一下以保证正常输出。

其他的一下细节大家细心一点就行,下面是我实现的具体代码:

————————————————

版权声明:本文为CSDN博主「不落风渊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。


原文链接:https://blog.csdn.net/m0_38001783/article/details/77334301

欢迎分享,转载请注明来源:

内存溢出

原文地址:

http://outofmemory.cn/yw/8521580.html
相加
(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
本机ip地址 本机ip地址 一级用户组
如何在自己的linux服务器上搭建网站
上一篇
2023-04-17
linux awk命令详解
2023-04-17

发表评论
请登录后评论... 登录
提交

    评论列表(0条)
保存
{label} {label} num1 num2&qu', author : '本机ip地址', cat_name : '系统运维', time_y_m : '2023年04月', time_d : '17', site_motto : '内存溢出' }; {script} {script}