
#include <math.h>
void main() {
int N=3 //水仙数的位数
int i,sum=0
for(i=100i<1000i++){
int m=i
sum=0
while(m>0)
{
int temp=1
int count=N
while(count--) temp*=(m%10)
sum+=temp
m/=10
}
if(sum==i) printf("%d\n",i)
}
}
//编译:gcc Daffodil_number.c -o daffodil
//执行:./daffodil
bash 求1000以内水仙花数#!/bin/bash
for (( a=1a<10a++ ))
do
for (( b=0b<10b++ ))
do
for (( c=0c<10c++ ))
do
number1=$((a*100+b*10+c))
number2=$((a**3+b**3+c**3))
if [ $number1 -eq $number2 ]then
echo "Found number $number1"
fi
done
done
done
bash判断成绩,你的意思是要判断是否及格吗?下面的程序分别判断是小于60,大于60,满分(100),或者是无效输入。将下面的程序存入文件中,比如 my.sh, 然后用 my.sh 85 的方法来判断85分属于什么区间。
#!/bin/bash
case $1 in
[0-9]|[0-5][0-9]) echo "less than 60"
100) echo "full score"
[6-9][0-9]) echo "more than 60"
*) echo "Invalid score $1"
esac
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。
函数接口定义:
int narcissistic(int number)
void PrintN(int m,int n)
函数narcissistic判断number是否为水仙花数,是则返回1,否则返回0。
函数PrintN则打印开区间(m,n)内所有的水仙花数,每个数字占一行。题目保证100≤m≤n≤10000。
例:
#include&ltstdio.h&gt
int narcissistic(int number)
void PrintN(int m,int n)
int main()
{
int m,n
scanf("%d%d",&m,&n)
if(narcissistic(m))printf("%d is a narcissistic number\n",m)
PrintN(m,n)
if(narcissistic(n))printf("%d is a narcissistic number\n",n)
return 0
}
运行:
扩展资料:方法一、
#include&ltstdio.h&gt
int narcissistic(int number)
void PrintN(int m,int n)
int main(){
int m,n
scanf("%d%d",&m,&n)
if(narcissistic(m))printf("%d is a narcissistic number\n",m)
PrintN(m,n)
if(narcissistic(n))printf("%d is a narcissistic number\n",n)
return 0
}
int narcissistic(int number){
int count,digit,item,n,sum,ret,k,i
n=number,count=0
while(n){//算出number是几位数。
n/=10
count++
}
sum=0,n=number
while(n){
digit=n%10
item=1
for(i=0i&ltcounti++)
item*=digit
sum+=item
n/=10
}
if(sum==number)ret=1
else ret=0
return ret
}
void PrintN(int m,int n){
int i
for(i=m+1i&ltni++)
if(narcissistic(i))printf("%d\n",i)
}
方法二:
int narcissistic(int number){
int count,sum,temp,ret
count=0,temp=number
while(temp){
count++
temp/=10
}
sum=0,temp=number
while(temp){
sum+=pow(temp%10,count)
temp/=10
}
if(sum==number)ret=1
else ret=0
return ret
}
void PrintN(int m,int n){
int i
for(i=m+1i&ltni++)
if(narcissistic(i))printf("%d\n",i)
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)