用Linux写一个辨别水仙花数的脚本
时间: 2024-03-01 22:55:00 浏览: 201
好的,以下是一个辨别水仙花数的Shell脚本:
```
#!/bin/bash
echo "请输入一个正整数:"
read num
# 检查输入是否为正整数
if ! [[ "$num" =~ ^[1-9][0-9]*$ ]]; then
echo "输入的不是正整数!"
exit 1
fi
# 计算每一位的立方和
sum=0
while [ "$num" -gt 0 ]; do
digit=$(($num % 10))
sum=$(($sum + $digit * $digit * $digit))
num=$(($num / 10))
done
# 判断是否为水仙花数
if [ "$sum" -eq "$1" ]; then
echo "这是一个水仙花数!"
else
echo "这不是一个水仙花数!"
fi
exit 0
```
使用方法:
1. 将上面的代码保存为一个文件,例如`narcissus.sh`。
2. 给文件添加执行权限:
```
chmod +x narcissus.sh
```
3. 运行脚本:
```
./narcissus.sh
```
4. 输入一个正整数,脚本会判断该数是否为水仙花数,并输出结果。
相关问题
用c语言实现在窗体上以每行两个数的格式输出所有的 “水仙花数”。所谓 “水仙花数” 是指一个三位数,其各位数字的立方和等于该数本身。(提示:首先分离出每位数字)
在C语言中,要在窗体上显示所有满足条件的“水仙花数”,你需要遍历3位数范围内的每一个数,然后分离并计算每一位的立方和。如果这个和等于原始数本身,那么就把它打印出来,并以每行两个数的形式展示。以下是简单的步骤和示例代码:
```c
#include <stdio.h>
#include <stdbool.h>
// 辨别是否为水仙花数的函数
bool isArmstrong(int num) {
int digits[4], sum = 0;
bool hasThreeDigits = false;
// 分离每一位数字
while (num > 0) {
digits[hasThreeDigits] = num % 10; // 取余得到最后一位
num /= 10;
if (!hasThreeDigits++) { // 如果还没满3位,将计数器置1
sum += digits[hasThreeDigits - 1];
} else {
// 对于3位以上的数字,直接忽略
break;
}
}
// 检查各位立方和是否等于原数
return sum == digits[0]*digits[0]*digits[0] + digits[1]*digits[1]*digits[1] + digits[2]*digits[2]*digits[2];
}
int main() {
for (int i = 100; i <= 999; i++) {
if (isArmstrong(i)) {
printf("%d ", i); // 输出水仙花数
if ((i+1) % 2 == 0) { // 打印完一个数后,若下一个数能对2取整,则换行
printf("\n");
}
}
}
return 0;
}
使用vmware编写一个简单的脚本读取位置变量和特殊变量,从脚本里能够分辨出是自己写的脚本,比如有自己的姓名缩写。
在VMware环境中,你可以使用PowerShell或AutoIt等脚本语言编写一个简单的批处理脚本来完成这个任务。这里我们以PowerShell为例:
```powershell
# 创建一个名为GetInfo.ps1的脚本文件
# 内容如下:
$MyName = "YourNameAbbreviation" # 替换为你的姓名缩写
function Get-ScriptInfo {
param(
[string]$PositionVariable,
[hashtable]$SpecialVariables
)
# 检查$PositionVariable是否为空
if ($PositionVariable -Host "未提供位置变量!"
} else {
Write-Host "位置变量: $PositionVariable"
}
# 检查$SpecialVariables是否存在"MyName"键
if ($SpecialVariables.ContainsKey('MyName')) {
Write-Host "发现特殊变量: MyName = $($SpecialVariables['MyName']) (你的姓名缩写)"
} else {
Write-Host "未找到特殊变量'MyName'"
}
}
# 调用函数并传入位置变量和特殊变量字面量或从环境变量获取
$positionVar = Read-Host "请输入位置变量:"
$specialVars = @{ 'MyName' = $MyName }
Get-ScriptInfo -PositionVariable $positionVar -SpecialVariables $specialVars
#
阅读全文