NOIP(C++)信息学奥赛课程--持续更新

系列文章目录

C++信息学奥赛课程 想学的收藏一下不然就找不到了


文章目录

  • 系列文章目录
  • 前言
  • 第一课初识C++程序
      • 0.程序框架
      • 1.数据的输出
      • 2.输出的内容
      • 3.输出换行
      • 4.连续输出
      • 5.练习
      • 6.设置文字和背景
      • 7.让电脑发出声音
      • 8.总结
  • 第二课变量和数据的输入
      • 1.什么是变量
      • 2.变量中存数据
      • 3.修改变量的数据
      • 4.变量的命名规则
      • 5.变量间的赋值
      • 6.交换两个变量的值
      • 7.数据的输入
      • 8.总结
  • 第三课表达式和算术运算符
      • 1.输出运算结果
      • 2.算术运算符和表达式
      • 3.将价格保存到变量中
      • 4.算术运算符的应用
      • 5.取余运算符
      • 6.交换两位数字的位置
      • 7.竖式运算18
      • 8.总结
  • 第四课 数据类型之浮点数
      • 1.什么是浮点数?
      • 2.计算三角形的面积
      • 3.什么是数据类型转换
      • 4.cout格式化输出
      • 5.常量
      • 6.复合赋值运算符
      • 7.总结
  • 第五课 基本数据类型
      • 单词
      • 1.认识C++中的基本数据类型
      • 2.基本数据类型之整型
          • 1.整型数据直接赋值
          • 2.表达式的结果取整数部分进行赋值
          • 3.运算时要防止溢出的发生
          • 4.sizeof方法
      • 3.基本数据类型之浮点型
          • 1.浮点型数据表示形式
          • 2.默认的浮点型数据是double型,如果需要表示float类型,需要加”f”或者”F”后缀。
          • 3.保留指定小数位数
          • 4.例题 求阴影部分的面积
          • 5. 计算圆形的周长和面积
  • 第六课 基本数据类型
      • 1.基本数据类型之字符型
          • 1.基本数据类型之字符型注意:
          • 2.输出字母对应的ASCII值
          • 3.输入数字字符,输出对应的数字
          • 4.输入大写字母,输出对应的小写字母
          • 5.计算圆形的周长和面积
      • 2.基本数据类型之布尔型
          • 1.基本数据类型之布尔型 bool
            • A.布尔类型转为整数类型
            • B.整数类型转布尔类型
          • 2.数据类型之间的隐式转换
          • 3.数据类型之间的强制转换
          • 4.数据类型转换之溢出
          • 5.练习一下
          • 6.练习计算球的体积
  • 第七课 运算符与判断结构if
      • 1.复合运算符号
      • 2.关系运算符
      • 3.关系表达式
      • 4.程序结构
      • 5.if语句
      • 6.用if语句判断变量是否等于100
      • 7.if语句的使用—判断整数的奇偶性
      • 8.if 语句的使用判断是否及格
      • 9.计算苹果总价
  • 第八课 判断结构else语句
      • 1.if语句语法结构
      • 2.if..else..语句的使用
      • 3.if..else if..else 语句的使用
          • 1.语法结构
          • 2.骑车与走路(例题)
          • 3.判断倍数(例题)
  • 第九课 if...else语句运用
      • 1.分支嵌套
      • 2.例题判断账号密码
      • 3. 猜数游戏
      • 4.计算邮资
      • 5.判断能否被3,5整除
  • 第十课 逻辑运算符使用
      • 1.认识逻辑运算
      • 2.逻辑表达式
      • 3.单独解析:
        • A.逻辑非:!
        • B.逻辑与:&&
          • B-1.三角形判断
        • C.逻辑与:||
      • 4.例题:
        • 1:判断是否为一门课不及格
        • 2:逻辑运算符优先级![在这里插入图片描述](https://img-blog.csdnimg.cn/e624ceec8c114553868d8349218b6986.png)
        • 3:用逻辑表达式判断是否为闰年
        • 4:点和正方形的关系


前言

随着人工智能的不断发展,个人特长也越来越重要,很多学生要进入一个好的学校完全考裸分,很难,本文就想给到部分学生提供一个学习C++信息学的机会。(每周三更新新课,想学的朋友可以收藏+粉丝,带你从0-1玩转信息学奥赛)


第一课初识C++程序

使用C++程序让电脑和我们进行交流;

0.程序框架

#include  	//包含头文件
using namespace std;	//使用标准名字空间
int main(){				//程序的主函数入口

    return 0;			//函数返回值 0
}

1.数据的输出

代码如下(示例):

cout<<“Hello world”;
显示器 输出运算符 输出的内容 分号结尾

2.输出的内容

代码如下(示例):

cout<<"Hello world";
cout<< "123456";
cout<<"@ :)";
cout<<"中国"

3.输出换行

cout << end;
end->结束
l->行
endl就是结束行

4.连续输出

cout<<项目1<<项目2<<项目3<<项目4<<endl;
//连续输出不换行
cout<<项目1<<endl<<项目2<<<endl<<项目3<<endl<<项目4<<endl;
//连续输出换行

5.练习

//输出一个10*10的正方形用*号表示

6.设置文字和背景

system("颜色 背景颜色文本颜色");
system("color e1") 

NOIP(C++)信息学奥赛课程--持续更新_第1张图片


7.让电脑发出声音

Beep(声音的频率,时长,单位是毫秒)
Beep(1000,500);

NOIP(C++)信息学奥赛课程--持续更新_第2张图片


8.总结

学习的电脑的输出语句
学习了让电脑发出声音

第二课变量和数据的输入

1.什么是变量

储存数据的“箱子”-变量

int a;
int->称为数据类型
a->称为变量名

2.变量中存数据

赋值->将数据存储到变量中的
赋值运算符号 =

创建变量:int a;
变量的赋值:a = 1;
使用变量:cout<<a<<endl;//就能查看变量a中的数据

拓展:

创建变量又称定义变量;
在同一{}中不能创建相同的变量;
先定义在赋值
int b;
b = 2;
定义就赋值
int c = 2;

3.修改变量的数据

又称为变量的重新赋值

int a;
a = 1;
a = 2;
代码逻辑从上到下执行,最后的结果就是a = 2;

4.变量的命名规则

1:字母、数字、下划线_ ;
2:区分大小写;
3:数字不能开头;
4:不能使用int这种已经有特殊意义的变量;

5.变量间的赋值

同时定义多个变量

int a,b;
int a=b=1;
int a=1,b=2;
int m=200;
int n=m;
cout<<n<<endl;//还是200

6.交换两个变量的值

//方法1:
int a = 1;
int b = 2;
int c = a;
b = a;
a = c;
//方法2:
//swap()函数的使用
int d=3 , g=4;
swap(d,g);
cout<<d<<g<<endl;

7.数据的输入

单个输入:

int a;
cin  >> 数据存储变量;
cin >> a;
//就可以往变量a中输入一个整数值;

连续输入:

int a,b;
cin>>a>>b;

举例:

输入两个数,输出两个数的和
int a,b;
cin>>a>>b;
cout<<a+b;

8.总结

1:变量的命名规则,什么是变量
2:赋值= 意思是将变量右边的值赋值给变量左边的名字
3:变量的重新赋值
4:输入运算符 >> 连续的输入 cin>>a>>b;

第三课表达式和算术运算符

1.输出运算结果

输出两个数的和

int a=b=6;
cout<<a+b;

2.算术运算符和表达式

区别:
数学  c++
+    +
-    -
x    *
÷    \
()   ()

表达式:数学算式 : 6+3
解释:用运算符操作数 连接起来的式子叫做表达式

//练习
8-3÷2
4x5
20-3
(2+3)x6

3.将价格保存到变量中

用户输入价格后在进行输出,好处在于价格的变化不影响程序的编程,也无需修改程序就能获得值

cout<<7+4<<endl;
int a,b;
cin>>a>>b;
cout<<a+b<<endl;

表达式的结果:

a = 6;
b = 3;
a+b;
//如果还想使用结果那么就可以申明新的变量来接收
int c = a+b;
cout<<c<<endl;//就输出了a+b的值

4.算术运算符的应用

天安门广场位于北京市中心,可容纳100万人举行盛大集会,是世界上最大的城市广场。天安门广场南北长880米,东西宽500米。请问它的周长和面积分别是多少?

#include
using namespace std;
int main(){
	int a,b;
	cin>>a>>b;
	int c = (a+b)*2;
	cout<<"周长="<<c<<endl;
	int s = a*b;
	cout<<"面积="<<s<<endl;
	return 0;
}

编写一个程序,算一算《雪花》第一句中数字1、2、3、4的和是多少?
雪花一片二片三四片,
五片六片七八片,
九片十片无数片,
飞入梅花都不见。

#include
using namespace std;
int main(){
	int sum = 0;
	sum = sum + 1;
	sum = sum + 2;
	sum = sum + 3;
	sum = sum + 4;
	cout<<sum<<endl;
	return 0;
}

5.取余运算符

问题:还剩下多少钱?
童童从零花钱中拿了50元钱去文具店买练习本,—个练习本3元,请问他最多能买多少个练习本,还剩下多少钱?
50÷3=16…… 2

取余运算:两个数相除的余数
数学:5 ÷ 2 = 2 ····· 1
c++ :
5 / 2 = 2 商
5%2 = 1 余数

int a = 50,b = 3;
int c = a / b;
int d = a % b;
cout << c << endl;

6.交换两位数字的位置

前情提要
尼克家种的胡萝卜今年不仅大丰收,而且还收获了一棵超级胡萝卜王。强盗兔听到了这个消息,就想把这棵萝卜占为己有。这天强盗兔来到尼克家门口,记下了他家的门牌号—62号,准备晚上再动手。这件事刚好被尼克发现了,聪明的尼克把门牌号上的十位数字和个位数字换一下,变成了26号并报警。晚上,愚蠢的强盗兔找了半天都没找到62号,同时被警察逮了个正着。

//编写一个程序,输入一个两位数,交换十位与个位上的数字,并输出。
#include
using namespace std;
int main(){
	int n,ge,shi;
	cin>>n;
	shi = n /10;
	ge = n % 10;
	n = ge*10 + shi;
	cout<<n<<endl;
	return 0;
}
//输入一个三位正整数,将这个整数倒过来输出。例如:输入123,输出321。
#include
using namespace std;
int main(){
	int r,x,y,z;
	cin>>r;
	z = r/100;
	y = r/10%10;
	x = r%10;
	r = x*100+y*10+z;
	cout<<r<<endl;
	return 0;
}
//童童和他的好朋友去电影院看电影,电影的时长是8315秒,请问他们看了几小时、几分钟、几秒?
//1小时=60分钟
//1分钟=60秒
#include
using namespace std;
int main(){
	int n = 8315,h,m,s; 
	h = n/60/60;
	m = n/60%60;
	s = n%60;
	cout << h << ":" << m << ":" << s << endl;
	return 0;
}

7.竖式运算18

输出:
        18
   +   870
----------
	   888

#include 
using namespace std;
int main(){
	int a= 18, b = 870;
	int c = a +b;
	cout << "        "<< a << endl;
	cout << "   "<< "+"<<"   "<< b <<endl;
	cout <<"----------" << endl;
	cout <<"       "<< c << endl;
	return 0;
}

上面输出要是改变了一个值,那么输出的空格又要变化才能对齐;

  1. 为了控制整个输出的格式可以使用setw()函数(可以设置固定的一个宽度输出,小括号就是输出的内容占几个字符位置)头文件
  2. 例如:
    setw(-10)代表输出内容是左对齐,一共占10个位置)
    setw(10)代表输出内容是右对齐,一共占10个位置)
