文章目录
持续更新ing~
变量,运算符,条件选择,循环,数组,函数篇
#include <iostream>
using namespace std;
#define day 7
int main()
{
// cout<<"hello world!"<<endl;
int a=10;
cout<<day<<endl;
const int month =12;
// month=24;//报错,const修饰也是常量,不可修改
//1.5 关键字,不可以关键字为变量命名
/*1.6标识符
标识符不能是关键字
标识符只能以数字,下划线,字母组成
标识符第一个字母只能是字母或吓坏谢娜
标识符区分大小写字母
(起名最好是见名知意)
*/
//数据类型
/*注意赋值不能超过各个类型最大范围,例如int:-32768~32767
sizeof 求出数据类型占用内存大小
sizeof (数据结构/变量)
short<int<=long<=long long
浮点型
定精度 float 4字节 (7位有效数字)
双精度 double 8字节(15-16位有效数字)
float f1=3.14f;//(加f可以少让程序做一个转换,明显告诉这是单精度)
默认情况下,输出一个小数,会显示6位有效数字
科学计数法
float f2=3e2;//3*10^2
float f3=3e-2;//3*0.1^2
字符型
char ch='a';//所占内存空间1个字符
cout<<sizeof(ch)<<endl;
cout<<(int)ch<<endl;
转义字符
\' 单引号
\"双引号
\?代表问号
\n 换行
\\ 输出\
\t 水平制表符 8个空格,有对齐效果
字符串
头文件
#include <string>
char str1[]="hello world!";
string str2="hello world!";
布尔类型
bool flag=true/false(1/0)
占用1个字节
数据的输入
cin>>变量
///
运算符
算术运算符
两个小数可以相除,结果也可以是小数
两个整数相除,结果仍然是整数
% 取模/取余,除数也不能为0
两个小数不能做取模运算
递增递减运算符
前置,后置
前置递增,先让变量+1,然后进行表达式运算
后置递增,先进行表达式运算,后+1
a=2;b=++a;a=3,b=3
a=2;b=a++; a=3,b=2
a=2;b=--a;a=1,b=1
a=2;b=a--; a=1,b=2
赋值运算符
=,+=,-=,*=,/=,%=
比较运算符
==.!=,>,<>=,<=,返回值是0或1,真为1,假为0
逻辑运算符
!.&&,||
cout<<(a&&b)<<endl;//小括号优先级运算,先做与运算
///
程序流程结构
顺序结构,选择结构,循环结构
if else
三目运算符
表达式1?表达式2:表达式3 (如果表达式1为真,执行表达式2,并输出表达式2结果,为假则执行表达式3,输出表达式3结果)
swich语句
switch ()
{
case 结果1:执行语句;break;
case 结果2:执行语句;break;
...
default:执行语句;break;
}
if与switch区别?
//swich 缺点,判断时候只能是整型或者字符型,不可以是一个区间
switch 优点.结构清晰,执行效率高
///
循环结构
生成随机数,,添加随机数种子,利用当前系统时间生成随机数,避免每次随机数都一样
strand ((unsigned) time (NULL)) //要加头文件 #include <ctime>
系统生成随机数
int num=rand()%100+1//生成0+1~99+1随机数
do while 先执行一次循环语句,再判断循环条件
num=0;
do
{
cout<<num++<<endl;
}while (num<10)
for 循环语句
for(起始表达式;循环条件;末尾循环体){循环表达式;}
跳转语句
continue:跳出本次循环
break,跳出一个选择语句,出现在switch中,或跳出一个循环语句
goto,无条件的跳转语句
语法:goto 标记,功能强大,不经常使用,因为跳来跳去,不便于阅读代码,结构不好
goto FLAG;
FLAG:
/数组
特点1: 数组中每个数据元素都是相同类型的数据
特点2: 数组是由连续的内存位置组成
int arr1[5];
arr1[0]=10;
...
arr1[4]=50;
int arr1[5]={1,2,3,4,5};
int arr3[]={1,2,3,4,5,6,7,8,9};//定义数组的时候,必须有出初始长度;
数组名的用途:
1.统计整个数组在内存中的长度; sizeof(arr1)
2.可以获取数组在内存中的首地址; cout arr1 ,cout (int)arr1(转10进制)
数组中第一个元素地址: (int)&arr[0];
数组名是一个常量,不能进行赋值操作;,其含义为数字首地址
int start=0 起始元素下标
int end =sizeof(arr)/sizeof(arr[0])-1;
冒泡排序
作用:
1.比较相邻元素,如果第一个比第二个大,就交换
2.对每一对相邻的元素做同样的工作,执行完毕后,找到第一个最大值
3.重复以上步骤,每次比较次数-1,直到不需要比较
for (int i=0;i<N-1;i++) //排序轮数
for(int j=0;j<N-i-1;j++) //内存循环比较
二位数组
int arr [2][3]
int arr1[2][3]={{1,2,3},
{4,5,6}};
int arr2[2][3]={1,2,3,4,5,6,};
int arr3 [][3]={1,2,3,4,5,6};
二位数组名
查看二位数组所占用空间
查看二维数组首地址
sizeof(arr) //二维数组占用内存空间
sizeof(arr[0]) //二位数组第一行占用内存空间
sizeof(arr[0][0])
二位数组首地址 (int)arr
二维数组第一行首地址(int)arr[0]
二维数组第二行首地址(int)arr[1]
///
函数
int add(int num1,int num2)
{
int sum =num1+num2;
return sum;
}
值传递,函数调用时,实参将数据传给形参
形参发生改变,不会影响实参数
函数常见样式
1.无参无返
void test01()
{
cout <<"this is test01"<<endl;
}
2.有参无返
void test2(int a)
{
cout <<"this is test2 a="<<a<<endl;
}
3.有参无返
int test3()
{
cout<<"this is test3"
return 1000;
}
4.有参有返
into test4 (int a)
{
cout<<"this is testa="<<a<<endl;
return 0;
}
函数的声明:告诉编译器函数的名字及如何调用函数
eg: int max(int a,int b);
声明可以写多次,定义只能写一次
函数的分文件编写:让代码结构更加清晰
步骤:
1.创建后缀名为.h的头文件
2.创建.cpp的源文件
3.在头文件写函数的声明
#include <iostream>
using namespace std;
4.在源文件写函数的定义
#include "swap.h"
定义
main 函数
#include <iostream>
using namespace std;
#include "swap.h
*/
system("pause");//按任意键继续
return 0;
}