蓝桥杯c/c+

蓝桥杯c/c++ c组刷题记录

一、题目

1.门牌制作
巧妙用j去除位数  
2.成绩统计
输入一个数测试一个数,把整数四舍五入
//先将整数乘以100,再讲要除的数强制float
  printf("%.f%%\n",(a*100)/(n*1.0));
  printf("%.f%%",(b*100)/(n*1.0));
3.购物清清单
依次输入价格和折扣并求和
4.数字三角形
从上往下加,先判断左下角和右下角的数哪个大,然后选这个数并加上本身的
数
5.卡片
对我来说又是道很难的题,因为拿卡片组成数字首先消耗最小的,所以1会是先
用完的
6.跑步锻炼
1.先将12个月的每个月的天数初始化 
2.判断是不是闰年(能被4整除但是不能被100整除 || 能被400整除)
3.定义ans为6当自增到0重新回到1

二、代码块

1.门牌制作
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
	int cnt;
  for(int i = 1;i<=2020;i++)
  {
  	for(int  j = i;j>0;j/=10) //去除一位 
  	{
  		if(j%10==2)//判断最=后一位是不是2 
  		{
  			cnt++;
		}
	}
  }
  printf("%d",cnt);
  return 0;
}
2.成绩统计
#include <iostream>
using namespace std;
int main()
{
  // 请在此输入您的代码
  int n;
  scanf("%d",&n);

  int a= 0;
  int b = 0;
  int arr[100001];

  for(int i = 0;i<n;i++)
  {
    scanf("%d",&arr[i]);

    if(arr[i]>=60)
    {
      a++;
    }
 
 if(arr[i]>=85)
    {
      b++;
    }
  }

  printf("%.f%%\n",(a*100)/(n*1.0));
  printf("%.f%%",(b*100)/(n*1.0));
  return 0;
}
3.购物清单
#include <iostream>
using namespace std;
int main()
{
  // 请在此输入您的代码
  //暴力  把价格和折扣输入 
  double sum = 0;
  float s= 0;
  float jiage,zhekou;
  while((scanf("%f %f",&jiage,&zhekou))!=EOF)
  {
  	
    s = jiage*zhekou;
    sum+=s;
    
  }
  printf("%lf",sum);
  return 0;
}
4.数字三角形
#include <stdio.h>
#include <stdlib.h>

int max(int a,int b)
{
	return a>b?a:b;
}
int main() 
{
	int a[105][105];//模拟表格
	int f[105][105];//储存路线值
	int n;
	scanf("%d",&n);
	for(int  i = 1;i<=n;i++)
	{
		for(int  j = 1;j<=i;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	
	f[1][1] = a[1][1];//把开头第一个数给f数组,从第二行开始算就比较可
	//以直接进去
	
	for(int i = 2;i<=n;i++)//从第二行开始
	{
		for(int j = 1;j<=i;j++)
		{
			if(j ==1) f[i][j] = f[i-1][j] +a[i][j];//左边
			else if(i == j) f[i][j] = f[i-1][j-1]+a[i][j] ;//右边
			else f[i][j] = max(f[i-1][j],f[i-1][j-1])+a[i][j];
			
		}
	}
//如果n为奇数就会走到第n/2+1的位置也就是中间的数
//如果n为偶数就会走搭中间两个中最大的数
 if(n%2==1)  printf("%d",f[n][n/2+1]);//奇数情况下
  else printf("%d",max(f[n][n/2],f[n][n/2+1]));
	
	return 0;
} 
5.卡片
#include<stdio.h>

int main()
{
	int a= 0;//定义a变量存储要判定的数
	int  i,n=0;//定义n判断使用1的次数
	
	for(  i = 1;;i++)//从1开始
	{
		a = i;
		while(a>0)
		{
			if(a%10==1)//判断有没有使用1
			n++;
			a/=10;//去除一位
		}
		if(n>=2021)//如果使用次数大于2021次就退出循环
		{
			break;
		}
	}
	printf("%d",i);
	
	return 0;
}
6.跑步锻炼
#include<stdio.h>//依次判断年月日周 
int main(){
    int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int year,month,day;
    int ans=6;//一月一号是周六 
    int cnt=0;//公里数 
    for(year=2000;year<=2020;year++){
        if(year%4==0&&year%100!=0||year%400==0){
            months[2]=29;
        }else{
            months[2]=28;
        }
    for(month=1;month<=12;month++){//几月 
        for(day=1;day<=months[month];day++){//几日 
            cnt++;//每天一千米 
            if(ans==8){
                ans=1;//ans自增到 8 时归回 1 
            } 
            if(ans==1||day==1){//或意味着A对,B对,AB同时对三种情况 
                cnt++;//周一或月初或周一与月初多跑一千米 
            }
            ans++;//进入第二天 
            if(year==2020&&month==10&&day==1){//到2020.10.1结束循环 
                printf("%d",cnt);
            } 
        }
    }
}
    return 0;//一点一点来不要怕错 
}

总结

有不对的地方还请大佬指点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值