#include 
#include 
using namespace std;
int main(){
	cout<<setw(-10)<<123<<endl;
	cout<<setw(10)<<123<<endl;
	return 0;
}

NOIP(C++)信息学奥赛课程--持续更新_第3张图片

8.总结

  1. 算术运算符 + - * / %
  2. 表达式,操作符和操作数连接起来的式子
  3. 取余运算,得到两个数得余数
  4. 设置阈宽头文件

第四课 数据类型之浮点数

浮点数顾名思义小数,本节课学习C++中小数的表示方式

课题引入:
童童买了一根钢笔和一个笔袋,请问一共花了多少钱?
品名:钢笔单价:3.5元
品名:笔袋单价:9.9元

#include 
using namespace std;
int main(){
	int a=3.5,b=9.9;
	int c = a + b;
	cout<<c<<endl;
	return 0;
}

不难发现输出的是整数12;怎么表示小数呢?

1.什么是浮点数?

数据类型
int 整数类型
float 浮点数类型
那么代码更改为如下就可实现

#include 
using namespace std;
int main(){
	float a=3.5,b=9.9;
	float c = a + b;
	cout<<c<<endl;
	return 0;
}

2.计算三角形的面积

古埃及国王也称为法老,是古埃及最大的奴隶主,拥有至高无上的权力,他们被看做神的化身。他们为自己修建了巨大的陵墓,因其外形像汉字的“金”字,被称为“金字塔”。金字塔是法老权力的象征,埃及至今共发现金字塔96座。

