C++基础入门

数据的输入

作用:用于从键盘获取数据

关键字:cin

语法:cin>>变量

int main() {

	//1.整型
	int a = 0;
	cout << "请给整型变量a赋值" << endl;
	cin >> a;
	cout << "整型变量a=" << a << endl;

	//2.浮点型
	float f = 3.14f;
	cout << "请给浮点型变量f赋值" << endl;
	cin >> f;
	cout << "浮点型变量f=" << f << endl;

	//3.字符型
	char ch = 'a';
	cout << "请给字符型变量ch赋值" << endl;
	cin >> ch;
	cout << "字符型变量ch=" << ch << endl;

	//4.字符串型
	string str = "abc";
	cout << "请给字符串型变量str赋值" << endl;
	cin >> str;
	cout << "字符串str=" << str << endl;

	//5.布尔型
	bool flag = true;
	cout << "请给布尔型flag赋值" << endl;
	cin >> flag;//布尔类型  只要是非0的值都代表真
	cout << "布尔类型flag=" << flag << endl;


	system("pause");
	return 0;
}

运算符

作用:用于执行代码的运算

运算符的类型

算术运算符

int main() {
	//加减乘除
	int a1 = 10;
	int b1 = 3;
	cout << a1 + b1 << endl;
	cout << a1 - b1 << endl;
	cout << a1 * b1 << endl;
	cout << a1 / b1 << endl;//两个整数相除,结果依然是整数,将小数部分去除。

	int a2 = 10;
	int b2 = 0;
	//cout << a2 / b2 << endl;//错误!两个数相除,除数不可以为0
	
	//两个小数可以相除

	double d1 = 0.5;
	double d2 = 0.22;

	cout << d1 / d2 << endl;//运算的结果也可以是小数


	system("pause");
	return 0;
}
int main() {
	//取模运算的本质就是求余数
	int a1 = 10;
	int b1 = 3;
	cout << a1 % b1 << endl;

	int a2 = 10;
	int b2 = 20;
	cout << a2 % b2 << endl;

	int a3 = 10;
	int b3 = 0;
	//两个数相除 除数不可以为0 所以也不能取模
	//cout << a3 / b3 << endl;

	//两个小数是不可以做取模运算的
	double d1 = 3.14;
	double d2 = 1.1;

	//cout << d1 % d2 << endl;

	system("pause");
	return 0;
}

只有整型变量可以取模

前置:先自增在运算;

后置:先运算后自增;

赋值运算符

跟Java C一样

比较运算符

作用:用于表达式比较,返回真或假

运算符 术语 名称 运算规则
&& 与运算符 逻辑与 运算符左右两端的操作数都为true,表达式结果才为true,其它情况表达式结果为false
|| 或运算符 逻辑或 运算符左右两端的操作数都为false,表达式结果才为false,其它情况表达式结果为true
! 非运算符 逻辑取反 操作数为true,结果为false;操作数为false,结果为true

同Java和C

&& 同真为真,其余为假

|| 同假为真,其余为假

程序流程结构

  • 顺序结构

  • 选择结构

  • 循环结构

选择结构

if语句

作用:执行满足条件的语句

三种形式:单行、多行、多条件

if条件表达式后不要加分号

1.单行格式if语句:if(条件){条件满足执行的语句}
int main() {

	//选择结构 单行if语句
	//用户输入分数,如果分数大于600,视为考上一本大学,在屏幕上输出

	//1.用户输入分数
	int score = 0;
	cout << "请输入一个分数:" << endl;

	//2.打印用户输入的分数
	cout << "您输入的分数为:" << score << endl;

	//3.判断分数是否大于600,如果大于,那么输出
	//注意事项 , if条件后面不要加分号   如果加了分号,无论条件是否满足都会被执行
	
	if (score > 600) {
		cout << "恭喜您考上了一本大学" << endl;
	}

	system("pause");
	return 0;
}
2.多行格式if语句:if(条件){条件满足执行的语句};
int main() {
	//选择结构 - 多行if语句
	//输入考试分数,如果大于600.打印考上一本大学
	//小于等于600 打印未考上

	//1.输入考试分数
	int score = 0;
	cout << "请输入考试分数" << endl;
	cin >> score;
	//2.提示用户输入的分数
	cout << "您输入的分数为" << score << endl;
	//3.判断 如果大于600 打印考上一本,否则打印未考上
	if (score > 600) {
		cout << "恭喜考上一本" << endl;

	}
	else {
		cout << "未考上一本大学" << endl;
	}

	system("pause");
	return 0;
}
3.多条件if语句:if(条件1){条件满足执行的语句}else if(条件2){条件满足执行的语句}...else{都不满足执行的语句}
4.嵌套if语句

