c++基本内容

1.程序的注释,变量,常量,关键字,标识符命名规则

cpp 复制代码
#include<iostream>//头文件,iostream:输入输出流
using namespace std;/*名称空间,C++ 的标准库函数(比如 cout)都放在一个叫 std 的大盒子里。
                    如果不写这一行,你在用 cout 时就必须写成 std::cout。*/

//常量的定义方式(常量不可修改)
//1,#define 宏常量(main函数上面)
//2,const修饰的变量 

//1,#define 宏常量
#define Day 7

int main() {
	cout << "一周有" << Day << "天" << endl; // endl:换行
	//2,const修饰的变量
	const int month = 12;
	cout << "一年有" << month << "个月" << endl;

	int a = 10; //定义一个整数变量 a,并赋值为 10
	cout << "Hello, World!" <<a << endl;
	
	return 0;
}

/*1.6 标识符命名规则
**作用**:C++规定给标识符(变量、常量)命名时,有一套自己的规则
* 标识符不能是关键字
* 标识符只能由字母、数字、下划线组成
* 第一个字符必须为字母或下划线
* 标识符中字母区分大小写
> 建议:给标识符命名时,争取做到见名知意的效果,方便自己和他人的阅读*/

2.整型,sizeof(),浮点型,字符型,转义字符,字符串,bool类型,数据的输入(cin)

cpp 复制代码
#include<iostream>
#include<string>
using namespace std;


int main() {
	//整型:short(2),int(4),long(4),long long(8),单位字节
	//可以用sizeof()函数查看数据类型所占内存大小
	//语法:sizeof(数据类型或变量名)
	short num1 = 10;
	cout << "short类型占用内存空间为:" << sizeof(short) << "字节" << endl;
	int num2 = 20;
	cout << "int类型占用内存空间为:" << sizeof(num2) << "字节" << endl;
	
	//浮点型:float(4),double(8),long double(16)
	float f1 = 3.1415926f;
	cout << "float类型占用内存空间为:" << sizeof(float) << "字节" << endl;
	double d1 = 3.1415926;
	cout << "double类型占用内存空间为:" << sizeof(d1) << "字节" << endl;
	//科学计数法E或e,E6表示10的6次方,E-6表示10的负6次方
	float f2 = 3.14e2f; //3.14*10的2次方
	cout << "f2=" << f2 << endl;
	float f3 = 3.14e-2f; //3.14*10的负2次方
	cout << "f3=" << f3 << endl;
	//字符型:char(1),另一种整数类型,对应的ASCII编码:A~Z(65~90),a~z(97~122),0~9(48~57)
	char ch = 'A';
	cout << "char类型占用内存空间为:" << sizeof(ch) << "字节" << endl;
	int ch2 = ch; 
	cout<< ch << "对应的ASCII码值为:" << ch2 << endl;
	//转义字符:\n换行,\t制表符table:四个空格,\\反斜杠:代表\,\'单引号,\"双引号
	cout << "Hello\nWorld!" << endl;
	cout << "Hello\\World!" << endl;
	//string字符串类型,需要添加头文件#include<string>
	string str = "Hello World!";
	cout << "string类型占用内存空间为:" << sizeof(str) << "字节" << endl;
	cout << str << endl;
	//布尔类型:bool(1),true==非0(真),false==0(假)
	bool flag = true;
	cout << "bool类型占用内存空间为:" << sizeof(flag) << "字节" << endl;
	//cin用于接收键盘输入
	int age;
	cin >> age;//从键盘接收一个整数,信息从cin流进age变量中
	cout << "age=" << age << endl;
	return 0;
}

3.运算符

cpp 复制代码
#include<iostream>
using namespace std;
//算术运算符+,-,*,/,%,自增运算符++,自减运算符--
int main() {
	int a = 10;
	int a1 = 10;
	int b = ++a * 10;//先自增后运算
	int c = a1++ * 10;//先运算后自增
	cout << "a=" << a << endl;
	cout << "b=" << b << endl;//b=110
	cout << "c=" << c << endl;//c=100
	//关系运算符>,<,>=,<=,==,!=
	//赋值运算符=,+=,-=,*=,/=,%=
	int num = 10;
	num += 5;//num=num+5
	cout << "num=" << num << endl;//num=15	
	//逻辑运算符&&,||,!
	//!:非,取反,true变false,false变true
	//&&:与,两个操作数都为true,结果才为true
	//||:或,两个操作数有一个为true,结果就为true
	
	return 0;
}