例题:
“金字塔”的底是正方形,侧面由四个大小相等的等腰三角形构成。
请编写一个程序,输入底和高,输出三角形的面积。
提示:三角形面积=底*高/2

int a=3,h=5;
float s =a*h/2;
cout << "s="<<s << endl;
//输出的结果是 7 
int a=3,h=5;
float s =a*h/2.0;
cout << "s="<<s << endl;
//输出的结果是  7.5

区别,整数在相乘相除时得到还是一个整数,那么如果在运算过程中遇到了小数,它会自动转为小数运算,得到小数的结果;

3.什么是数据类型转换

不同类型的数据之间,可以进行类型转换。

int -> float 	2->2.0
flota -> int 	2.0->2

float a = 2.5;
cout << int(a) << endl;//浮点型转换成整型;
int b = 2;
cout << float(b)<< endl;//整型转换成浮点型;

练习:
1 .童童的体重是33.5千克,美美的体重的是28.6千克,达达的体重是38.2千克,他们的平均体重是多少?请使用键盘输入的方式输入体重。

#include 
using namespace std;
int main(){
	cout <<"请输入体重:"<<endl;
	float x, y,z;
	cin >>×>> y>>z;
	float k =(x+y+z)/3;
	cout <<"k=" << k << endl;
}

4.cout格式化输出

格式化输出

