C++基础语法与流程控制(适合初学者入门或基础复习)
一、C++基础语法(入门必掌握)
1.1 程序的基本结构
C++程序的最小运行单元是“函数”,其中main函数是程序的入口(必须有且仅有一个),程序从main函数开始执行,执行完毕后结束。
基础框架示例(可直接复制运行):
#include <iostream> // 引入输入输出流库,用于cout、cin
using namespace std; // 使用标准命名空间,避免重复写std::
// main函数:程序入口
int main() {
cout << "Hello, C++!" << endl; // 输出语句,endl表示换行
return 0; // 表示程序正常结束,返回0(非0表示异常)
}
关键说明:
- #include <iostream>:预处理指令,引入系统提供的输入输出库,没有它无法使用cout(输出)和cin(输入)。
- using namespace std;:std是C++的标准命名空间,所有标准库的内容(如cout、cin)都在这个空间里,加上这句话可以简化代码。
- main():函数名,int表示函数返回值类型(整数),括号内是函数参数(此处为空,即无参数)。
- cout << 内容:输出语句,<< 是“插入运算符”,将后面的内容输出到屏幕。
- return 0;:main函数的返回值,返回给操作系统,0代表程序正常运行结束,通常可省略(编译器会自动补充)。
1.2 注释(不影响程序运行,用于备注)
注释是给程序员看的,编译器会忽略注释内容,用于说明代码功能、标注思路,方便自己和他人阅读。C++有两种注释方式:
// 单行注释:从//开始,到该行结束(适合简短备注) cout << "Hello"; // 这是单行注释,说明该语句是输出Hello /* 多行注释:从/*开始,到*/结束(适合长篇说明) 这里可以写多行内容 比如:这是一个输出语句,用于打印欢迎信息 */ cout << "Welcome to C++";
1.3 变量与数据类型
变量是用来存储数据的“容器”,使用前必须先声明,再赋值(或声明时直接赋值)。C++常用基础数据类型如下(初学者重点掌握前4种):
int | 整数类型(正负整数) | 4字节 | int a = 10; int b = -5; |
double | 双精度浮点数(小数,精度高) | 8字节 | double pi = 3.14159; double score = 98.5; |
char | 字符类型(单个字符,用单引号包裹) | 1字节 | char c = 'A'; char d = '6'; |
bool | 布尔类型(只有两个值:true(真,等价于1)、false(假,等价于0)) | 1字节 | bool flag = true; bool isPass = false; |
变量使用注意:
- 变量名只能由字母、数字、下划线组成,且不能以数字开头(如int 123a; 错误)。
- 变量名区分大小写(如int A; 和 int a; 是两个不同的变量)。
- 不能使用C++的关键字作为变量名(如int int; 错误,int是关键字)。
1.4 输入与输出(cout & cin)
输入(cin):从键盘获取用户输入的数据,赋值给变量;输出(cout):将变量或固定内容打印到屏幕。
示例(输入一个整数和一个小数,再输出):
#include <iostream>
using namespace std;
int main() {
int num1; // 声明整数变量num1
double num2; // 声明浮点数变量num2
cout << "请输入一个整数:";
cin >> num1; // 输入,>>是“提取运算符”,将键盘输入的值赋给num1
cout << "请输入一个小数:";
cin >> num2;
cout << "你输入的整数是:" << num1 << endl;
cout << "你输入的小数是:" << num2 << endl;
return 0;
}
1.5 运算符(常用)
运算符用于对数据进行运算,初学者重点掌握以下4类:
(1)算术运算符(用于计算)
+(加)、-(减)、*(乘)、/(除)、%(取余,仅用于整数)
int a = 10, b = 3; cout << a + b; // 输出13 cout << a - b; // 输出7 cout << a * b; // 输出30 cout << a / b; // 输出3(整数除法,舍弃小数部分,不是四舍五入) cout << a % b; // 输出1(10除以3,余数是1)
(2)赋值运算符(用于赋值)
=
int a = 5; a += 3; // 等价于 a = a + 3; 结果a=8 a -= 2; // 等价于 a = a - 2; 结果a=6 a *= 4; // 等价于 a = a * 4; 结果a=24
(3)比较运算符(用于判断大小,返回bool值)
==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)
int a = 10, b = 5; cout << (a == b); // 输出0(false,10不等于5) cout << (a > b); // 输出1(true,10大于5)
注意:==是判断相等,=是赋值,不要混淆(如if(a=5) 是赋值,不是判断a是否等于5)。
(4)逻辑运算符(用于逻辑判断,返回bool值)
&&(逻辑与:两个条件都为真,结果才为真)、||(逻辑或:两个条件有一个为真,结果就为真)、!(逻辑非:取反,真变假,假变真)
int a = 10, b = 5, c = 3; cout << (a > b && b > c); // 输出1(true,10>5且5>3) cout << (a > b || b < c); // 输出1(true,10>5为真,不管后面条件) cout << !(a > b); // 输出0(false,10>5是真,取反为假)
二、流程控制(控制程序执行顺序)
C++程序默认是“顺序执行”(从上到下,依次执行),流程控制用于改变执行顺序,分为3类:分支结构、循环结构、跳转语句,初学者重点掌握前两类。
2.1 分支结构(if-else、switch)
(1)if-else 语句(最常用,多条件判断)
作用:判断一个条件是否成立,成立则执行一段代码,不成立则执行另一段代码(else可选)。
基本格式:
if (条件表达式) {
// 条件成立时,执行的代码(可以有多行)
} else if (另一个条件表达式) {
// 第一个条件不成立,第二个条件成立时执行的代码
} else {
// 所有条件都不成立时,执行的代码(可选)
}
示例(判断成绩等级):
#include <iostream>
using namespace std;
int main() {
double score;
cout << "请输入你的成绩:";
cin >> score;
if (score >= 90) {
cout << "优秀" << endl;
} else if (score >= 80) {
cout << "良好" << endl;
} else if (score >= 60) {
cout << "及格" << endl;
} else {
cout << "不及格" << endl;
}
return 0;
}
注意:if后面的条件表达式必须用括号()包裹;如果{}内只有一行代码,{}可以省略,但建议初学者都加上,避免出错。
(2)switch 语句(多分支匹配,适合固定值判断)
作用:根据一个变量的值,匹配不同的case,执行对应的代码,适合“变量等于某个固定值”的判断(如菜单选择)。
基本格式:
switch (变量) {
case 值1:
// 变量等于值1时执行的代码
break; // 跳出switch语句,避免继续执行后面的case
case 值2:
// 变量等于值2时执行的代码
break;
...
default:
// 变量不匹配任何case时执行的代码(可选)
break;
}
示例(简单菜单选择):
#include <iostream>
using namespace std;
int main() {
int choice;
cout << "请选择功能:1. 登录 2. 注册 3. 退出" << endl;
cin >> choice;
switch (choice) {
case 1:
cout << "正在执行登录..." << endl;
break;
case 2:
cout << "正在执行注册..." << endl;
break;
case 3:
cout << "退出程序,再见!" << endl;
break;
default:
cout << "输入错误,请重新选择!" << endl;
break;
}
return 0;
}
注意:每个case后面的break不能少,否则会“穿透”(执行完当前case后,继续执行下一个case,直到遇到break)。
2.2 循环结构(for、while、do-while)
作用:重复执行一段代码,直到满足终止条件,适合需要多次重复的操作(如打印1-10、计算1-100的和)。
(1)for 循环(最常用,适合已知循环次数)
基本格式(3个部分用分号分隔):
for (初始化变量; 循环条件; 更新变量) {
// 循环体:每次循环执行的代码
}
各部分说明:
- 初始化变量:循环开始前执行一次,用于定义循环计数器(如int i = 1;)。
- 循环条件:每次循环前判断,条件成立则执行循环体,不成立则退出循环。
- 更新变量:每次循环体执行完毕后执行,用于修改计数器(如i++,表示i自增1)。
示例(打印1-10的数字):
#include <iostream>
using namespace std;
int main() {
// 初始化i=1,循环条件i<=10,每次循环i自增1
for (int i = 1; i <= 10; i++) {
cout << i << " ";
}
cout << endl; // 换行
wap.xiuxium.org/a/3komho.html
wap.xiuxium.org/a/elikiq.html
wap.xus5s.info/a/exmgf6.html
wap.xus5s.info/a/agtu20.html
wap.nh4sd.info/a/swxb1m.html
wap.nh4sd.info/a/mf97ll.html
wap.uh5h.cn/a/smpxid.html
wap.uh5h.cn/a/rg7fix.html
wap.mk5kl.cn/a/yxmy41.html
wap.mk5kl.cn/a/ioppb9.html
wap.nt8k6.cn/a/2tjgn5.html
wap.nt8k6.cn/a/8c4dnz.html
wap.xiuxium.fun/a/kjfalv.html
wap.xiuxium.fun/a/y1zfq0.html
wap.mtspw.org/a/plznjk.html
wap.mtspw.org/a/ehb4xq.html
wap.mitasp.org/a/whlzho.html
wap.mitasp.org/a/fd59iu.html
wap.xiuximh.org/a/443van.html
wap.xiuximh.org/a/5shizd.html
wap.xiuxim.org/a/jne5g2.html
wap.xiuxim.org/a/c363e7.html
wap.02588.org/a/uwjx2k.html
wap.02588.org/a/dmfdex.html
wap.m1k2.pro/a/9viubt.html
wap.m1k2.pro/a/1wzdtk.html
wap.t5m3.org/a/d1o4k3.html
wap.t5m3.org/a/98xdo7.html
wap.ws2n.cn/a/qqqb6a.html
wap.ws2n.cn/a/oovxui.html
wap.mb5n.com/a/d40o5z.html
wap.mb5n.com/a/b5p6z9.html
wap.xxxmhm.org/a/7yo6ru.html
wap.xxxmhm.org/a/di833d.html
wap.xiuxiuw.cn/a/1lrquy.html
wap.xiuxiuw.cn/a/gcfds0.html
wap.w1m.org/a/3aljyo.html
wap.w1m.org/a/cmqdhr.html
wap.n1w.org/a/b3zfww.html
wap.n1w.org/a/lbzbt9.html
wap.6l2nm.cn/a/vktj1s.html
wap.6l2nm.cn/a/wjub9b.html
wap.8n2m.cn/a/ucav5o.html
wap.8n2m.cn/a/w93qg1.html
wap.m2h.pro/a/52t83a.html
wap.m2h.pro/a/pq9a7b.html
wap.manhuam.cn/a/a67ov9.html
wap.manhuam.cn/a/ca8sru.html
wap.xiuxium1.org/a/r5ylwp.html
wap.xiuxium1.org/a/3nbxgm.html
wap.51chigua3.org/a/myyq9j.html
wap.51chigua3.org/a/3s1rfv.html
wap.51chigua8.org/a/2lwt51.html
wap.51chigua8.org/a/zod4ke.html
wap.nys5.mobi/a/3im2gr.html
wap.nys5.mobi/a/zol5wt.html
wap.nhk1.mobi/a/6cocn4.html
wap.nhk1.mobi/a/hq9k0m.html
wap.mhn1.mobi/a/q84twl.html
wap.mhn1.mobi/a/3bsqsf.html
wap.xiuxiumh.me/a/bcwrfy.html
wap.xiuxiumh.me/a/ls1jl1.html
wap.xiuxium.me/a/wz7qv6.html
wap.xiuxium.me/a/gzuluw.html
wap.wwmhm.org/a/0261lu.html
wap.wwmhm.org/a/ky9vfe.html
wap.mtspmm.org/a/wqdkod.html
wap.mtspmm.org/a/5mp654.html
wap.mitaospm.org/a/zied0z.html
wap.mitaospm.org/a/1hsvi0.html
wap.xjspm.cn/a/q7557j.html
wap.xjspm.cn/a/q20jq4.html
wap.xxmhw.cn/a/3bipvs.html
wap.xxmhw.cn/a/3y5hxx.html
wap.mqmh.org/a/f1699l.html
wap.mqmh.org/a/v0z62v.html
wap.xxmhm.org/a/g6jsx9.html
wap.xxmhm.org/a/6b2d0l.html
return 0;
}
(2)while 循环(适合未知循环次数,先判断后执行)
基本格式:
while (循环条件) {
// 循环体:条件成立时执行,执行完后再次判断条件
}
示例(计算1-100的和):
#include <iostream>
using namespace std;
int main() {
int sum = 0; // 用于存储总和
int i = 1; // 计数器
while (i <= 100) {
sum += i; // 等价于 sum = sum + i;
i++; // 计数器自增,避免死循环
}
cout << "1-100的和是:" << sum << endl;
return 0;
}
注意:while循环一定要确保“循环条件会被改变”(如i++),否则会陷入“死循环”(程序一直执行,无法结束)。
(3)do-while 循环(适合未知循环次数,先执行后判断)
基本格式:
do {
// 循环体:先执行一次,再判断条件
} while (循环条件);
区别于while循环:do-while循环至少执行一次循环体,不管条件是否成立;while循环是先判断,条件不成立则一次都不执行。
示例(让用户输入一个正整数,直到输入正确为止):
#include <iostream>
using namespace std;
int main() {
int num;
do {
cout << "请输入一个正整数:";
cin >> num;
} while (num <= 0); // 若输入的数≤0,继续循环
cout << "你输入的正整数是:" << num << endl;
return 0;
}