第二次课
一定要动手编程序!!!!
七个题
2个程序填空
2个改错
3个编程
例1:交换两个数。
符号的操作??
= 把右边的值赋给左边的变量
== 比较两边的大小
1变量的作用域:变量的作用范围
全局变量:
定义在函数的外部
||=== Build: Debug in 2 (compiler: GNU GCC Compiler) ===|
D:first2main.cpp||In function 'int main()':|
D:first2main.cpp|9|error: 'b' was not declared in this scope|
D:first2main.cpp||In function 'void print()':|
D:first2main.cpp|13|warning: unused variable 'b' [-Wunused-variable]|
||=== Build failed: 1 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|
局部变量:函数内部定义的变量
特殊情况:函数内部语句块里定义的变量,块作用域
注意:全局变量少用。
2 同名覆盖
3 常量
字面常量 35
符号常量 const float pi=3.14
4 生命期
动态变量 auto
静态变量 static
5 运算符和表达式
运算符:操作
- 操作意义
- 运算对象(单目、双目、三目)
- 优先级
- 结合性(数学里没有用过)
表达式:用运算符连接起来的式子
算术运算符
+ - * / %
/
整除,除
上下文
%
运算对象一定是整数
3%4
例2 把一个四位整数逆序
1234 –》4321
认识数
记数系统
数码:0-9
基:数码的个数
位权:
进位规律
表示法:并列式,权展开式
1*103+2*102+3*101+4*100=1*1000+2*100+3*10+4*1=1234
关系运算:
> >= < <= == !=
运算结果是逻辑值(真 true 1 假 false 0)
逻辑运算
&& || ! 逻辑与 逻辑或 逻辑非
&& 两个都真,结果为真,其余都是假
|| 两个都假,结果为假,其余都真
! 假变真,真就变假
分段函数
判断闰年
能被4整除并且不能被100整除或者能被400整除 year
条件运算符 ? :
y = (x >= 0 ? x : -x);
++ --
||=== Build: Debug in 2 (compiler: GNU GCC Compiler) ===|
D:first2main.cpp||In function 'int main()':|
D:first2main.cpp|9|error: lvalue required as increment operand|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
运算对象要是变量
++放在前面,先自增1,再参与其他运算
++放在后面,先参与其他运算,再自增1.
累加
类型转换
一定要关注数据类型!!!!
显式转换(手工)
隐式转换(自动)
建什么样工程
建什么样的文件
第三次课
一定要动手编程序!!!!
sqrt square root
运算符
表达式语句、控制语句、函数调用语句、空语句、复合语句
1 空语句
;
2 函数调用
这个函数有几个参数
函数来源:一种是自定义函数
另一种库函数
3 复合语句
{}
4 表达式语句(上一节课学的内容)
5控制语句
三种基本结构:
顺序结构
选择结构
单分支if
双分支 if else
多分支if else if else
嵌套
开关语句switch case
循环结构
当型循环 while
直到型循环: do-while
计数型循环:for
break
continue
return
goto
算法都是由这三种结构来完成。
例1求一个数的绝对值
四种方法:
1 两个单分支
2 一个双分支
3 默认+一个单分支
4 条件表达式
Switch case 可枚举的值
if嵌套:
else匹配原则:
先找第一个else
网上匹配最近没有匹配的if
例2 累加,累乘 累加乘
列表 元组 字典
例3编写一个程序,显示前50个素数,要求分5行显示,每行10个数字。
第一步:
写判断一个数是否为素数
第二步:
找出2-100之间的素数
第三步:
计数输出50个
第四步:
每行输出10,输出50个
算法:
迭代法:(本次循环和下次循环的关系)
牛顿迭代法 求方程的根
求两个数的最大公约数?
第四次课
一定要动手编程序!!!!
哥德巴赫猜想:
一个大于4的偶数,一定能分解成两个素数的和
我们已经有了实现三种基本结构的语句
顺序
选择结构
if
if else
if else if else
switch
case
循环结构
while
do while
for
break
continue
每行要做三件事
打空格,打星,打回车
统计:
找最大(小)
打擂台
求平均(总和)
累加
排序
bubble
基于交换的排序
交作业:排序,插入排序
数据结构:排序(冒泡,插入,希尔排序,归并)
查找(二分查找)
字符数组本身和其他的数组没有差别
字符数组里存放是字符串就有差别!!!!
判断依据:最后有没有字符串的结束标志‘ ’
如果是字符串就可以整体输出
数组名表示是一个常量!!!
str copy =strcpy
str compare=strcmp
例1:排序4个字符串
china
hello
good
思考的第一问题:
怎么存储这4个字符串 =》 用一个二维字符数组
第二问题
怎么排序 bubble
第三问题
注意字符串的操作,当成一个整体
strcpy,strcmp,strcat,strlen string.h
第五次课
一定要动手编程序!!!!
1数组
这个类型很重要
2字符数组和字符串
判断是不是字符串,后面有没有‘ ’
3字符串的类型
string
类类型
类类型定义的变量,叫对象
两个东西:
属性(变量)+方法(函数)
定义变量
写语句(算法)
函数
类(变量+函数)
4数据类型,用来描述数据的,支持的类型越多,那么它描述数据的能力就越强
简单数据类型:int,char,float,double,bool
复合类型:数组(相同类型的数据)嵌套的定义
结构体(不同的类型)
dataframe 数据框:python,R
第一步:
定义结构体(保存一行)
第二步
定义结构体数组(保存多行)
定义类型的时候:不能放数据
定义变量:放数据
male
female
成员操作符
冒泡算法:
- 简单的数据的数组
- 字符串数组
- 结构体数组
函数:
首先不是数学函数
程序段,一定的结构,完成一定的功能
例1:求两个数的最大公约数 辗转相除
关心:输入 两个整数 (你给的)
输出 一个整数 (最大公约数)
难点:要抽象
头部+函数体
头部:返回值类型 函数名 函数的形参
执行过程:
调试可以看到
第六次课
一定要动手编程序!!!!
1先定义,后引用
函数声明:函数的头部+“;”
2
int lengthA = sizeof(a) / sizeof(a[0]);
数组元素的个数=数组总的字节数÷元素的字节数
3函数调用
传值
第一种:传值,无法交换,但是内部a,b两个数的值交换了。
void swapp(int a,int b){
int t;
t = a;
a = b;
b = t;
}
第二种传递参数,引用:定义一个别名,和一个已知的变量进行绑定。可以交换
void swapp(int &a,int &b){
int t;
t = a;
a = b;
b = t;
}
第三种:传地址,可以交换两个数
指针变量:本质是变量,存放地址
变量的指针:本质是常量,变量的首字节的地址(编号)
& 取地址符,取变量的地址
* 取内容运算符,间接访问运算符
void swapp(int *a,int *b){
int t;
t = *a;
*a = *b;
*b = t;
}
数组名是常量,就是数组的指针
4数组的访问
- 下标法
- 指针法(指针不移动)
- 指针法(指针移动)
int a[]={1,2,3,4,5,6,7,8};
a[i] 与 *(a+i) 等价
int main() {
int a[]={1,2,3,4,5,6,7,8};
int i;
int *t;
for(i=0;i<8;i++)



