我正在尝试打印小于用户输入数字的平方数。如果数字大于 1000,则会显示一条错误消息。我的代码遇到的问题是 wile 循环似乎有语法错误,但多次尝试后我找不到语法错误。
这是我的代码的样子:
#! /bin/csh -f
set Square = 0
echo "Please enter a number smaller than 1000"
set num = $<
if ($num > 1000) then
echo "The number is invalid"
exit 1
else
echo "Square number for 1 to $num"
set i = 1
while ($i <= num)
set Square = `$i * $i`
echo $Square
@ i++
end
endif
如果我输入一个像 455 这样的虚拟数字。
Error:
455
Square number for 1 to 455
while: Expression Syntax.
使用
expr
应该解决这个问题,以及添加一个$
到num
:
1 #! /bin/csh -f
2
3 set Square = 0
4
5 echo "Please enter a number smaller than 1000"
6 set num = $<
7 if ($num > 1000) then
8 echo "The number is invalid"
9 exit 1
10 else
11 echo "Square number for 1 to $num"
12 set i = 1
13 while ( $i <= $num )
14 set Square = `expr $i \* $i`
15 echo $Square
16 @ i++
17 end
18 endif
你的剧本有几个问题
您正在尝试将
$i
与 num
(字符串)进行比较,而不是与 $num
进行比较。
您可以使用
@
来评估算术表达式,例如@ x = 2 + 2
将$x
设置为4
;应用它留作练习。用反引号括住算术表达式是行不通的;它尝试将包含的文本作为命令执行,并扩展为命令的输出。
您的循环条件不正确。如果用户输入
500
,您将打印 500 行输出。
(csh 不是一种好的编程语言。考虑学习 sh 或其亲戚之一,例如 ksh、bash 或 zsh。)