ZZULIOJ:1096: 水仙花数(函数专题)

题目描述

春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:

“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+33。

现在要求输出所有在m和n范围内的水仙花数。

要求程序定义一个narcissus()函数和一个main()函数,narcissus()函数判断一个整数n是否为水鲜花数,其余功能在main()函数中实现。

int narcissus(int n)

        {undefined

             //判断n是否为水仙花数, 若是函数返回1,否则返回0

         }

对于C/C++代码的提交,本题要求必须通过定义narcissus函数和main函数实现,否则,提交编译错误,要提交完整的程序。

输入

输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。

输出

对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;

如果给定的范围内不存在水仙花数,则输出no;

每个测试实例的输出占一行。

样例输入 Copy

100 120

300 380

样例输出 Copy

no

370 371

提示

在不知道m到n之间有多少个水仙花数的情况下,如何控制两个数之间有空格,而最后一个水仙花数之后没有空格?解决方法之一是:第一个水仙花数之前不加空格,而其后每个水仙花数之前加空格。而通过一个标识变量可以判断出是否是第一个水仙花数。

初做多实例测试,要注意变量赋初值的位置。

源代码

def huiwen(n):
    a=int(n//100)
    b=int((n-a*100)//10)
    c=int(n-a*100-b*10)
    if a*a*a+b*b*b+c*c*c==n:
        return 1
    else:
        return 0
while True:
    m,n=map(int,input().split())
    flag=0
    for i in range(m,n+1):
        if huiwen(i):
            flag=1
            print(str(i)+" ",end="")
    if flag==1:
        print("")
    if flag==0:
        print("no")

ZZULIOJ:1097: 计算平均成绩(函数专题)

题目描述

输入某位同学各门课的成绩,输出平均成绩。输入的成绩均为五级制成绩,五级制成绩转换为百分之成绩的规则如下:'A'转换为百分之成绩为95分,'B'对应85分,C对应75分,'D'对应65分,'E'对应40分。 输出的平均成绩为一个实数,保留1位小数。

要求程序定义一个getScore()函数和一个main()函数,getScore()函数返回一个等级对应的分数,其余功能在main()函数中实现。

int getScore(char g)

{

//把等级g转换成对应的分数并返回这个分数。

}

对于C/C++代码的提交,本题要求必须通过定义getScore函数和main函数实现,否则,提交编译错误,要提交完整的程序。

输入

输入为一行只包含'A'~'E'的字母,每个字母表示一门课的成绩,

输出

输出平均成绩,为一个实数,保留一位小数。

样例输入 Copy

AABB

样例输出 Copy

90.0

源代码

def Getscore(i):
    if i=="A":
        return 95
    elif i=="B":
        return 85
    elif i=="C":
        return 75
    elif i=="D":
        return 65
    elif i=="E":
        return 40
s=input()
lenth=int(len(s))
sum=0
for i in range(lenth):
    score=Getscore(s[i])
    sum=sum+score
aver=sum/lenth
print("%.1f"%aver)

ZZULIOJ:1098: 复合函数求值(函数专题)

题目描述

求复合函数F(G(x)),其中函数F(x)=|x-3|+|x+1|,函数G(x)=x^2-3x。要求编写函数funF()和funG()分别求F(x)和G(x),其余功能在main()中实现。

double funF(double x)

{

//函数返回F(x)的值;

}

double funG(double x)

{

//函数返回G(x)的值;

}

本题如果是C/C++代码提交,只需要提交funF和funG函数的定义部分,提交其它内容,编译出错。

输入

输入一个实数x。

输出

输出复合函数的值,结果保留2位小数。输出占一行。

样例输入 Copy

10.2

样例输出 Copy

144.88

源代码

import math
def funG(x):
    G=float(x*x-3*x)
    return funF(G)
def funF(x):
    F=float(math.fabs(x-3)+math.fabs(x+1))
    return F
x=float(input())
result=funG(x)
print("%.2f"%result)

ZZULIOJ:1099: 角谷猜想(多实例测试)

题目描述

任何一个自然数,如果是偶数,就除以2,如果是奇数,就乘以3再加1。最后,经过若干次迭代得到1。也就是说,不管怎样迭代,不断除以2以后,最后是1。现在给你一个自然数n,求出它转变为1所需要的步数。

输入

输入数据有多组,每组输入包含一个自然数n。测试数据保证输入数据及中间结果都在int范围内。

输出

对每组输入,输出经过角谷猜想变成1的步数。

样例输入 Copy

5

11

样例输出 Copy

5

14

源代码

def fun(n,num):
    if n!=1:
        if n%2==0:
            n=n//2
            num=num+1
            return fun(n,num)
        if n%2!=0:
            n=n*3+1
            num=num+1
            return fun(n,num)
    elif n==1:
        return num
while True:
    num=0
    n=int(input())
    sum=fun(n,num)
    print(sum)

ZZULIOJ:1100: 求组合数(函数专题)

题目描述

马上要举办新生程序设计竞赛了,与以往不同的是,本次比赛以班为单位,为了全面衡量一个班级的整体水平,要求从一个班的m位同学中任选k位同学代表本班参加比赛,问有多少种组合方案。在计算组合方案时会用到计算阶乘的运算,要求编写函数fact(),实现求一个数的阶乘功能,函数原型如下。

int fact(int n);//计算n的阶乘并返回

对于C/C++代码的提交,本题要求必须通过定义fact函数和main函数实现,否则,提交编译错误,要提交完整的程序。

输入

输入两个正整数m,k,k<=m<=12。

输出

输出一个整数,即组合方案数。

样例输入 Copy

5 3

样例输出 Copy

10

提示

求组合数公式是 m!/(k!(m-k)!)

源代码

def fact(n):
    mul=1
    for i in range(1,n+1):
        mul=mul*i
    return mul
m,k=map(int,input().split())
result=fact(m)//(fact(k)*fact(m-k))
print(result)