提高篇 第1-15节课后习题

本文介绍了一段用于计算1到n的k次方累加的代码及歌手大赛打分函数的实现与改进,展示了算法的实用性和效率优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目一:

计算1到n的k次方累加

代码:

#include<stdio.h>
int power(int m,int n);	//求m的n次方(m^n)
int sum_of_power(int k,int n);	//从1^k到n^k的累加和
int main( )
{
    int k, n;
    scanf("%d %d", &k, &n);
    printf("f(%d, %d)=%d\n", k, n, sum_of_power(k,n));	//m^k的累加和
    return 0;
}
int power(int m,int n)	//求m的n次方(m^n)
{
    int s=1,i;
    for(i=0;i<n;i++)
    {
        s*=m;
    }
return s;
}
int sum_of_power(int k,int m)	//从1^k到n^k的累加和
{
    int s=0,i;
    for(i=1;i<=m;i++)
    {
        s=s+power(i,k);
    }
    return s;//在这个函数中调用 power函数求幂
}

项目二:歌手大赛打分函数版

①代码:

#include <stdio.h>
void calScore(int n);
int main()
{
    int n;
    printf("请输入评委人数:");
    scanf("%d",&n);
    calScore(n);
    return 0;
}
void calScore(int n)
{
    int i;
    double a;
    double m=0,b=10,sum=0;
    printf("请输入选手的成绩(0-10)\n");
    for(i=1;i<=n;i++)
    {
        printf("第%d位评委给分:",i);
        scanf("%lf",&a);
        if(a>m)
        m=a;
        if(a<b)
        b=a;
        sum+=a;


    }
    printf("减去一个最高分:%lf,",m);
    printf("减去一个最低分:%lf\n",b);
    printf("当前选手的最后得分是:%lf",(sum-m-b)/(n-2));
}
改进版:

#include <stdio.h>
void calScore(int n);
int main()
{
    int n;
    char c;
    printf("请输入评委人数:");
    scanf("%d",&n);
    do{
    calScore(n);
    printf("按N退出,其他键继续:");
    fflush(stdin);
    c=getchar();
    }while(c!='n'&&c!='N');
    return 0;
}
void calScore(int n)
{
    int i=1,fb;
    double a;
    double m=-1,b=11,sum=0;
    printf("请输入选手的成绩(0-10)\n");
        do
        {
        printf("第%d位评委给分:",i);
        fflush(stdin);
        fb=scanf("%lf",&a);
        if(fb==0)
        {
            printf("输入错误,请重新输入\n");
            continue;
        }
        if(a>m)
        m=a;
        if(a<b)
        b=a;
        sum+=a;
        i++;
        }while(i<=n);
    printf("减去一个最高分:%lf,",m);
    printf("减去一个最低分:%lf\n",b);
    printf("当前选手的最后得分是:%lf\n",(sum-m-b)/(n-2));
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值