当前位置: 首页 > news >正文

C++备战蓝桥杯9.13-9.15

书接上篇,我感觉前面都挺简单的,如果前两篇有不懂的或者错误的,欢迎大家提出~

接下来我也是照样按顺序记录一些做过的题,有时候会记录一些我认为的有点难记易混淆的点,大家可以当笔记来看噢

三目操作符

//ex1 ? ex2 ! ex3
//真    计算   不计算
//假   不计算   计算---ex3为最终结果 

//输出a,b,c的最大值

#include <iostream>

using namespace std;
int main()
{
int a,b,c;
int m;//最大值 
cin >> a >> b >> c;
if(a >b)
m = a;
else
m = b;
if (m < c)
m = c;
cout << m << endl;

return 0;
}
//可改为
int main()
{
int a,b,c;
int m;
cin >> a >> b >> c;
//使用三目操作符 
m = ( a > b ? a : b);

if( m < c)
m = c;
cout << m << endl;


return 0;


//特殊计算,给你两个整数X , Y ,X<=100000000000
//如果X 是 Y 的因素,则Z = X + Y,否则 Z = Y - X
//输出Z 
//因素的意思--x是可以整除y的 

#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
long long X,Y,Z;
cin >> X >> Y;

if(Y % X == 0)
Z = X + Y;
else 
Z = Y - X;

cout << Z << endl;

return 0;
}

//可以使用三目操作符改为 

int main()
{
long long X,Y,Z;
cin >> X >> Y;

   Z = ((Y % X == 0) ? (X + Y) : (Y - X)); 
    
cout << Z << endl;

return 0;
}

//苹果和虫子
//有m(0<x<100)个苹果, 吃一个苹果需要t(0~100)分钟 
//吃完一个立刻开始吃下一个
//现在过去了s(1~10000)分钟,请问他还有几个完整苹果

//输入三个非负数m,t,s
//输出一个整数 

#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
int m,t,s;
int r;
//剩余的苹果数

//输入 
cin >> m >> t >> s;
//计算、
//处理t = 0的情况 
if( 0 ==t )
{
cout << 0 << endl;
return 0;
//结束代码 
}

//还需要考虑r不能<0的情况 

if(s % t == 0)//不为0,说明开始吃下一个苹果,不过没吃完 
{
//r = m - s / t; //这里的t不能为0 
if(m - s / t < 0) 
r = 0;
else
r = m - s / t;
}

else
{
if( m - s / t - 1 < 0)
r = 0;
else
r = m - s / t;
}

cout << r << endl;

return 0;
}

//使用三目操作符改造为 

int main()
{
int m,t,s;
int r;
//剩余的苹果数

//输入 
cin >> m >> t >> s;
//计算、
//处理t = 0的情况 
if( 0 ==t )
{
cout << 0 << endl;
return 0;
//结束代码 
}

//还需要考虑r不能<0的情况 

 if(s % t == 0)//不为0,说明开始吃下一个苹果,不过没吃完 
r = ( m - s / t < 0 ? 0 : m - s / t); 

else
r = (m - s / t - 1 < 0 ? 0 : m - s / - 1);

    
cout << r << endl;

return 0;
}

逻辑运算符

!  --逻辑取反

真假相反

&&  --逻辑与

需要运算符两侧表达式都为真,结果才为真,否则为假

||   --逻辑或

两侧表达式只要有一个为真,结果都为真

//闰年的判断 
//闰年输出1 否则输出0 

#include <iostream>

using namespace std;