4.循环,选择

cpp 复制代码
#include<iostream>
using namespace std;
#include<ctime>//time系统时间头文件
int main() {
	//选择结构if语句
	//if(条件表达式){实体}else if (条件表达式){实体}...else{实体}
	int score;
	cout << "请输入成绩:";
	cin >> score;
	if (score >= 90 && score <= 100) {
		cout << "优秀" << endl;
	}
	else if (score >= 80 && score < 90) {
		cout << "良好" << endl;
	}
	else if (score >= 70 && score < 80) {
		cout << "中等" << endl;
	}
	else if (score >= 60 && score < 70) {
		cout << "及格" << endl;
	}
	else if (score >= 0 && score < 60) {
		cout << "不及格" << endl;
	}
	else {
		cout << "输入成绩有误!" << endl;
	}
	//三目运算符 expression1?expression2:expression3;如果expression1为true,
	// 则表达式的值为expression2,否则表达式的值为expression3
	int a = 10;
	int b = 20;
	int c;
	c = a > b ? a : b;
	cout << "c=" << c << endl;//c=20
	//switch case的用法;case里面没有break,那么程序会一直向下执行
	//1,提示用户给电影评分
	cout << "请给电影评分" << endl;
    //2.用户开始进行打分
	int score1 = 0;
	cin >> score1;
	cout << "您打的分数为" << score1 << endl;
	switch (score1) {
	case 10:
		cout << "您认为是经典电影" << endl;
		break;
	case 9:
		cout << "您认为是高分电影" << endl;
		break;
	case 8:
		cout << "可以算高分" << endl;
		break;
	default :
		cout << "勉强可以" << endl;
		break;
	}
	//while循环
	//在屏幕上输出1到10
	int i = 1;
	while (i <= 10) {
		cout << i << endl;
		i++;
	}
	//do{ }while(条件)循环;至少执行一次循环体
	int j = 1;
	do
	{
		cout << j << endl;
		j++;
	} while (j<=1);
	//利用rand()来生成随机数;
	//添加随机数种子,保证每次运行程序生成的随机数不一样srand((unsigned int)time(NULL));
	//这一点跟python不同,python的随机数种子是保证每次运行程序生成的随机数一样的
	srand((unsigned int)time(NULL));
	int age=rand() % 100+1;
	int w_age;
	while (true) {
		cout << "继续猜一个数" << endl;
		cin >> w_age;
		if (w_age < age) {
			cout << "猜的数字小了" << endl;
			
		}
		else if(w_age >age) {
			cout << "猜的数字大了" << endl;
			
		}
		else {
			cout << "恭喜你,猜对了" << age << "=" <<w_age<< endl;
			break;
		}
	}
	int shui=100;
	do {
		int shui1 = shui % 10;
		int shui2 = shui / 10 % 10;
		int shui3 = shui / 100;
		if ((shui == shui1 * shui1 * shui1 + shui2 * shui2 * shui2 + shui3 * shui3 * shui3)) {
			cout << shui << "为水仙花" << endl;

		}
		shui++;

	} while (shui<=999);
	//for循环
	//语法for(起始表达式;条件;更新条件)
	for (int i = 0; i < 9; i++) {
		//实体
		
	}
	
	for (int i = 1; i < 100; i += i) {
		cout << i << endl;//从i=1开始输出
	}//更新条件在每次循环结束后执行

	for (int i = 1; i <= 9; i++) {
		for (int j = 1; j <= i; j++) {
			cout << j << "x" << i <<"=" << i * j << " ";

		}
		cout << endl;
	}
	//goto语句,可以无条件跳转语句
	//语法:goto 标记
	cout << "1" << endl;
	goto FLAG;//开始跳转,跳转到FLAG:处
	cout << "2" << endl;//不再输出
FLAG:
	cout << "3" << endl;

	
	return 0;
	
}

5.数组