在if语句中,可以嵌套使用,达到更精确的条件判断

int main() {
	//嵌套if
	

	//1.输入考试分数
	int score = 0;
	cout << "请输入考试分数" << endl;
	cin >> score;
	//2.提示用户输入的分数
	cout << "您输入的分数为" << score << endl;
	//3.判断
	//大于600  一本
		//大于700 北大
		//大于650 清华
		//其余    人大
	//大于500  二本
	//大于400  三本
	//其余     未考上
	if (score > 600) {
		cout << "恭喜考上一本" << endl;
		if (score > 700) {
			cout << "恭喜考上北大" << endl;
		}else if (score > 650) {
			cout << "考上清华" << endl;
		}else {
			cout << "考上人大" << endl;
		}

	}
	else if (score > 500) {
		cout << "考上二本大学" << endl;
	}
	else if (score > 400) {
		cout << "考上三本大学" << endl;
	}
	else {
		cout << "未考上" << endl;
	}

	system("pause");
	return 0;
}
三目运算符

作用:通过三目运算符实现简单的判断

语法:表达式1?表达式2:表达式3

解释:
如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
如果表达式1的值为假,执行表达式3,并返回表达式3的结果;

在C++中三目运算符返回的是变量,可以继续赋值

switch语句

作用:执行多条分支语句

语法:

switch(表达式){

case 结果1:执行语句;break;

case 结果2:执行语句;break;

......

default:执行语句;break;

}

循环结构

while循环

作用:满足循环条件,执行循环语句

语法:while(循环条件){循环语句}

解释:只要循环条件结果为真,就执行循环语句

int main() {
	/*猜数字
	系统随机生成一个1到100之间的数字,玩家进行猜测,
	如果猜错,提示玩家数字过大或过小,
	如果猜对 恭喜玩家胜利,并且退出游戏*/

	//添加随机数种子 作用利用当前系统时间生成随机数  防止每次随机数都一样
	srand((unsigned int)time(NULL));

	//1.系统生成随机数
	

	int num = rand() % 100 + 1;	//rand()%100 生成 0~99 随机数
	int guess = 0;
	while (num != guess) {
		
		cout << "请猜测num=" << endl;
		cin >> guess;

		if (num > guess) {
			cout << "过小" << endl;
		}
		else if (num < guess) {
			cout << "过大" << endl;
		}
		else {
			cout << "恭喜猜对" << endl;

			//猜对退出游戏
			break; //break  退出当前循环
		}
	}
	
	
	system("pause");
	return 0;
}
do while循环

语法:do{循环语句}while(循环条件);

注意:与while的区别在于do…while会先执行一次循环语句,在判断循环条件

/*水仙花数
水仙花数是指一个3位数,他的每个位上的数字的3的幂次之和等于它本身
请利用do-while语句求出所有3位数的水仙花数

1.将所有的三位数输出
2.在所有的三位数中找水仙花数

获取个位		%10
获取十位		/10%10
获取百位		/100
*/
int main(){
	int num=100;
	int a = 0;
	int b = 0;
	int c = 0;
	
	do {
		int a = num / 100;//百位
		int b = num / 10 % 10;//十位
		int c = num % 100 % 10;//个位
		if (num == a * a * a + b * b * b + c * c * c) {
			cout << num << endl;
		}
		num++;
	} while (num<1000);


	system("pause");
	return 0;
}
for循环语句

语法:for(起始表达式;条件表达式;末尾循环体){循环语句;}

int main() {
/*敲桌子
从1开始数到数字100,
如果数字个位含有7,或者数字十位含有7,或者该数字是7的倍数,
打印敲桌子 其余直接打印输出
1.输出1-100
2.找特殊数字打印敲桌子
*/

	for (int i =1; i <= 100; i++)
	{
		if (i % 10 == 7 || i / 10 == 7 || i % 7 == 0) {
			cout << "敲桌子" << endl;
		}
		else {
			cout << i << endl;
		}
	}

	system("pause");
	return 0;
}
嵌套循环

