第十一届蓝桥杯省赛第二场c语言

干了一下 发现很多还是不会–
今天就看看简单的吧

1. 约数个数

时间限制:1.000s 内存限制:128MB

题目描述
对于一个整数,能整除这个整数的数称为这个数的约数。
例如:1, 2, 3, 6 都是 6 的约数。
请问 78120 有多少个约数。
样例输入

样例输出

思路:没什么讲的 就是除的尽就加
#include<stdio.h>
int main()
{
	int temp=0;
	for(int i=1;i<=78120;i++)
	{
		if(78120%i==0)
		temp++;
		
		}
		printf("%d",temp);
	return 0;
 } 

2.门牌制作

时间限制:1.000s 内存限制:128MB

题目描述
小蓝要为一条街的住户制作门牌号。
这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。
小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字
符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、 0、 1、 7,即需要 1 个
字符 0, 2 个字符 1, 1 个字符 7。
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?

思路:无非就是判断有没有2
#include<stdio.h>
int main()
{
	int i=0;
	int c;
	
	for(int s=1;s<=2020;s++)
	{
      c=s;
      while(c!=0)
{
	if(c%10==2)
	{
		i++;
	}
	 c=c/10; //每次取出最后一位
	}
		
	}
	printf("%d",i);输出
	return 0;
 } 

3.跑步锻炼

小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了
激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。
小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年
10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?

判断星期几 递增 判断闰年平年同时看一下有没有是星期一同时也是一号的情况
另外说一句:真tam能跑啊 不累吗 
#include <stdio.h>
int main()
{
    int sum=0;
    int mon=6; //开始那天是星期六
    int y[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};//13是方便看月份

    for(int i=2000; i<=2020; i++)
    {
        if(i% 4 == 0 && i% 100 != 0 || i% 400 == 0)//是闰年二月就是29天
        {
            y[2]=29;
        }
        else
        {
           y[2]=28;否则就是28
        }
        for(int month=1; month<=12; month++)//循环月份
        {
            for(int t=1; t<=y[month]; t++)//月份的天数
            {
                sum++;
                if(mon==8)//就是星期一
                {
                    mon=1;
                }
                if(mon==1||t==1)
                {
                    sum++;//满足所选情况
                }
                mon++;
                if(i==2020&&month==10&&t==1)//到达指定日期
                {
                    printf("%d",sum);
                }
            }
        }
    }
    return 0;
}

4.蛇形填数

时间限制:1.000s 内存限制:128MB

题目描述
如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 :::
3 5 8 14 :::
4 9 13 :::
10 12 :::
11 :::
:::
容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 20 行第 20 列
的数是多少 ?

思路:傻逼逼的找了很久很久规律 才发现问题
1  2  6  7 15 16 28 29 45 46
  3  5  8 14 17 27 30 44 47
  4  9 13 18 26 31 43 48
 10 12 19 25 32 42 49
 11 20 24 33 41 50
 
 1 5 13 25 41 依次递增4  8 12  16
 得到公式:a=c(递增的数)+(a-1);

#include<stdio.h>
int main()
{
	int a=1,b,c=0;
	for(b=1;b<=19;b++)
	{
		c+=4;
		a+=c;
	}
	printf("%d",a);
	return 0;
}

5.成绩统计

小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整数。
输入格式
输入的第一行包含一个整数 n,表示考试人数。
接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
输出格式
输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分四舍五入保留整数。
样例输入
7
80
92
56
74
88
100
0
样例输出
71%
43%

麻烦点无非就是%的输出 百度了一下 原来是两个%才会生效一个
#include<stdio.h>
int main()
{
	int a;
	int b[100]={0};
	scanf("%d",&a);
	int y=0;//优秀
	int j=0;// 
	for(int i=0;i<a;i++)
	{
		scanf("%d",&b[i]);
		if(b[i]>=85)y++;//判断
		if(b[i]>=60)j++;
	}	
	double h=y,k=a,i=j,e=100;//转型

	 i=i/k*100;
	 k=h/k*100;
	 printf("%.0f%%",i);//转
	 printf("\n");
	 printf("%.0f%%",k);
	 printf("%");
	 
	 	 //printf("%.0f\n%.0f%",i,k);
	 
	return 0;
 } 

6.单词分析

小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这个字母出现的次数。
输入格式
输入一行包含一个单词,单词只由小写英文字母组成。
输出格式
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪个。如果有多个字母出现的次数相等,输出字典序最小的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
样例输入
lanqiao
样例输出
a
2

思路:主要是ascall为数组存储下标存数据,
然后判断哪一个存储的多,因为是从小到大开始所以,
在存储相同的情况下,字典序小的优先。
#include<stdio.h>
#include<string.h>
int main()
{
	char s[1000],u;
	gets(s);
	int a[1000]={0},i,t=0;
	int c;
	c=strlen(s);
	for(i=0;i<c;i++)
	{
		
		a[s[i]]++;//转换
		//
		//a[i]=s[i]-48;
		
	}
	for(i=1;i<200;i++)
	{
		if(a[i]>t)//判断条件,如果改成>=,则两个或多个字母数量相同,输出字典序最大的。
		{
			u=i;
			t=a[i];
		}
	}
	printf("%c\n%d",u,t);
	return 0;
}

不想写了 累。就这样 没懂 问 其他需要动动脑子。

  • 10
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值