cpp 复制代码
#include<iostream>
using namespace std;
int main() {

	//一维数组的定义方式
	int arr1[5];         //定义了一个可以存放5个int类型数据的数组
	int arr2[3] = { 1,2,3 }; //定义了一个可以存放3个int类型数据的数组,并且进行了初始化
	int arr3[] = { 4,5,6,7,8 }; //定义了一个数组,并且进行了初始化,数组的长度由初始化数据的个数决定
	
	//冒泡排序
	int arr[]={ 2, 4, 5, 3, 6, 1, 10, 8, 9 };
	int t;
	for (int i = 0; i < size(arr) - 1; i++) {
		for (int j = 0; j < size(arr) - 1 - i; j++) {
			if (arr[j] > arr[j + 1]) {
				t = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = t;
			}
		}
	}
	for (int i = 0; i < size(arr); i++) {
		cout << arr[i] << " ";
	}
	//二维数组的定义方式
	int arr_2d[2][3]; //定义了一个2行3列的二维数组
	int arr_2d1[2][3] = { {1,2,3},{4,5,6} };//定义并初始化二维数组
	int arr_2d2[][4] = { {1,2,3,4},{5,6,7,8} };//定义并初始化二维数组,行数由初始化数据决定
	//二维数组的首地址表示法
	cout << "二维数组的首地址表示法" << endl;
	cout << arr_2d1 << endl;       //输出二维数组的首地址
	cout << arr_2d1[0] << endl;   //输出二维数组第一行的首地址
	cout << &arr_2d1[0][0] << endl; //输出二维数组第一个元素的地址,这里是看元素的地址需要加&
	
	return 0;
}

6.函数

cpp 复制代码
#include<iostream>
#include"sayhello.h"
using namespace std;
//函数的声明和定义包括三步:函数原型(声明),函数定义,调用函数
//函数原型:返回值数据类型 函数名(参数类型1,参数类型2,...);
//void sayHello();//函数原型声明
int main() {
	
	//调用函数
	sayHello();
	return 0;
}
////函数定义:返回值数据类型 函数名(参数类型1 参数1,参数类型2 参数2,...){实体}
//void sayHello() {//数据类型为void,没有返回值
//	cout << "Hello,world!" << endl;
//}
//函数的分文件编写(.h,.cpp文件名相同)
//1.创建.h后缀名的头文件,声明函数原型
//2.创建.cpp后缀名的源文件,包含.h头文件,定义函数实体
//3.在主函数文件中包含.h头文件,调用函数
cpp 复制代码
//sayhello.h文件
#include<iostream>
using namespace std;
void sayHello();//函数原型声明
cpp 复制代码
//sayhello.cpp文件
#include"sayhello.h"
void sayHello() {//数据类型为void,没有返回值
	cout << "Hello,world!" << endl;
}

7.指针

cpp 复制代码
#include "first7.h"
void zhizhen() {
	//指针变量的使用
	int a = 10;
	//指针定义的语法:数据类型* 指针变量名;定义一个指针变量p
	int* p;
	p = &a; //&取地址符号,表示取变量a的地址
	cout << "a的地址是:" << &a << endl;
	cout << "指针变量p的值是:" << p << endl;
	cout << "指针变量p存储的地址对应的值是:" << *p << endl; //*解引用,表示取指针变量p所指向地址对应的值
	//通过指针修改变量的值
	*p = 20;  //将指针变量p所指向地址对应的值修改为20
	cout << "修改后a的值是:" << a << endl;
	//指针的空值判断
	int* p1 = nullptr; //nullptr表示空指针
	//空指针是指向内存地址0的指针
	//空指针用来给指针变量初始化,空指针是不可以进行解引用操作的
	//0~255的地址是系统保留地址,程序不能使用
	if (p1 == nullptr) {
		cout << "指针p1是空指针" << endl;
	} else {
		cout << "指针p1不是空指针" << endl;
	}
	
	
	//野指针的概念
	int* p2; //未初始化的指针变量p2
	//cout << "指针p2的值是:" << p2 << endl;//野指针,指向未知地址的指针,可能会引发程序崩溃 
	
	
	//const修饰指针的情况有三种
	const int* p3; //1.const修饰指针,指针指向地址可以修改,但指针指向地址对应的值不可以修改
	int b = 30;
	p3 = &b;
	// *p3 = 40; //错误,不能通过指针修改指针指向地址对应的值
	int c = 40;
	p3 = &c; //正确,可以修改指针指向地址
	int* const p4 = &b; //2.const修饰指针变量,指针指向地址不可以修改,但指针指向地址对应的值可以修改
	*p4 = 50; //正确,可以通过指针修改指针指向地址对应的值
	// p4 = &c; //错误,不能修改指针指向地址
	const int* const p5 = &b; //3.const修饰指针变量和指针,指针指向地址和指针指向地址对应的值都不可以修改
	// *p5 = 60; //错误,不能通过指针修改指针指向地址对应的值
	// p5 = &c; //错误,不能修改指针指向地址

	

	//利用指针访问数组中的元素
	int qrr[] = { 10,20,30,40,50 };
	int* q = qrr;//指针变量q指向qrr的首地址
	for (int i = 0; i < size(qrr); i++) {
		
		cout << *q << endl;
		q++;//每+1相当于地址加4个字节(指针是int类型的)
	}

	//利用指针访问数组中的元素,并进行冒泡排序
	int wrr[] = { 4,3,6,9,5,2,1 };
	int temp;
	int* w = wrr;
	for (int i = 0; i < size(wrr) - 1; i++) {
		w = wrr;
		for (int j = 0; j < size(wrr) - 1 - i;j++) {
			if (*w > *(w + 1)) {
				temp = *w;
				*w = *(w + 1);
				*(w + 1) = temp;

			}
			w++;
		}

	}
	w = wrr;
	for (int i = 0; i < size(wrr); i++) {
		cout << *w << endl;
		w++;
	}
}
//char* p指针跟其他类型的指针有些区别;
//cout<<p时会自动解析出地址中的字符串并输出,而不是输出内存地址
//如果你需要打印指针的地址,而不是内容,可以通过 (void*)p 来实现