成员函数 作用相同的控制符 作用
precision(n) setprecision(n) 设置实数的精度为n位
width(n) setw[n) 设置字段亮度为n位
setf(ios::state) setiosflags(ios::state) 设置输出格式状态,括号中应该给出格式状态
fill(c) setfill(c) 设置填充字符c
unsetf(ios::state) resetioflags(ios::state) 终止己设置的输出格式状态

举例讲解:

float a = 3.19;
cout<<setprecision(2)<<a<<endl;  //3.2
//保留的数字的两位,包含整数+小数位数
cout.precision(2);
cout<<a<<endl; //3.2
cout<<setw(10)<<setiosflags(ios:right)<<a<<endl;
//输出的就是右对齐一个10个字符位置
//自行练习...........

植树节
植树节到了,童程童美学院组织植树活动,规定每位同学品要完成两棵小树苗的种植。A班、B班、C班的学生人数通过键盘输入。
分别计算A班、B班、C班种植的小树苗数量。

#include 
using namespace std;
int main(){
	int a, b,c;
	cin a >> b >>c;
	int sum_a = a*2;
	int sum_b = b*2;
	int sum_c = c*2;
	cout << "A:<< sum_a << endl;
	cout << "B:<< sum_b << endl;
	cout << "C:" << sum_c << endl;
}

5.常量

程序运行过程中,不会改变的量,称为常量。

const in N = 2;
常量的变量名我们约定都是大写;
const 是定义常量的关键字,常量定义后无法改变,上面题目上a2 b2 c*2其中2就是常量

定义常量的好处:
1:常量通常有明确的含义,让代码便于理解;
2:便统一修改;

例题1:
从键盘输入圆的半径r,计算圆的面积和周长。
面积公式:s=π x r x r
周长公式: c =2×π×r
注:π圆周率是周长和直径d的比,是一个固定值,约等于3.14

#include 
using namespace std;
int main(){
	const float PI =3.14;
	f1oat r;
	cin >> r;
	//计算网的周长和面积
	float s =PI * r * r;
	float c =2 * PI * r;
	cout <<"面积:"<< s << endl;
	cout <<"周长:" << c << endl;
	return 0;
}

例题2:
细胞分裂
细胞学说是1838-1839年由德国的植物学家施莱登和动物学家施旺提出。该学说认为一切生物都是由细胞构成,细胞是生命的结构单位,细胞只能由细胞分裂而来。

1个细胞,第一次分裂成2个,第二次2个分裂成4个,…编写一个程序,算一算第5次分裂成几个。

1个细胞,第一次分裂成2个,第二次2个分裂成4个,…编写一个程序,算—算第5次分裂成几个。
int n = 1;
第一次: n = n*2;
第二次: n = n * 2;
第三次: n = n * 2;

#include 
using namespace std;
int main(){
	int n= 1;
	n=n*2;
	n=n*2;
	n=n*2;
	n*=2;
	n*=2;
	cout << n << endl;
	return 0;
}

6.复合赋值运算符

+=加等  *=乘等  /=除等  -=减等  %=取余等

a = a + 1  -> a+=1
a = a / 2  -> a/=2

//练习
//自行计算如下代码结果
int x = 1, y = 2,z = 3;
z *= x+y*3;
cout<<z<<endl;
x = (z+=3)*2;
cout<<x<<endl;
cout<<z<<endl;
x%=z/y+5;
cout<<x<<endl;

7.总结

  1. 数据类型 int float不同的数据类型不能直接进行运算,需要进行转换,隐式转换和强制转换
  2. 常量,不会改变的量 大写英文字母 使用const
  3. 复合赋值运算符

第五课 基本数据类型

单词

float 单精度浮点数
double 双精度浮点数

1.认识C++中的基本数据类型

NOIP(C++)信息学奥赛课程--持续更新_第4张图片

2.基本数据类型之整型

类型 字节数 上下限 有效位数 举例
整数 4 -2^31 ~ 2^31-1 10 int i;
长整型 8 -2^63 ~ 2^62-1 19 long long i;
1.整型数据直接赋值
例如: int a = 100;
2.表达式的结果取整数部分进行赋值
例如: int b = 5/2; b = 2
3.运算时要防止溢出的发生
int max = 2147483647;
int min = -2147483648
4.sizeof方法
计算变量存储空间的大小

【问题描述】
分别定义short , int, long long类型的变量各一个,并依次输出它们的存储空间大小(单位∶字节)。
输出格式:一行,三个整数,分别是三个变量的存储空间大小,用一个空格隔开。
【样例输出】2 4 8

//计算变量存储空间的大小
#include 
using namespace std;
int main(){
	short a;
	int b;
	long long c;
	cout << sizeof(a) << " ";
	cout << sizeof(b) << " ";
	cout << sizeof(c) << endl;
	return 0;
}

3.基本数据类型之浮点型

类型 字节数 上下限 有效位数 举例
单精度浮点型 4 -3.4e-38~3.4e+38 7 float i;
双精度浮点型 8 -1.7e-308~1.7e+308 15 double i;
1.浮点型数据表示形式

