ZZUIL题解1091-1100

本文集合了一系列编程题目,涉及函数的应用,如计算阶乘、判断素数、验证哥德巴赫猜想、统计元音字母、计算时间间隔、找出水仙花数、计算平均成绩、求复合函数值以及角谷猜想。每个题目都需要定义特定的函数来解决问题,例如prime()用于判断素数,narcissus()用于判断水仙花数,funF()和funG()用于复合函数等。这些题目旨在考察和提升编程者在数值计算、数论和算法设计上的能力。
摘要由CSDN通过智能技术生成

1091: 童年生活二三事(多实例测试)

1092: 素数表(函数专题)

1093: 验证哥德巴赫猜想(函数专题)

1094: 统计元音(函数专题)

1095: 时间间隔(函数专题)

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

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

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

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

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

1091: 童年生活二三事(多实例测试)

题目描述

Redraiment小时候走路喜欢蹦蹦跳跳,他最喜欢在楼梯上跳来跳去。 但年幼的他一次只能走上一阶或者一下子蹦上两阶。 现在一共有N阶台阶,请你计算一下Redraiment从第0阶到第N阶共有几种走法。

输入

输入包括多组数据。 每组数据包括一行:N(1≤N≤40)。 输入以0结束

输出

对应每个输入包括一个输出。 为redraiment到达第n阶不同走法的数量。

样例输入 Copy

1
3
0

样例输出 Copy

1
3

来源/分类

AC代码:

#include<stdio.h>
int main()
{
    int i,n,a[45];
    a[1]=1;
    a[2]=2;
    for(i=3; i<=40; i++)
      a[i]=a[i-1]+a[i-2];
    while(scanf("%d", &n)){
        if(n==0)
         break;
        printf("%d\n", a[n]);
     
    }
    return 0;
}

1092: 素数表(函数专题)

题目描述

输入两个正整数m和n,输出m和n之间的所有素数。
要求程序定义一个prime()函数和一个main()函数,prime()函数判断一个整数n是否是素数,其余功能在main()函数中实现。
int prime(int n)
{
//判断n是否为素数, 若n为素数,本函数返回1,否则返回0
}
对于C/C++代码的提交,本题要求必须通过定义prime函数和main函数实现,否则,提交编译错误,要提交完整的程序。

输入

输入两个正整数m和n,m<=n,且都在int范围内。

输出

输出占一行。输出m和n之间的所有素数,每个数后有一个空格。测试数据保证m到n之间一定有素数。

样例输入 Copy

2 6

样例输出 Copy

2 3 5

来源/分类
*
AC代码:

#include<stdio.h>
#include<math.h>
int prime(int n){
    int i,k=(int)sqrt(n);
    if(n==1)
        return 0;
    for(i=2; i<=k; i++){
        if(n%i==0)
            return 0; 
    }
    return 1;
}
int main()
{
    int i,a,b;
    scanf("%d%d", &a,&b);
    for(i=a; i<=b; i++){
        if(prime(i))
            printf("%d ", i);
    }

1093: 验证哥德巴赫猜想(函数专题)

题目描述

哥德巴赫猜想大家都知道一点吧。我们现在不是想证明这个结论,而是对于任给的一个不小于6的偶数,来寻找和等于该偶数的所有素数对。做好了这件实事,就能说明这个猜想是成立的。
要求程序定义一个prime()函数和一个main()函数,prime()函数判断一个整数n是否是素数,其余功能在main()函数中实现。
int prime(int n)
{
//判断n是否为素数, 若n为素数,本函数返回1,否则返回0
}
对于C/C++代码的提交,本题要求必须通过定义prime函数和main函数实现,否则,提交编译错误,要提交完整的程序。

输入

一个偶数M (M是6到1000000之间的一个偶数).

输出

输出和等于该偶数的所有素数对a和b,按a递增的顺序输出,(a,b)和(b,a)被视为同一个素数对。

样例输入 Copy

40

样例输出 Copy

3 37
11 29
17 23

来源/分类
**

#include<stdio.h>
#include<math.h>
int prime(int n){
    int i,k=(int)sqrt(n);
    if(n==1)
        return 0;
    for(i=2; i<=k; i++){
        if(n%i==0)
            return 0; 
    }
    return 1;
}
int main()
{
    int i,n;
    scanf("%d", &n);
    for(i=2; i<=n/2; i++){
        if(prime(i)&&prime(n-i))
            printf("%d %d\n", i,n-i);
    }
    return 0;
}

1094: 统计元音(函数专题)

题目描述

输入一个字符串,统计其中元音字母的个数。要求使用函数vowel()用来判断是否为元音,其余功能在main()函数中实现。
int vowel(char ch)
{
//如果ch是元音,返回1,否则返回0
}
本题如果是C/C++代码提交,只需要提交vowel函数的定义部分,提交其它内容,编译出错。

输入

输入一个字符串,长度不超过1000,以回车符结束。

输出

输出一个整数,表示元音字母个数。输出单独占一行。

样例输入 Copy

Hello world!

样例输出 Copy

3

来源/分类
*

int vowel(char ch)
{
    if(ch=='a'||ch=='e'||ch=='i'||ch=='o'||ch=='u'||ch=='A'||ch=='E'||ch=='I'||ch=='O'||ch=='U')
        return 1;
    else
        return 0;
             //如果ch是元音,返回1,否则返回0
}

1095: 时间间隔(函数专题)

题目描述

从键盘输入两个时间点(24小时制),输出两个时间点之间的时间间隔,时间间隔用“小时:分钟:秒”表示。要求程序定义如下两个函数,并在main()中调用这两个函数实现相应的功能,其中main函数系统已经实现,你只需要完成下面这两个函数的定义。
//把时分秒转换成秒并返回, 三个参数分别为用于表示一个时间点的时、分、秒
int HmsToS(int h, int m, int s);
//将时间段转换为对应的“小时:分钟:秒” 格式输出 ,形参s表示一个时间段的长度,单位是秒
void PrintTime(int s);
对于C/C++代码的提交,本题只需要提交HmsToS函数和PrintTime函数的定义部分,否则,提交编译错误。

输入

输入数据有多组。每组输入包括两行。第一行为时间点1,第二行为时间点2,时间点均以“HH:MM:SS”的格式输入。测试数据保证时间点1早于时间点2。

输出

对应每组数据,有一行输出,以“HH:MM:SS”的格式输出时间间隔。注意不足两位要补占位符0。格式参看输入输出。

样例输入 Copy

12:01:12
13:09:43
12:40:12
13:09:43

样例输出 Copy

01:08:31
00:29:31

提示

注意:要输出01:08:31中的占位符0,printf中的格式控制符用"%02d"

来源/分类
*

*//把时分秒转换成秒并返回, 三个参数分别为用于表示一个时间点的时、分、秒
int HmsToS(int h, int m, int s){
     
    return s+m*60+h*3600;
     
}
//将时间段转换为对应的“小时:分钟:秒” 格式输出 ,形参s表示一个时间段的长度,单位是秒
void PrintTime(int s){
    int h=0,m=0,sec;
     h=s/3600;
     m=(s%3600)/60;
     sec=s-h*3600-m*60;
    printf("%02d:%02d:%02d\n", h,m,sec);
}

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

题目描述

春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+33。
现在要求输出所有在m和n范围内的水仙花数。
要求程序定义一个narcissus()函数和一个main()函数,narcissus()函数判断一个整数n是否为水鲜花数,其余功能在main()函数中实现。
int narcissus(int n)
{
//判断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之间有多少个水仙花数的情况下,如何控制两个数之间有空格,而最后一个水仙花数之后没有空格?解决方法之一是:第一个水仙花数之前不加空格,而其后每个水仙花数之前加空格。而通过一个标识变量可以判断出是否是第一个水仙花数。
初做多实例测试,要注意变量赋初值的位置。

来源/分类
**

#include<stdio.h>
int narcissus(int n)
{
    int n1 = n%10;
    int n2 = n%100/10;
    int n3 = n/100;
    if(n==(n1*n1*n1)+(n2*n2*n2)+(n3*n3*n3))
        return 1;
    else
        return 0;
}
int main(){
    int n,m,i;
    while(scanf("%d %d", &n,&m)!=EOF){
        int flag=0;
        for(i=n; i<=m; i++){
            if(narcissus(i)){
                flag++;
                if(flag==1){
                    printf("%d", i);
                }else{
                    printf(" %d", i);
                }
            }
        }
        if(flag==0)
            printf("no\n");
        else
            printf("\n");
    }
}

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

来源/分类
*

#include<stdio.h>
int getScore(char g)
{ 
//把等级g转换成对应的分数并返回这个分数。 
    if(g=='A')
        return 95;
    else if(g=='B')
        return 85;
    else if(g=='C')
        return 75;
    else if(g=='D')
        return 65;
    else
        return 40;
}
int main(){
    double total=0,n=0;
    char ch;
    while(scanf("%c", &ch),ch!='\n'){
        total+=getScore(ch);
        n++;
    }
    total/=n;
    printf("%.1f\n", total);
}

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

来源/分类
*

double funF(double x)
{
    return fabs(x-3)+fabs(x+1);
//函数返回F(x)的值;
}
double funG(double x)
{
//函数返回G(x)的值;
    return x*x-3.0*x;
}

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

题目描述

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

输入

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

输出

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

样例输入 Copy

5
11

样例输出 Copy

5
14

来源/分类
**

#include<stdio.h>
int main(){
    int n,a,b;
    while(scanf("%d", &n)!=EOF){
        int total = 0;
        while(n!=1){
            if(n%2==0)
                n/=2;
            else
                n=n*3+1;
            total++;
        }
        printf("%d\n", total);
    }
 
    return 0; 
}

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)!)

来源/分类
*
AC代码:

#include<stdio.h>
int fact(int n){
    int i,mul=1;
    for(i=1; i<=n; i++)
        mul*=i;
    return mul;
}
int main(){
    int k,m;
    long long n;
    scanf("%d%d", &m,&k);
    n=fact(m)/(fact(k)*fact(m-k));
    printf("%lld\n", n);
 
    return 0; 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

皮皮皮皮皮皮皮卡乒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值