8.结构体

cpp 复制代码
#include"first8.h"
//结构体的定义和使用,用于储存不同的数据类型
	//定义结构体类型的语法:struct 结构体名{成员列表};
struct Student {
	string name;
	int age;
	int score;
};
void struct1() {
	//使用结构体
	//第一种
	Student stu1;//定义结构体类型的变量stu1
		stu1.name = "张三";
	stu1.age = 18;
	stu1.score = 90;
	cout << "姓名:" << stu1.name << " 年龄:" << stu1.age << " 分数:" << stu1.score << endl;
	//第二种
	Student stu2 = {
	   "李四",
	   19,
	   95
	};
	cout << "姓名:" << stu2.name << " 年龄:" << stu2.age << " 分数:" << stu2.score << endl;
	//定义结构体类型的数组
	Student stuArr[2] = {
		{"王五",20,85},
		{"赵六",21,88}
	};//定义结构体类型的数组stuArr,数组中有两个元素,每个元素都是Student类型的结构体变量
	for (int i = 0; i < size(stuArr); i++) {
		cout << "姓名:" << stuArr[i].name << " 年龄:" << stuArr[i].age << " 分数:" << stuArr[i].score << endl;
	}
	//定义结构体类型的指针变量
	Student* pStu = &stu1;//定义结构体类型的指针变量pStu,指向结构体变量stu1的地址
	
	
	
	cout << "通过指针访问结构体变量stu1的成员:" << endl;
	cout << "姓名:" << pStu->name << " 年龄:" << pStu->age << " 分数:" << pStu->score << endl;

	//结构体中const的使用
	const Student stu3 = { "钱七",22,92 };//定义一个const类型的结构体变量stu3
	//stu3.age = 23; //错误,不能修改const类型的结构体变量的成员





}
相关推荐
嵌入式进阶行者21 小时前
【算法】基于滑动窗口的区间问题求解算法与实例:华为OD机考双机位A卷 - 最长的顺子
开发语言·c++·算法
嵌入式进阶行者21 小时前
【算法】用三种解法解决字符串替换问题的实例:华为OD机考双机位A卷 - 密码解密
c++·算法·华为od
罗湖老棍子21 小时前
信使(msner)(信息学奥赛一本通- P1376)四种做法
算法·图论·dijkstra·spfa·floyd·最短路算法
No0d1es21 小时前
2025年12月 GESP CCF编程能力等级认证Python三级真题
开发语言·php
生成论实验室1 天前
生成论之基:“阴阳”作为元规则的重构与证成——基于《易经》与《道德经》的古典重诠与现代显象
人工智能·科技·神经网络·算法·架构
lalala_lulu1 天前
什么是事务,事务有什么特性?
java·开发语言·数据库
CCPC不拿奖不改名1 天前
python基础:python语言中的函数与模块+面试习题
开发语言·python·面试·职场和发展·蓝桥杯
毕设源码-朱学姐1 天前
【开题答辩全过程】以 基于Python语言的疫情数据可视化系统为例,包含答辩的问题和答案
开发语言·python·信息可视化
哥只是传说中的小白1 天前
Nano Banana Pro高并发接入Grsai Api实战!0.09/张无限批量生成(附接入实战+开源工具)
开发语言·数据库·ai作画·开源·aigc·php·api