通常写法∶3.14、314、0.1;
科学计数法︰1.25e2、1.25e-2 ;
其中1.25e2表示1.25乘以10的2次方;1.25e-2表示1.25乘以10的负2次方。

2.默认的浮点型数据是double型,如果需要表示float类型,需要加”f”或者”F”后缀。

例如: float f1 = 3.14f;

3.保留指定小数位数
#include
cout << fixed <<setprecision(2)<< a ;
	fixed :按照一般小数形式输出
	setprecision(2): 设置小数精度
	a: 变量名
4.例题 求阴影部分的面积

【问题描述】
输入正方形的边长m和n(保证m 【样例输入】10.0 20.0
【样例输出】阴影的面积为:150
NOIP(C++)信息学奥赛课程--持续更新_第5张图片

#include
using namespace std;
int main(){
	//计算阴影部分的面积
	//声明两个double类型变量储存边长,并输入double a,b;
	cin >> a > b;
	//[声明三个double类型变量存储总面积,左上角空白,上角空白
	double alls,as,bs;
	//计算面积
	alls = a *a + b *b;
	as = (a + b)*a / 2;bs = b *b / 2;
	//输出
	cout <<"阴影的面积为:" << alls - as - bs << endl;	
	return 0;
}
5. 计算圆形的周长和面积

【问题描述】
编程实现输入圆形的半径值(double),输出圆的周长和面积(π取3.14)
圆形周长公式:C=2πR圆形面积公式:S=πR2
【样例输入】
5.67
【样例输出】
圆的周长为:35.6076
圆的面积为:100.948

#include
using namespace std;
int main(){
	//声明变量r,输入double r;
	cin >>r;
	/计算周长,面积
	doub1e c,s,pi = 3.14;c = 2 * pi * r;
	s = pi * r * r;//输出周长和面积
	cout <<“圆的周长为:"<< c << endl;
	cout <<“圆的面积为:"<< s << endl;
	return 0;
}

第六课 基本数据类型

1.基本数据类型之字符型

类型 字节数 上下限 举例
字符型 1 256个不同字符 char i;
1.基本数据类型之字符型注意:

1、字符常量只能用单引号括起来,不能用双引号或其他括号。例如:‘A’,‘&’;
2、字符常量只能是单个字符,不能是字符串也不能为空。
错误写法:‘ABC’ , "
3、字符可以是字符集中任意字符。但数字被定义为字符型之后就不能当作数字本身参与数值运算。如‘5’和5是不同的。‘5’是字符常量,不能作为数值5参与运算。

ASCII需要记住的三个
‘a’ - 97
‘A’ - 65
‘0’ - 48

2.输出字母对应的ASCII值

【问题描述】
输入英文字母(输入范围为A-Z,a-z之间),输出对应的ASCII值。
【样例输入1】A
【样例输出1】65
【样例输入2】z
【样例输出2】122

//输入字母字符
char c;
cin >> C;
//输出字母字符对应的ASCIIcout <
3.输入数字字符,输出对应的数字

【问题描述】
输入数字字符(输入范围为‘0 - 9’之间),
输出两行,第一行是该字符对应的数字,第二行为该数字与1的和。
【样例输入】
3
【样例输出】
3
4

//输入数字字符char n;
cin >> n;
//输出数字字符对应的数值
cout << n - '0' << endl;
//输出对应的数值与数宁1的和
cout << n - '0'+1 << endl;
return 0;
4.输入大写字母,输出对应的小写字母

【问题描述】
输入大写字母(输入范围为A-Z之间),输出对应的小写字母。
【样例输入1】A
【样例输出1】a
【样例输入2】Z
【样例输出2】z

//输入大写字母
char c;
cin >> c;
c = c+ 32;
//输出对应的小写字母
cout << c << endl;
return 0;
5.计算圆形的周长和面积

【问题描述】
输入圆形的半径,输出圆形的周长和面积。半径的输入范围为:0 T取3.14159265 ;
【样例输入】3.2
【样例输出】20.106232.1699

#include
using namespace std;
int main(){
	//输入圆的半径r
	double r;
	cin >> r;
	//计算圆的周长c和面积s
	const double pi = 3.14159265;
	double c = 2* pi * r;
	double s = pi * r *r;//输出
	cout << c << " " << s << endl;
	return 0;
}

2.基本数据类型之布尔型

1.基本数据类型之布尔型 bool

布尔型数据用来判断真假,值只有两个,truefalse

A.布尔类型转为整数类型
bool a = true;
bool b = false;
cout<< a<< “”<<b<<endl;

true转换为整型值为1,false转换为整型值为0

B.整数类型转布尔类型

C++中只有数字0可以隐式转换为false,其它值都转换为true

bool a = 10,b = 0,c = -20;
cout << a<<" "<< b<<" "<
2.数据类型之间的隐式转换

[char short ] -> int -> long long
float - > double

从小类型到大类型可自动完成转换
练习:

char a = 'a';
short b = 3;
int c = 100;
long long d = 240;
double e = 3.12345;
cout << a+ b<<endl;
cout <<c+ d<< endl;
cout << d +e<< endl;
cout <<e +a<< endl;
3.数据类型之间的强制转换

强制类型转换有两种格式:
(数据类型)变量
数据类型(变量或表达式)

float a = 3.14; 	a = 3 ?		(int) a;
float b = 1.32;					int (a+ b);
4.数据类型转换之溢出

不管是隐式类型转换还是强制类型转换,我们遵循由小到大的原则才能确保数据的安全。
如果大数据类型转小数据类型会发生什么呢?

int a;
long long b = 53216547892;
a = ( int ) b;
cout < // 结果为:1676940340

5.练习一下
以下代码运行的结果是;
#include 
using namespace std;
int main(){
	int m = 11,n = 6;
	double b = 2;
	cout << m%n/b << endl;
	return 0;
}
6.练习计算球的体积

【问题描述】
对于半径为r的球,其体积的计算公式为V=4/3Tr3,这里取T = 3.14。现给定r,求V
输入为一个不超过100的非负实数,即球半径,类型为double型。
输出一个实数,即球的体积,保留小数点后2位。【样例输入】4
【样例输出】267.95

#include
#include
using namespace std;
int main(){
	//输入球的半径double r;
	cin >> r;
	/计算球的体积
	const double pi = 3.14;
	double v = 1.0*4/3*pi*r*r*r;//输出体积并保留2位小数
	cout <<fixed << setprecision(2) << v << endl;
	return 0;
}

第七课 运算符与判断结构if

1.复合运算符号

int a = 1 , b = 2 , c = 3;

c = c + a; →c += a;
b = b - a; →b -= a;
a = a * c; →a *= c;
b = b / c; →b /= c;

2.关系运算符

“关系运算”实际上就是“比较运算”

<		小于
<=		小于等于
>		大于
>=		大于等于
==		等于
!=		不等于

3.关系表达式

解释:由关系运算符和运算数组成的式子就是关系表达式

int a = 10;
a < b
int b = 20;
a > b
a >= b
a != b
a <= b
a == b

关系表达式的值(运算结果)是布尔类型

4.程序结构

程序结构有三种,分别是“顺序”、“分支”、“循环”
NOIP(C++)信息学奥赛课程--持续更新_第6张图片

5.if语句

语法规则 
if(判断条件){
	条件为真要做的事;
}

举例:

//if语句
//声明布尔型变量
bool is_sunny = true;
//使用i子语句进行判断
if(is_sunny == true){
	//条件为真做的事
	cout <<"去爬山";
}

6.用if语句判断变量是否等于100

int n = 100 ;
if(n == 100){
	cout <<“变量n的值为100;
}
// ==表示判断
// =表示赋值

7.if语句的使用—判断整数的奇偶性

【问题描述】
编程实现输入一个正整数,判断其奇偶性,并输出;
【样例输入】23
【样例输出】奇数
【样例输入】44
【样例输出】偶数
分析:如何判断一个整数的奇偶性 偶数的特点->能被2整除->整数%2== 0 ; 奇数的特点->不能被2整除->整数%2!=0

8.if 语句的使用判断是否及格

【问题描述】
输入考试成绩(成绩为0~100之间的整数),如果成绩大于或等于60算及格,及格则输出YES,如果成绩小于60算不及格,不及格则输出NO。
【样例输入】62
【样例输出】YES
【样例输入】59
【样例输出】NO

//声明整型变量,输入
int score;
cin >> score;
//使用if语句进行判断
//及格
if(score >= 60){
	cout <<"及格";
}
//不及格
if(score < 60){
	cout <<"不及格";
}
return 0;

9.计算苹果总价

【问题描述】
超市苹果打折促销,总重量如果不超过5斤,单价3元/斤,如果超过5斤,超过部分打八折;输入为所购买苹果的重量,输出为应付款的总额。
【样例输入1】10
【样例输出1】27
【样例输入2】10.2
【样例输出2】27.48

#include
using namespace std;
int main(){
	//声明double类型变量,并输入
	double w;cin >> w;
	//使用if语句来判断,计算
	//不超过5斤
	if(w <= 5){
		cout << w* 3 << endl;
	}
	//超过5斤
	if(w > 5){
		cout <<5*3+(w-5)*3*0.8 << endl;
	}
	return 0;
}

第八课 判断结构else语句

1.if语句语法结构

if...else...语句 //语法结构

if(条件)
	条件为真时执行;
} else{
	条件为假时执行;
}

