这周还是复习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
}