作用:在循环体中在嵌套一层循环,解决实际问题

int main() {

	//利用嵌套循环实现星图

	//打印一行星图
    
    //外层执行一次 内层执行一周
    
    //外层循环
	for (int j = 0; j < 10; j++) {
    //内层循环
		for (int i = 0; i < 10; i++) {
			cout << "* ";
		}
		cout << endl;
	}
	
	system("pause");
	return 0;
}
/*乘法口诀表
利用嵌套循环,实现九九乘法表
*/
int main() {
	for (int i = 1; i <= 9; i++) {
		for (int j = 1; j <= i; j++) {
			if (i * j < 10) {
				cout << i << "*" << j << "=" << i * j<<"  ";
			}else {
				cout << i << "*" << j << "=" << i * j<<" ";
			}
			
		}
		cout << endl;
	}

	system("pause");
	return 0;
}

跳转语句

break语句

作用:用于跳出选择结构或者循环结构

break的使用时机:

  • 出现在switch条件语句中,作用是终止case并跳出switch

  • 出现在循环语句中,作用是跳出当前循环语句

  • 出现在嵌套循环中,跳出最近的内层循环语句

continue语句

作用:在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环

注意:continue并没有使整个循环终止,而break会跳出循环

goto语句

作用:可以无条件跳转语句

语法:goto 标记

解释:如果标记的名称存在,执行到goto语句时,会跳转到标记位置

数组

概述:存放相同类型的数据元素的集合

特点1: 数组中的每个数据元素都是相同的数据类型

特点2: 数组是由连续的内存位置组成的

一维数组

一维数组的定义方式

数据类型 数组名[数组长度];

数据类型 数组名[数组长度]={值1,值2 ...}

数据类型 数组名[]={值1,值2...}

总结1:数组名的命名规范与变量名命名规范一致,不要和变量重名

总结2:数组中下标是从0开始索引

一维数组名称用途

1.可以统计整个数组所占内存大小 sizeof(数组名)

每个元素所占内存大小 sizeof(数组名[下标])

数组中元素个数sizeof(数组名)/sizeof(数组名[下标])

2.可以获取数组在内存中的首地址cout<<(int)数组名<

数组中第i个元素地址(int)&arr[i]<

注意数组名是一个常量,不可以进行赋值操作

int main() {
	/*五只小猪称体重
	* 在一个数组中记录了五只小猪的体重
	* 打印并输出最重的小猪的体重
	*/
	int weight[5];
	int i = 0;
	int max = 0;
	while (i < 5) {
		cout << "请输入体重" << endl;
		cin >> weight[i];
		i++;
	}
	for (int j = 0; j < 5; j++) {
		if (weight[j] > max) {
			max = weight[j];
		}
	}
	cout << "最重的体重为:" <<max<< endl;



	system("pause");
	return 0;
}

冒泡排序

1.比较相邻的元素。如果第一个比第二个大,就交换。

2.对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。

3.重复以上的步骤,每次比较次数-1,直到不需要比较

排序总轮数 = 元素个数-1;

每轮对比次数 = 元素个数-排序轮数-1;

int main() {

	//利用冒泡排序实现升序排序
	int arr[9] = { 4,2,8,0,5,7,1,3,9 };

	cout << "排序前" << endl;
	for (int i = 0; i < 9; i++) {
		cout << arr[i] << " ";
	}
	cout << endl;

	//开始冒泡排序
	//总共排序轮数为 元素个数 - 1
	for (int i = 0; i < 9 - 1; i++) {
		//内层循环对比 次数 = 元素个数-当前轮数-1
		for (int j = 0; j < 9 - i - 1; j++) {
			//如果第一个数字,比第二个数字大,交换两个数字
			if (arr[j] > arr[j + 1]) {
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}

	//排序后结果
	cout <<"排序后" << endl;
	for (int i = 0; i < 9; i++) {
		cout << arr[i] << " ";
	}
	cout << endl;


	system("pause");
	return 0;

你可能感兴趣的:(c++,算法,数据结构)