2.if…else…语句的使用

A.【问题描述】
编程实现输入一个整数,判断其奇偶性,并输出。
【样例输入】23
【样例输出】奇数
【样例输入】44
【样例输出】偶数

//使用if-else语句判断整数的奇偶性
int n;
cin >> n;
if(n % 2 == 0){
	cout <<"偶数";
}else{//奇数
	cout <<"奇数";
}
return 0;

B.【问题描述】
编程实现输入一个整数,输出它的绝对值。
【样例输入】51
【样例输出】51
【样例输入】-34
【样例输出】34

/输出一个整数的绝对值int n;
cin > n;
if(n >= 0){
	cout << n << endl;
}else{ //n < 0
	cout << 0 - n << endl;
}
return O;

3.if…else if…else 语句的使用

1.语法结构
if(条件){
	条件为真时执行;
} else if(条件){
	条件为真时执行;
}
....
else {
	上面的条件都为假时执行;
}
2.骑车与走路(例题)

【问题描述】
在北大校园里没有自行车上课办事会很不方便。但实际上并非去办任何事情都是骑车快,因为骑车需要找车、开锁、停车、锁车,这要耽误一些时间。假设找到自行车开锁并骑上自行车的时间为27秒,停车锁车的时间为23秒。步行每秒行走1.2米,骑车每秒行走3.0米。请判断走不同的距离去办事,是骑车快还是走路快。
【输入】输入一行,包含一个整数,表示某次办事要行走的距离,单位为米。
【输出】输出一行,如果骑车快输出一行“Bike”;如果走路快输出一行“Walk";如果一样快输出一行"All"。
【样例输入】120
【样例输出】Bike

