Shell学习 - 2.25 Shell $[]:对整数进行数学运算

本文介绍了Shell编程中的$[]运算符,用于对整数表达式进行计算,并说明了如何使用变量、赋值以及正确格式的使用示例。特别强调了$[]不能单独使用,必须有接收计算结果的上下文。

和 (())、let 命令类似,$[] 也只能进行整数运算。

Shell $[] 的用法如下:

$[表达式]

$[] 会对表达式进行计算,并取得计算结果。如果表达式中包含了变量,那么你可以加$,也可以不加。

Shell $[] 举例:

[c.biancheng.net]$ echo $[3*5]  #直接输出结算结果

15

[c.biancheng.net]$ echo $[(3+4)*5]  #使用()

35

[c.biancheng.net]$ n=6

[c.biancheng.net]$ m=$[n*2]  #将计算结果赋值给变量

[c.biancheng.net]$ echo $[m+n]

18

[c.biancheng.net]$ echo $[$m*$n]  #在变量前边加$也是可以的

72

[c.biancheng.net]$ echo $[4*(m+n)]

72

需要注意的是,不能单独使用 $[],必须能够接收 $[] 的计算结果。例如,下面的用法是错误的:

[c.biancheng.net]$ $[3+4]

bash: 7: 未找到命令...

[c.biancheng.net]$ $[m+3]

bash: 15: 未找到命令...

参考:

Shell $[]:对整数进行数学运算 (biancheng.net)

#include <stdio.h> #include <string.h> #include <stdlib.h> char input[501]; char s[501][501] = {{0}}; int main() { while (fgets(input, sizeof(input), stdin) != NULL) { size_t len = strlen(input); if (len > 0 && input[len-1] == '\n') { input[--len] = '\0'; } for (int j = 0; j< len; j++) { strcpy(s[j], input + j); } } return 0; } 在保持这串代码不变的情况下,续写代码,使其符合题意: 题目描述 AN-94 想要带着 AK-12 和指挥官你征战 XCPC。而现在,她正在学习后缀数组(Suffix Array,SA)。 由于她还是小白,因此她系统性学习了如下定义: 一个字符串 A 是另一个字符串 B 的后缀,当且仅当将 B 开头的若干字符删去后能得到 A 。例如:aba 是 ababa 的后缀,因为 ababa 删去开头的两个字符后可以得到 aba ;而 aba 不是 ababc 的后缀,因为无论删去 ababc 开头的多少个字符,都无法得到 aba 。特别地,空串是所有字符串的后缀,不过一般不讨论,下文中所有后缀均指非空后缀。 对于字符串 A ,其以第 i 个字符开始的后缀编号为 i 。例如,对于字符串 aba ,编号为 1 的后缀为 aba ,编号为 2 的后缀为 ba , 编号为 3 的后缀为 a 。 后缀数组一般直接指 sa 数组,其第 i 项 sai 表示将所有后缀按照字典序大小排序后第 i 小的后缀的编号。 AN-94 觉得定义好复杂,不过她还是基本看懂了。她想让指挥官你写一个简单的程序来求出 sa 数组来帮助她加深理解。你能帮助她吗? 输入 输入一行一个字符串 s ,其长度 n 满足 n 为正整数且 1≤n≤500 ,保证 s 仅由小写字母组成。 输出 输出一行 n 个正整数,分别表示 sa 数组的第 1∼n 项,以空格隔开。 输入样例 1 ababa 输出样例 1 5 3 1 4 2 样例解释 1 ababa 编号为 1 的后缀为 ababa ,编号为 2 的后缀为 baba ,编号为 3 的后缀为 aba ,编号为 4 的后缀为 ba ,编号为 5 的后缀为 a 。 将它们按照字典序从小到大排序后为:a,aba,ababa,ba,baba ,对应的编号即为 5,3,1,4,2
最新发布
10-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜流冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值