c的复习

这周还是复习c,毕竟要开学了

1.请计算 1 +(1+2)+(1+2+3)+…+(1+2+3+…+n)

本题目可以看到,存在二重循环,内循环循环从1到n,外循环直接从1到n

#include"stdio.h"
int main(int argc, char const *argv[])
{
    int n;
    scanf("%d",&n);
    int sum=0;
    for (size_t i = 1; i <= n; i++)//外循环,计算每一个项的n值,从1开始
    {
        for (size_t j = 1; j <= i; j++)//内循环,从1加到n结束
        {
            sum+=j;
        }
        
    }
    printf("%d",sum);
    return 0;
}

// 给出一年的年月,计算这一年的这一月有多少天.

这种题目要先统计会出现的情况,再进行编写.年,分为闰年和平年,区别就在二月的天数,除此之外就是月的区别.我们可以用俩个数组把两种年每月对应的天数存储起来,这样看起来清晰明了

#include"stdio.h"
int main(int argc, char const *argv[])
{
    int a[]={31,28,31,30,31,30,31,31,30,31,30,31},//平年的每月数字统计
        b[]={31,29,31,30,31,30,31,31,30,31,30,31},//润年
        year,mon,flag=1;
    scanf("%d",&year,&mon);
    if((year%4==0&&year%100!=0)||(year%100==0&&year%400==0))flag=0;//判断平闰年,flag=1为平年
    if (flag)
    printf("%d",a[mon-1]);//输出平年天数
    else
    printf("%d",b[mon-1]);//闰年天数
    return 0;
}

假设你现在正在爬楼梯,楼梯有 n 级。每次你只能爬 1级或者 2级,那么你有多少种方法爬到楼梯的顶部?
提示,第一层到第二次是一种方法,第一层到第三层有两种方法

这就是一个经典的用递归的方法了,每次只能走一级或俩级,就相当于说要不然是从第n-1级走了一级上来的,要不然是从n-2级走了俩级上来的.当在这之前,在走n-1级时是用了x种方法走上来的,走n-2级是用了y种方法走上来的.这样,这个逻辑一直延伸,到了第三级的时候,就可以写出代码,并且向后推

#include"stdio.h"
int f(int);//函数声明
int main(int argc, char const *argv[])
{
    int n;
    scanf("%d",&n);
    printf("%d",f(n));
    return 0;
}
int f(int n)
{
    int x;
    if (n==1)
        x=1;
    else
    {
        if (n==2)
            x=2;//n==1,2时直接输出结果,因为这样无法用下面的方法计算
        else
            x=f(n-1)+f(n-2);//利用了刚才的思想,前俩项合等于第三项
    }
    return x;//返回x
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值