1、顺序结构
1.1 输入输出
程序的组成:输入(键盘鼠标或文件)+处理+输出(发送到屏幕或文件)
cin >> 变量1 >> 变量2 >>...>> 变量n;//程序的输入
cout<< 表达式 1<< 表达2 <<...<< 表达式n;//程序的输出
1.1.1 程序的组成
1.1.2 程序框架
#include <bits/stdc++.h> //头文件,引入外部库
using namespace std; //命名空间,形成相对隔离空间
int main() { //主函数,程序入口
cout << "Hello World!"; //输出语句,输出一些内容
return 0; //返回值,退出函数并返回值
} //
1.1.3 程序单词的解释
1.2 变量和常量
1.2.1 变量
定义:变化的量,程序用来存储数据的地方,其中的数据是可以改变的
语法格式:==先定义再使用==
数据类型 变量 = 表达式; //右边表达式赋值给左边
例如:int a = 10;
1.2.2 标识符命名规则
只能使用英文字母、数字和下划线来命名
不能以数字开头
变量名区分大小写(my和My不是同一个变量)
不要使用关键字作为变量名
1.2.3 赋值语句
变量 = 表达式;
a = b;//将b的值赋值给a,b可以是常量、变量或表达式
1.2.4 符号常量
定义:不变的量,程序中使用的一些具体的数、字符等。如,6,-3,‘a’等
语法格式:const 类型 符号常量=常量字串
const double PI = 3.14//习惯上字符常量用大写,变量名用小写
1.3 基本数据类型
不同种类的东西需要不同大小的箱子,因此不同种类的数,也需要不同大小的箱子类型
单位:字节-变量存储空间的大小计算:使用sizeof()方法计算各类型所占内存字节数
//变量存储空间的大小
#include<bits/stdc++.h>
using namespace std;
int main(){
int a;
long long b;
char c;
double d;
cout << sizeof(b);
return 0;
}
1.3.1 整型
整型:int() //占字节数4,大约绝对值不超过2.1*10^9;
长整型:long long() //占字节数8,大约绝对值不超过2.1*10^18;
//计算字节的大小 sizeof(a)
1.3.2 实数型
单精度:float() //占字节数4,精度约7位有效数字;
双精度:double() //占字节数8,精度约15位有效数字;
//用fixed和setprecision()来保留指定的浮点数
1.3.3 字符型
用单引号表示‘字符’
字符:char() //占字节数1,取值范围-128——127;
//char存放字符的是ASCII码,因此字符变量可以转化为整数
1.3.4 布尔型
布尔类型:bool() //占字节数1,0为false,非0为true;
1.3.5 自动转换与强制转换
//自动转换
整型、实型、字符型数据间可以混合运算。在这种情况下,需要将不一致的数据类型转换成一致的数据类型,然后进行运算。为了保证运算精度,系统在运算时的转换规则是将存储长度较短的运算对象转成存储长度较长的类型,然后再进行处理。这种转换是系统自动进行的,具体见下图所示。
//强制转换
将某一数据的数据类型转换为指定的另一种数据类型,强制类型转换只是临时转换。
格式:(类型名)(表达式)
例: int b = 7; float a = 2.5, c = 4.7;
1.4 基本运算
1.4.1 算术运算
加(+),减(-),乘(*),除(/),取模(%)
整除(/)//只有a和b是两个整数类型的表达式,那么a/b表示整除;否则a/b是实型
取模(%)//两个操作数都是整数类型,a%b就是a除以b的余数;求余的值的正负和a保持一致,b再运算中 取绝对值
1.4.2 关系运算
用于表达式之间的大小比较运算符
大于(>),大于等于(>=),小于(<),小于等于(<=),等于(==),不等于(!=)
1.4.3 逻辑运算
对表达式或变量做出逻辑判断的运算符
与(&&)//左右两边的值均了真时,结果为真,否则为假
或(||)//左右两边的值均了假时,结果为假,否则为真
非(!)//如果表达式的值为真,那么“!表达式”的值为假,否则为真
1.4.4 变量的自增与自减运算
注:++在变量前面时,先进行自增操作,再执行本语句;
在后面时,待本行语句执行完成后,再进行自增操作;
自增(++)//将整型和浮点型变量的值加1
自减(--)//减1
1.4.5 三目运算
又称为条件运算符,是c++中唯一具有3个操作数的运算符
a ? b : c //表示对表达式a求值,若值为真则执行表达式b,否则执行表达式c
1.4.6 位运算
直接对整数在内存中的二进制位进行运算;常用的位运算包括与,或,非,异或,左移,右移
与(&)//对应两个二进制位均为1时,对应二进制位的运算结果才为1,否则为0
或(|)//对应两个二进制位均为0时,对应二进制位的运算结果才为0,否则为1
非(~)//将操作数中的二进制位0变成1,把1变成0
异或(^)//对应的两个二进制位不相同时,对应的二进制位的运算结果为1,否则为0
左移(<<)//左移时,高位丢弃,右边低位补0。左移n位就是乘以2的n次方
右移(>>)//
1.5 数学库常用函数
#include <algorithm> // 用数学函数
1.6 格式化输入输出
C 语言的输入输出
格式化输入函数scanf:格式化输入任何数据列表
格式:scanf (格式控制符, 地址列表) 格式控制符由%+控制符
格式化输出函数printf
格式:printf(格式控制符 , 输出列表)
/*题目描述
读入一个字符,一个整数,一个单精度浮点数,一个双精度浮点数,然后按顺序输出它们,并且要求在他们之间用一个空格分隔。输出浮点数时保留6位小数。
*/
#include <bits/stdc++.h>
using namespace std;
int main(){
int a;
float b;
double c;
char d;
scanf("%c%f%lf%d",&d,&b,&c,&a);
printf("%c %.6f %.6lf %d",d,b,c,a);
return 0;
}
2、选择结构
2.1 单分支if
如果表达式的值为真,则‘if’后的语句块会被执行,否则,其后的语句块略过
if(表达式){
语句1;
}
//部分操作示例代码
int n;
cin >> n;
if(n % 2 == 0){
cout << "偶数";
}
if(n % 2 == 1){
cout << "奇数";
}
2.2 双分支 if-else
如果表达式的值为真,则if后的语句块会被执行,否则执行else后的语句块
if(表达式){
语句1;
}
else{
语句2;
}
//部分操作示例代码
int n;
cin >> n;
if(n % 2 == 0){
cout << "偶数";
}else{
cout << "奇数";
}
2.3 选择嵌套
if-else 语句特可以同时使用多个,构成多个分支
if(表达式1){
语句块1;
}
else if(表达式2){
语句块2;
}
........
else if(表达式n){
语句块n;
}
else{
语句块n+1;
}
//部分操作示例代码
int n;
cin >> n;
if(n < 60){
cout << "不及格";
}
else if(n < 80){
cout << "良好";
}
else if(n < 90){
cout << "优秀";
}
else{
cout << "卓越";
}
2.4 switch语句
switch语句用于表达式数量较多的分支条件
switch(表达式){
case 常量表达式1:
语句块1;break;
case 常量表达式2:
语句块2;
....
default:
语句块n;
}
//break;用于当前程序语句中断
//部分操作示例代码
int n;
cin >> n;
switch(n){
case 1: cout << "星期一"; break;
case 2: cout << "星期二"; break;
case 3: cout << "星期三"; break;
case 4: cout << "星期四"; break;
case 5: cout << "星期五"; break;
case 6: cout << "星期六"; break;
case 7: cout << "星期日"; break;
default: cout << "不存在"; break;
}
3、循环结构
3.1 for语句
for语句可以控制一个语句或者语句重复执行指定的次数,语句块可以执行0或多次,直到给定的条件不成立
for(表达式1;表达式2;表达式3){
语句块1;//循环体
}
//表达式1:循环变量的初始值
//表达式2:循环变量是否继续的终值
//表达式3:改变循环变量的值
for( ;; )//无限循环,只有遇到break或return语句才会退出循环
//利用for循环。计算输出的和。
#include<bits/stdc++.h>
using namespace std;
int n,s = 0;
int main(){
cin >> n;
for(int i = 1; i <= n; i++)s += i;
cout << s;
return 0;
}
3.2 while语句
先判断表达式是否成立再执行语句块
while(表达式){
语句块;//循环体
}
//利用while循环,分别输出之间的所有奇数的和、偶数的和。
#include<bits/stdc++.h>
using namespace std;
int n,i = 1,s1 = 0,s2 = 0;
int main(){
cin >> n;
while(i <= n){
if(i % 2 == 0)s1 += i;
else s2 += i;
i++;
}
cout << s1 << " " << s2;
return 0;
}
3.3 do while 语句
先执行语句块再判断表达式是否成立
do{
语句块;//语句块最少执行1次
}while(表达式);
//把一堆苹果分给个小朋友,要使每个人都能拿到苹果,而且每个人拿到的苹果数都不同的话,这堆苹果至少应该有多少个?
#include<bits/stdc++.h>
using namespace std;
int n, s = 0;
int main(){
cin >> n;
do{
s += n;
n--;
}while(n > 0);
cout << s;
return 0;
}
爱编程 玩科技 懂教育
领取专属 10元无门槛券
私享最新 技术干货