//声明整型变量sint s;
cin >> s;
double bt,wt;
//计算时间时间=总距离/每秒走的距离
bt = 27 +s / 3.0 +23;
wt = s / 1.2;
//判断哪种方式快
if(bt < wt){
	cout << "Bike" ;
}else if(bt > wt){
	cout << "walk";
}else{
	cout <<"A11";
}
return 0;
3.判断倍数(例题)

【问题描述】
输入一个整数,如果是5的倍数,那么输出倍数的值,否则输出No。
【样例输入1】15
【样例输出1】3
【样例输入2】12
【样例输出2】No

#include
using namespace std;
int main(){
	//声明整型变量n,并输入
	int n;
	cin >> n;
	//使用if-else语句判断是否是5的倍数
	if(n % 5 == 0 ){
	}else{ //n不是5的倍数
		cout <<"No";
	}
	return 0;
}

第九课 if…else语句运用

1.分支嵌套

NOIP(C++)信息学奥赛课程--持续更新_第7张图片

if(账号正确){
	if(密码正确){
		cout <<“登录成功”;
	}else{
		cout<<“密码错误”;
	}
}else{
	cout <<“账号错误”;
}

2.例题判断账号密码

判断账号密码
【问题描述】
首先设定账号为123,密码为456。编写程序,实现账号和密码登录,并输出登录结果。

【样例输入1】123 456
【样例输出1】登录成功
【样例输入2】123 789
【样例输出2】密码错误

