吉林大学 中国大学MOOC 高级语言程序设计 第四讲:循环进阶--编程题

本人能力有限,网上发布只为帮助可能有需要的人。

勒让德多项式(10分)

问题描述:编一个程序,输入x、n,计算勒让德(Legendre)多项式的第 n 项。

输入:一个浮点数和一个整数分别对应x和n

输出:一个浮点数,即勒让德多项式第n项的值,注意小数点后保留到第2位。

提示:整数除以整数结果仍为整数,所以(n-1)/n的结果是0;为了能够正确计算需要进行强制类型转换(float)n。

样例1:输入 5.5  1  输出:5.50

样例2:输入 5.5  0  输出:1.00

#include<stdio.h>

int main(void)

{

    float x,a,b,c;

    int n,k;

    k=2;a=1;

    scanf("%f%d",&x,&n);

    b=x;

    if(n==0)

        printf("1.00");

    else if(n==1)

        printf("%.2f",x);

    else
    {
        while(k<=n)

    {

        c=((2.0*k-1.0)/k)*x*b-((k-1.0)/k)*a;

        a=b;

        b=c;

        k++;

    }
        printf("%.2f",c);
    }


    return 0;

}

2

计算序列和(10分)

问题描述:请计算如下序列的前100项的和

输入:一个浮点数对应x值

输出:一个浮点数即ex的近似值,小数点后保留到第2位。

提示:注意使用项与项之间的递进关系;不要直接使用幂数和阶乘直接相除计算每一项值,很容易出现溢出错误。

样例:输入0  输出:1.00

#include<stdio.h>

int main(void)

{

    double x,a,b,c,sum;

    int n;

    scanf("%lf",&x);

    a=1.0;

    b=1.0;

    sum=1;

    for(n=1;n<101;n++)

    {
3
判断给定自然数是否为降序数(10分)

题目内容:编写程序,判断给定自然数n是否为降序数。降序数是指对于n=d1d2d3…dk,有:di>=di+1,i=1,2,…,k-1。例如:54321就是一个降序数。

输入:一个自然数n

输出:如果n是降序数,则输出YES,否则输出NO

样例1输入:543    输出:YES

样例2输入:78082  输出:NO

#include<stdio.h>

int main(void)

{
    int n,a,b,i,m,j;
    scanf("%d",&n);
    j=0;
    i=0;
    b=0;
    while(n>0)
    {
        m=n-n/10*10;
        //printf("%d\n",m);
        if(m>j)
            i++;
        j=m;
        n=(n-m)/10;
        b++;
    }

    if((i)==b)
        printf("YES");
    else
        printf("NO");
    return 0;
}
4
计算n个正整数的最小公倍数(10分)

题目内容:编写程序,读入n个正整数,输出它们的最小公倍数。其中,lcm(x,y)=x*y/gcd(x,y),其中gcd(x,y)为x和y的最大公约数。

输入:整数个数n,以及n个正整数

输出:最小公倍数m

样例输入:4   1  2 3  8

      输出:24

#include<stdio.h>
int main(void)
{
    int x,i,n,t,gcd,lcm,k;
    scanf("%d",&n);
    for(i=0;i<n;i++)//实现多数lcm
    {
        scanf("%d",&x);
        if(i==0)
            lcm=x;
        if(lcm>x)//将两数排序
        {
        t=x;
        x=lcm;
        lcm=t;
        }
        for(k=x;k>0;k--)//找两数gcd
        {
            if(x%k==0&&lcm%k==0)
            {
            //printf("%d\n",k);
            gcd=k;
            break;
            }
        }
    lcm=x*lcm/gcd;//如题可知
    }
    printf("%d\n",lcm);
    return 0;

}

5

爱因斯坦阶梯问题(10分)

有阶梯,不知其数,但知:每步跨2阶,最后剩1阶;每步跨3阶,最后剩2阶;每步跨5阶,最后剩4阶;每步跨7阶,正好到楼顶。编程序求最少共有多少阶。

输入:

输出:台阶数目

#include<stdio.h>

int main(void)

{

    int k;

    for(k=0;k<200;k++)

    {

        if(k%2==1&&k%3==2&&k%5==4&&k%7==0)

            printf("%d",k);

    }

    return 0;

}

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陈驰水

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

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

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

打赏作者

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

抵扣说明:

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

余额充值