int main()
{
int n = 0;
cin >> n;
if(n % 4 == 0 && n % 100 != 0)
cout << 1 << endl;
else if(n % 400 == 0)
cout << 1 << endl;
else
cout << 0 << endl;

return 0;

//还可以使用逻辑运算符改为 

int main()
{
int n = 0;
cin >> n;
if((n % 4 == 0 && n % 100 != 0) || (n % 400 == 0))
cout << 1 << endl;

else
cout << 0 << endl;

return 0;

//晶晶赴约会
//贝贝邀请晶晶出去玩,但是晶晶1,3,5都有课,必须上课
//请用数字1 ~ 7表示周一到周日,输入贝贝邀请晶晶的日期
//晶晶可以接受输出 YES,否则NO

#include <iostrem>
using namespace std; 

int main()
{
int n;
cin >> n;
 if( n == 1 || n == 3 || n == 5)
        cout << "NO"  << endl;
else
cout << "YES" << endl;

return 0;
}

//三角形判断
//给定三个正整数,分别表示三角形三条边
//能构成三角形,输出1,否则0

#include <iostream>

using namespace std; 

int main()
{
int a, b, c;
cin >> a >> b >> c;

 if(a + b > c && a + c > b && b + c > a)
cout << 1 << endl;
else
cout << 0 << endl; 


return 0;

}

//给定一个整数
//判断其是否能被3,5,7整除
//1.能同时被3,5,7整除,输出3,5,7
//2.只能被其中两个整除,从小到大输出这两位数
//3.只能被一个数整除,输出这个数
//4.都不能被整除,输出n 

#include <iostream>

using namespace std; 

int main()
{
int x;
cin >> x;
if(x % 3 == 0 && x % 5 == 0 && x % 7 == 0)
cout << "3 5 7 " << endl;
else if(x %3 == 0 & x % 7 == 0)
cout << "3 7" <<  endl;
else if(x % 5 == 0 && x % 7 == 0) 
cout << "5 7" << endl;
else if(x %3 == 0 & x % 5 == 0)        
cout << "3 5" << endl;
else if(x %3 == 0)
cout << "3" << endl;
else if(x % 5 == 0)
cout << "5" << endl;
else if(x % 7 == 0)    
cout << "7" << endl;
else  
cout << "n" << endl;

return 0;
}

使用了暴力枚举

//换一种思路,使用逻辑与运算符 

int main()
{
int x;
cin >> x;
if( x % 3 == 0)
cout << 3 << " " ;
if(x % 5 == 0)
cout << 5 << " ";
if(x % 7 == 0)
cout << 7 << " ";

        
if(x % 3 != 0 && x % 5 != 0 && x % 7 != 0)

 cout << 'n' << endl;

return 0;
}

但是对于代码的简洁性,前期可以不用追求,可以先暴力解决,再优化

//一些整数可能拥有以下性质:
//1.是偶数
//2.大于4且不大于12
//输入一个数字, 
//现在有4 种情况
//1.A喜欢性质1,2同时成立的数字 
//2.Uim:符合至少有一种性质
//2.B:刚好符合一个
//3.正妹:喜欢都不符合 
//
//输出 --4个人是否喜欢这个数字,喜欢输出1 不喜欢的输出0 
//输出用空格隔开---endl是转行 

#include <iostream>

using namespace std;
int main()
{
int x;
cin >> x;
//判断和输出
//按照顺序判断每个人是否喜欢这个数字

//A
if((x % 2 == 0) && (x > 4 && x <= 12)) 
cout << 1 << " ";
else
cout << 0 <<  " ";

//Uim
if((x % 2 == 0) || (x > 4 && x <= 12)) 
cout << 1 << " ";
else
cout << 0 << " ";

//B
if((x % 2 == 0) + (x > 4 && x <= 12) ==1 ) 
cout << 1 << " ";
else
cout << 0 << " ";    

//正妹
if((x % 2 == 0) + (x > 4 && x <= 12) == 0) 
cout << 1 << " ";
else
cout << 0 << " "; 

return 0;
}

switch语句


是一种特殊的if else结构,将多重的if else转换成更易用更可行的形式
switch (exp)---express必须是整型表达式,可以是字符类型,不能是浮点型 
{
case v1(value 1):statement---case后必须是整型常量表达式 
case v2:statement
default:statement

case是switch语句的决定分支的入口

break是switch语句的决定分支的出口

#include <iostream>

using namespace std;

int main()
{
int n;
cin >> n;
switch(n % 3)
{
case 0:
cout << "余数为0" << endl;
break;

case 1:
cout << "余数为1" << endl;
break;
case 2:     
cout << "余数为2" << endl;
break;
}

//如果没有break;输入任何一个数--将会打印出--余数为0--余数为1--余数为2
//注意case:----后面跟的是:


//练习--四季,判断春夏秋冬 
//输入的数据格式是固定的 YYYYMM的形式 201901
//即月份占4个数位,月份占两个数位
//输出月份对应的季节(用英文单词,全小写) 


#include <iostream>
using namespace std; 

int main()
{
int n,m;
cin >> n; 
m = n % 100;

switch(m)
{
case 3:
case 4:
case 5:
cout << "spring" << endl;
break;
case 6:
case 7:
case 8:
cout << " summer" << endl;
break;
case 9:
case 10:
case 11:
cout << "autum" << endl;
break;
case 12:
case 1:
case 2:
cout << "winter" << endl;
break;
}

return 0;
}

//使用if 语句


int main()
{
int n ,m;
cin >> n;
m = n % 100;

        if(m >= 3 && m <= 5)
cout << "spring" << endl;
else if(m >= 6 && m <= 8)
cout << "summer" << endl;
else if(m >= 9 && m <= 11)
cout << "autumn" <<endl;
else
cout << "winter" << endl;

return 0;

//简单计算器
//支持+ - * /  只考虑整数运算
//如果出现除数为0 的情况,输出 Divided by zero!
//如果出现无效字符--输出  Invalid operator! 

#include <iostream>
using namespace std;

int main()
{
int a,b;
char c;
cin >> a >> c >> b;

switch(c)
//对c进行判断 
{
case '+':
cout << a + b << endl;
break;
case '-':
cout << a - b << endl;
break;
case '*':
cout << a * b << endl;    
break;        
case '/':
if(b == 0)
cout << "Divided by zero!" << endl;
else
cout << a / b  << endl;    
break;
default:
cout<< "Invalid operator!" << endl;

}

循环

while  与if语句非常相似

while(表达式)
{
语句1;
语句2; 

#include <iostream>
using namespace std;

int main()
{
int i = 1;
while(i <= 10)
{
cout << i << " ";
i++;

}


return 0;
}

//输入一个整数
//求这位数的数位和
//--获取这个数的每一位

#include <iostream>
using namespace std;

int main()
{
int n;
int sum = 0;
cin >> n;
while(n)
{
sum += (n % 10);
n /= 10;
}
cout << sum << endl;

return 0;

如果不太明白可以调试看看~

//整数求和
//输入一个整数
//求出这个数及比其小的所有正整数之和
//预期输出50000000500
//---说明应该使用longlong 

#include <iostream>
using namespace std;

int main()
{
int n;
long long sum = 0;
cin>> n;
int i = 1;
while(i <= n)
{
sum += i;
i++;
}

cout << sum << endl;


return 0;

//可以使用求和公式
//(1 + n) * n--只有等差数列才可以这样 

int main()
{
long long n;
long long sum = 0;
cin >> n;
sum = (1 + n) * n /2;
cout << sum << endl;

    return 0;    
}


//含k个3的数
//输入两个正整数m和k,(1 < m <= 10^15),(1 < k <= 10)
//m--long long ,k--int 
//判断m是否刚好含有k个3,满足条件输出YES,否则NO; 

#include <iostream>

using namespace std;

int main()
{
long long m;
int k;
int c =0;
cin >> m >> k;
//统计m中有几个3
while(m)
{
if(m % 10 == 3)
c++;
m /= 10;
}
if(c == k) 
cout << "YES" << endl;
else
cout << "NO" << endl;

return 0;
}

123 1--YES

//角谷猜想、/
//输入任意整数
//如果其是奇数,则乘3加1,
//如果是偶数,则除以2,
//得到的结果按 上述重复处理 最终总能得到1 
//输出一个整数 将经过处理得到的1的过程输出 

用C语言做

#include <iostream>

#include <cstdio>

using namespace std;

int main()
{
long long n= 0;
//long long 使用printf时是%lld 
cin >> n;
while(n != 1)
{
if(n % 2 ==1)
{
 printf("%lld * 3 + 1 = %lld\n",n,n * 3 + 1);
n = n * 3 + 1;

        }
else
{
 printf("%lld/2=%lld\n",n,n / 2);
n /= 2;

        }

}
cout << "End" << endl;

return 0;
}

//用c++方式 

#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
long long n= 0;
//long long 使用printf时是%lld 
cin >> n;
while(n != 1)
{
if(n % 2 ==1)
{
   cout << n << "*3+1=" << n * 3 +1 << endl;
            n = n * 3 + 1;
}
else
{
   cout << n <<"/2=" << n / 2 << endl;
            n /= 2;
}

}
cout << "End" << endl;

return 0;
}

//计算多项式的和 
//假设多项式的形式为x^n + x^(n-1)+...+x^2 + x + 1
//请给定单精度浮点数x和正整数n值的情况下这个多项式的值
//多项式的值精确到小数点后两位,最终结果保证在double类型
//输入一行,包括x和m,空格隔开 
//输出一个实数,即多项式的和 

#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
int n;
double x;
double sum =1;
double r = 1;
cin >> x >> n;

    while(n--)//n次询问 
{
r *= x;
sum += r;


     printf("%.2f\n",sum);

return 0;
}


文章转载自:

http://6hkRAh2d.jrdbq.cn
http://2Kb99K9v.jrdbq.cn
http://9WVlFObE.jrdbq.cn
http://fUPsEuRv.jrdbq.cn
http://sgHawYmo.jrdbq.cn
http://NOy7gm4O.jrdbq.cn
http://nspPL0tG.jrdbq.cn
http://yVSitOZG.jrdbq.cn
http://G8gx5vHW.jrdbq.cn
http://UFbOmseZ.jrdbq.cn
http://hMlijbBD.jrdbq.cn
http://MW2Q50LY.jrdbq.cn
http://62XalHY2.jrdbq.cn
http://FNFJoebq.jrdbq.cn
http://EEFGGDyF.jrdbq.cn
http://rpQ4trUb.jrdbq.cn
http://bkmkWTrB.jrdbq.cn
http://dCuRYBqX.jrdbq.cn
http://ExGQ1JpY.jrdbq.cn
http://124BMnAZ.jrdbq.cn
http://8MjfwjpU.jrdbq.cn
http://fHivfBxa.jrdbq.cn
http://2fuRGmvR.jrdbq.cn
http://VvNgtle6.jrdbq.cn
http://koQBMl72.jrdbq.cn
http://yZRhtO6Q.jrdbq.cn
http://iORol0ut.jrdbq.cn
http://ByRyvdqV.jrdbq.cn
http://MYWIocT8.jrdbq.cn
http://NZ6FYQYF.jrdbq.cn
http://www.dtcms.com/a/386564.html

相关文章:

  • PyAutoGUI 自动化 GUI 操作的 Python 库核心操作命令总结
  • 【Uni-App+SSM 宠物项目实战】Day15:购物车添加
  • AI大模型学习知识体系(1)
  • 重要:Java25正式发布(长期支持版)!
  • OneTerm开源堡垒机实战(二):快速部署与基本使用
  • 网络问题排查
  • linux之套接字Socket
  • 【Uni-App+SSM 宠物项目实战】Day14:商家服务列表
  • MCP 协议客户端与服务端python demo
  • 【Nginx开荒攻略】从命令到实战:Nginx服务启动、停止与重载完全指南
  • Ubuntu系统中在线安装MySQL到指定目录
  • C++工程实战入门笔记16-智能指针
  • 【深度学习新浪潮】什么是太空算力中心?
  • 容器化部署之dockercompose08
  • 卷积神经网络搭建实战(一)——torch云端的MNIST手写数字识别(全解二)
  • [deepseek]Visual Studio 2022创建和使用DLL教程
  • k8s节点网络失联后会发生什么
  • 3分钟掌握C++/Lua双向通信:一个高性能内核 + N个动态脚本
  • Spring MVC小点
  • SpringBoot的自动配置原理
  • 动力电池组半自动生产线:效率与灵活性的平衡之道|深圳比斯特自动化
  • 前端开发编辑器有哪些?常用前端开发编辑器推荐、前端开发编辑器对比与最佳实践分析
  • 【Linux】自动化构建工具——make/Makefile
  • Playwright MCP浏览器自动化教程
  • Linux 内存管理章节十四:多核世界的交通规则:深入Linux内存屏障与并发控制
  • .NET Core 中生成 JWT(JSON Web Token)
  • webRTc 为何深受直播实现的青睐?
  • iOS App 卡顿与性能瓶颈排查实战 如何定位CPU内存GPU帧率问题、优化耗电与网络延迟(uni-app开发性能优化全流程指南)
  • Tomcat的基本配置
  • Delphi6中实现PDF文件打印功能