//声明变量,存储注册时的账号密码,输入的账号密码
int user = 123,pw = 456,u,p;
cin >>u>>p;
//使用分支嵌套进行判断
if(u == user){//账号正确
	//判断密码
	if(p == pw){
		cout <<"登录成功";
	}else{//密码错误
		cout <<"密码错误";
	}
}else{(/账号错误
	cout <<"账号错误";
}

3. 猜数游戏

【问题描述】
现有一数字35,用户输入一个数字与35作比较,如果4入的数字与35相等,则输出猜对了;如果输入的数字比35小则输出猜小了;如果输入的数字比35大则输出猜大了。
输入∶输入一行,包含1个整数。
输出:一行,输出为字符串“猜对了”、“猜小了”和“猜大了”中的一个。
【样例输入】40
【样例输出】猜大了

//声明整型变量,输入
int num;
cin >>num;//判断
if(num == 35){
	cout <<"猜对了";
}else{ //num != 35
	if(num > 35){
		cout <<"猜大了";
	}else{
		cout <<"猜小了";
	}
}
return 0;

4.计算邮资

【问题描述】
根据邮件的重量和用户是否选择加急计算邮费。计算规则:重量在1000克以内(包含1000克),基本费8元。超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算;如果用户选择加急,多收5元。

输入∶输入一行,包含整数和一个字符,以一个空格分开,分别表示重量(单位为克)和是否加急。如果字符是y,说明选择加急;如果字符是n,说明不加急。

输出:一行,包含一个整数,表示邮费。

【样例输入】1200 y
【样例输出】17

//声明变量,整型变量,字符型变量,输入
int m,money;
char n;
cin >> m >>n;//判断,计算邮资
if(m <= 1000){
	money = 8;
}else{//超过1000g
	//超过部分的重量是否被500整除
	if((m-1000)%500==0){
		money = 8 +(m-1000)/500*4;
	else{
		money = 8 + (m-1000)/500*4 +4;
	}
	//判断是否加急
	if(n== 'y '){
		money += 5;
	}
}
//输出
cout <<money << endl;

5.判断能否被3,5整除

【问题描述】
给定一个整数,判断它能否被3,5整除,并输出以下信息:
1、能同时被3,5整除(直接输出35,两个数中间一个空格);
2、只能被其中一个数整除(输出这个除数);
3、不能被任何数整除,输出小写字母n。

输入:输入一行,包含一个整数m。( -1,000,000 < m<_1,000,000 )
输出:输出一行,按照描述要求给出整数被3,5整除的情况。
【样例输入1】9
【样例输出1】3

【样例输入2】15
【样例输出2】3 5

int n;
cin >>n;//进行判断
if(n%3==0){//能被3整除
	if(n%5==0){(/能被5整除
		cout << "3"<<" "<<"5"<<endl;
	}else{
		cout << "3"<<endl;
	}
}else if(n%5==0){
	cout << "5"<<endl;
else{
	cout << "n"<endl;
}
return 0;

第十课 逻辑运算符使用

1.认识逻辑运算

!	逻辑非
&&	逻辑与
||	逻辑或

2.逻辑表达式

解释:含有逻辑运算符的表达式称为逻辑表达式
! 逻辑非
&& 逻辑与
|| 逻辑或
逻辑表达式的结果只有两种 (真)1(假)0

3.单独解析:

A.逻辑非:!

! :非,代表相反的意思

!true		→false
!false		→true
!(4 > 2)	→false
!(9>11)		→true

NOIP(C++)信息学奥赛课程--持续更新_第8张图片

B.逻辑与:&&

&&:与,代表同时的意思
9>5 && 5>3		→true
9>5 && 5<3		→false
9<5 && 5<3		→false

NOIP(C++)信息学奥赛课程--持续更新_第9张图片
总结:有一个为假结果就为假,两个都为真结果才为真

B-1.三角形判断

【问题描述】
给定三个正整数,分别表示三条线段的长度,判断这三条线段能否构成一个三角形(任意两条边之和大于第三边)。输出格式:如果能构成三角形,则输出Yes,否则输出No。

【样例输入】345
【样例输出】Yes

//判断三条线段能否构成一个三角形//声明三个整型变量,并输入
int a,b,c;
cin  a >> b >>c;
//使用if-else语句进行判
if(a+b>c&&b+c>a&&a+c>b){
	cout << "yes";
}else{
	cout << "no";
}
return 0;

C.逻辑与:||

||∶或,代表其中一个的意思
7> 4 || 3 >1		→true
4>2 || 3 >5			→true
6 > 8 || 7 >9		→false

NOIP(C++)信息学奥赛课程--持续更新_第10张图片
总结:有一个为真结果就为真,两个都为假结果才为假

4.例题:

1:判断是否为一门课不及格

【问题描述】
给出一名学生的语文和数学成绩,判断他是否恰好有一门课不及格(成绩小于60分)。
输入:一行,包含两个在0到100之间的整数,分别是该生的语文成绩和数学成绩。
输出:若该生恰好有一门课不及格,
输出1;否则输出0。

【样例输入】50 80
【样例输出】1

//判断一门成绩不及格/[声明两个变量,并输入
int chinese,math;
cin > chinese >>math;//使用if-else语句进行判断
if((chinese>=60&&math<60)||(chinese<60&&math>=60)){
	cout << 1;
}else{
	cout <<0;
}
return 0;
}

2:逻辑运算符优先级NOIP(C++)信息学奥赛课程--持续更新_第11张图片

3:用逻辑表达式判断是否为闰年

【问题描述】
输入一个年份,判断该年是否为闰年。若为闰年则输出Yes ,不是闰年则输出No。
提示∶闰年的判断条件有两个,只要满足其中一个即为闰年。
1)能被400整除
2)不能被100整除,但能被4整除
【样例输入】
2016
【样例输出】
Yes

分析:用逻辑表达式判断是否为闰年
能被400整除	
		年份%400 == 0
||
不能被100整除,但能被4整除
		年份%400 != 0 && 年份%4==0
//判断是否是闰年//声明整型变量,输入
int y;
cin >>y;
//使用if-else语句进行判断
if((y%400==0)ll(y%100!=0&&y%4==O)){
	cout << "Yes";
else{
	cout <<"No" ;
}
return 0;

4:点和正方形的关系

【问题描述】
有个一正方形,四个角的坐标(x,y)分别是( 1,-1) ,( 1,1) ,( -1,-1),( -1,1),×是横轴,y是纵轴。写一个程序,判断一个给定的点是否在这个正方形内(包括正方形边界)。

【输入】输入一行,包括两个整数x, y,以一个空格分开,表示坐标( x , y )。
【输出】输出一行,如果点在正方形内,则输出yes,否则输出no。
【输入样例】11
【输出样例】yes

#include
using namespace std;
int main(){
	//声明两个整型变量,并输入
	int x,y;
	cin >>x >>y;
	//使用if-else语句判断
	if(x>=-1&&x<=1&&y>=-1&&y<=1){
		cout << "yes";
	}else{
		cout << "no" ;
	}
	return 0;
}

你可能感兴趣的:(C++,Python,Java,c++,学习)