洛谷刷题C语言:月份天数、找最小值、分类平均、一尺之棰、数字直角三角形

记录洛谷刷题QAQ


一、【深基3.例9】月份天数

题目描述

输入年份和月份,输出这一年的这一月有多少天。需要考虑闰年。

输入格式

输入两个正整数,分别表示年份 y y y 和月数 m m m,以空格隔开。

输出格式

输出一行一个正整数,表示这个月有多少天。

样例 #1

样例输入 #1

1926 8

样例输出 #1

31

样例 #2

样例输入 #2

2000 2

样例输出 #2

29

提示

数据保证 1582 ≤ y ≤ 2020 1582 \leq y \leq 2020 1582y2020 1 ≤ m ≤ 12 1 \leq m \leq 12 1m12

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int main()
{
	int month1[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
	int month2[13] =  {0,31,29,31,30,31,30,31,31,30,31,30,31};
	
	int y, m;
	scanf("%d%d",&y,&m);
	
	if(y%4 == 0&&y % 100!= 0||y % 400 == 0)
	{
		printf("%d\n",month2[m]);
	}
	
	else 
	{
		printf("%d\n",month1[m]);
	}
	return 0;	
} 

二、【深基4.例2】找最小值

题目描述

给出 n n n n n n 个整数 a i a_i ai,求这 n n n 个整数中最小值是什么。

输入格式

第一行输入一个正整数 n n n,表示数字个数。

第二行输入 n n n 个非负整数,表示 a 1 , a 2 … a n a_1,a_2 \dots a_n a1,a2an,以空格隔开。

输出格式

输出一个非负整数,表示这 n n n 个非负整数中的最小值。

样例 #1

样例输入 #1

8
1 9 2 6 0 8 1 7

样例输出 #1

0

提示

数据保证, n ≤ 100 n\le100 n100 0 ≤ a i ≤ 1000 0\le a_i \le 1000 0ai1000

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int main()
{
	int n;
	scanf("%d",&n);
	
	int min = 1000;
	for(int i = 1;i <= n;i++)
	{
		int num;
		scanf("%d",&num);
		if(num < min)
		{
			min = num;
		}
	}
	
	printf("%d\n",min);
	return 0;	
} 

三、【深基4.例3】分类平均

题目描述

给定 n n n k k k,将从 1 到 n n n 之间的所有正整数可以分为两类:A 类数可以被 k k k 整除(也就是说是 k k k 的倍数),而 B 类数不能。请输出这两类数的平均数,精确到小数点后 1 1 1 位,用空格隔开。

数据保证两类数的个数都不会是 0 0 0

输入格式

输入两个正整数 n n n k k k

输出格式

输出一行,两个实数,分别表示 A 类数与 B 类数的平均数。精确到小数点后一位。

样例 #1

样例输入 #1

100 16

样例输出 #1

56.0 50.1

提示

数据保证, 1 ≤ n ≤ 10000 1 \leq n\leq 10000 1n10000 1 ≤ k ≤ 100 1 \leq k \leq 100 1k100

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int main()
{
	int n, k;
	scanf("%d%d",&n,&k);
	
	int x = 0,y = 0;
	int sum = 0,num = 0;
	for(int i = 1;i <= n;i++)
	{
		if(i % k == 0)
		{
			sum = sum + i;
			x++;
		}
		if(i % k != 0)
		{
			num = num + i;
			y++;
		}
	}
	double a = 1.0*sum/x*1.0;
	double b = 1.0*num/y*1.0;
	printf("%.1lf %.1lf",a,b);
	return 0;	
} 

四、【深基4.例4】一尺之棰

题目描述

《庄子》中说到,“一尺之棰,日取其半,万世不竭”。第一天有一根长度为 a a a 的木棍,从第二天开始,每天都要将这根木棍锯掉一半(每次除 2 2 2,向下取整)。第几天的时候木棍的长度会变为 1 1 1

输入格式

输入一个正整数 a a a,表示木棍长度。

输出格式

输出一个正整数,表示要第几天的时候木棍长度会变为 1 1 1

样例 #1

样例输入 #1

100

样例输出 #1

7

提示

数据保证, 1 ≤ a ≤ 1 0 9 1 \le a\le 10^9 1a109

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>
 
int main()
{
	long long n;
	scanf("%lld",&n);
	
	int sum = 1;
	long long half = n;
	while(half !=1)
	{
			half = half/2;
			sum++;

		
	}
	
	printf("%d\n",sum);
	return 0;	
} 

五、【深基4.例6】数字直角三角形

题目描述

给出 n n n,请输出一个直角边长度是 n n n 的数字直角三角形。所有数字都是 2 2 2 位组成的,如果没有 2 2 2 位则加上前导 0 0 0

输入格式

输入一个正整数 n n n

输出格式

输出如题目要求的数字直角三角形。

样例 #1

样例输入 #1

5

样例输出 #1

0102030405
06070809
101112
1314
15

提示

数据保证, 1 ≤ n ≤ 13 1\le n\le13 1n13

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>
 
int main()
{
	int n;
	scanf("%d",&n);
	int x = 1;
	for(int i = n;i >= 0;i--)
	{
		for(int j = i-1;j >= 0;j--)
		{
			
			if(x < 10)
			{
				printf("0%d",x);
				x++;
			}
			else
			{
				printf("%d",x);
				x++;
			}
		}
		printf("\n");
	}
	return 0;	
} 
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值