C语言 函数题(三)

6-11 弹球距离

设有一个球从高度为h米的地方落下,碰到地面后又弹到高度为原来p倍的位置,然后又落下,再弹起,再落下…。请编写函数求初始高度为h的球下落后到基本停下来(高度小于给定阈值TOL)时在空中所经过的路程总和。

函数接口定义:

doubledist( double h, double p );

其中h是球的初始高度,p是球弹起高度与弹起前落下高度的比值;函数dist要返回球下落后到基本停下来时在空中所经过的路程总和。注意:当弹起的高度小于裁判程序定义的常数TOL时,弹起的距离不计算在内。

裁判测试程序样例:

#include<stdio.h>#define TOL 1E-3doubledist( double h, double p );
intmain(){
double h, p, d;
scanf("%lf %lf", &h, &p);
    d = dist(h, p);
printf("%.6f\n", d);
return0;
}
/* 你的代码将被嵌在这里 */

输入样例:

1.0 0.4

输出样例:

2.331149
 double dist( double h, double p )
{
    double s=0;
    while(1)
    {
        s=s+h;
        if(h*p>=TOL)
        {
            s=s+h*p;
            h=h*p;
        }
        else
            break;
    }
    return s;
}

6-12 输出每个月的天数

本题要求实现一个简单函数,能计算给定的年份和月份的天数。使得可以利用该函数,输出给定年份中每个月的天数。其中1、3、5、7、8、10、12月有31天,4、6、9、11月有30天,2月平年有28天,闰年有29天。判断闰年的条件是:能被 4 整除但不能被 100 整除,或者能被 400 整除。

函数接口定义:

intMonthDays(int year, int month);

其中year和month是用户传入的参数,如果1≤ month≤12,该函数必须返回year年month月的天数。

裁判测试程序样例:

#include<stdio.h>intMonthDays(int year, int month);
intmain(){
int ndays, month, year;
scanf("%d", &year);
for(month = 1; month <= 12; month++){
        ndays = MonthDays(year, month);
printf("%d ", ndays);
    }
return0;
}
/* 你的代码将被嵌在这里 */

输入样例1:

2000

输出样例1:

31 29 31 30 31 30 31 31 30 31 30 31

输入样例2:

2001

输出样例2:

31 28 31 30 31 30 31 31 30 31 30 31
int  MonthDays(int year, int month)
{
    switch(month)
    {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        return 31;
    case 2:
        if(year%400==0||(year%4==0&&year%100!=0))
            return 29;
        else
            return 28;
    case 4:
    case 6:
    case 9:
    case 11:
        return 30;
    }
}

6-13 空心的数字金字塔

本题要求实现一个函数,输出n行空心的数字金字塔。

函数接口定义:

voidhollowPyramid( int n );

其中n是用户传入的参数,为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n行空心的数字金字塔,请注意,最后一行的第一个数字前没有空格。

裁判测试程序样例:

#include<stdio.h>voidhollowPyramid( int n );
intmain(){    
int n;
scanf("%d", &n);
    hollowPyramid ( n );
return0;
}
/* 你的代码将被嵌在这里 */

输入样例:

5

输出样例:

    1
   2 2
  3   3
 4     4
555555555
void hollowPyramid( int n )
{
   int i,j;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=2*n-1;j++)
        {
            if(i==n) 
                printf("%d",i);
            else
            {
                if(j==n-i+1) 
                    printf("%d",i);
                else if(j==n+i-1)
                    printf("%d",i);
                else if(j<n-i+1||(j>n-i+1&&j<n+i-1))
                    printf(" ");//注意空格位置只能存在于两个区间,否则错误
            }
        }
        printf("\n");
    }
}

6-14 使用函数找出数组中的最大值

本题要求实现一个找出整型数组中最大值的函数。

函数接口定义:

intFindArrayMax( int a[], int n );

其中a是用户传入的数组,n是数组a中元素的个数。函数返回数组a中的最大值。

裁判测试程序样例:

#include<stdio.h>#define MAXN 10intFindArrayMax( int a[], int n );
intmain(){
int i, n;
int a[MAXN];
scanf("%d", &n);
for( i=0; i<n; i++ ){
scanf("%d", &a[i]);
    }
printf("%d\n", FindArrayMax(a, n));
return0;
}
/* 请在这里填写答案 */

输入样例:

4
20 78 99 -14

输出样例:

99
int FindArrayMax( int a[], int n )
{
    int max=0;
    for(int i=0;i<n;i++)
    {
        if(a[i]>max)
            max=a[i];
    }
    return max;
}

6-15 字符金字塔

本题要求实现函数输出n行字符金字塔。

函数接口定义:

voidCharPyramid( int n, char ch);

其中n和ch是用户传入的参数,n为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n行由字符ch构成的字符金字塔。注意每个字符后有一个空格。

裁判测试程序样例:

#include<stdio.h>voidCharPyramid( int n, char ch );
intmain(){    
int n;
char ch;
scanf("%d %c", &n, &ch);
    CharPyramid(n, ch);
return0;
}
/* 请在这里填写答案 */

输入样例:

4 G

输出样例:

在这里给出相应的输出。例如:

   G 
  G G 
 G G G 
G G G G 
void CharPyramid( int n, char ch)
{
    int a,b;
    for(a=1;a<=n;a++)
    {
        for(b=n;b>a;b--)
        {
            printf(" ");
        }
        for(b=1;b<=a;b++)
        {
            printf("%c ",ch);
        }
        printf("\n");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值