12.26上课记录

课堂内容
一、数据类型:
类型决定了,在内存中分配的字节数,可以参与的运算类型
数值类型(int ,char ,double/float)
void
构造类型(数组,指针,结构体 )

/*

结构体

struct Student //类型
{
int num;
char name[20];
int score[5];
char sex;
}
struct Student stu; //int a; a=3;
stu.num=2019001;
stu.name[0]=‘z’
*/

常量
4----int
3.6----double
3.6f----float

变量:先定义后使用,变量三要素:变量名,变量地址,变量值

注意:整型和字符型在一定范围通用
‘A’==65
char c=128//错,128超过了char能表示的范围(-128~127)
unsigned char c=128;//对

二、输入输出
c语言本身比提供输入输出语句,由库函数提供
scanf(“格式字符串”,地址) %lf—double %c
scanf("%d%c",&a,&c); 123x 不能加空格,否则空格给了c
printf(“字符串”)------原样输出字符串,通常用于提示
printf(“格式字符串”,变量名) char s[]=“hello” printf("%s",s);char * str=“hello” printf("%s",str);

三、对数据进行运算(数值型运算、非数值型运算)------------运算符
运算符的作用,优先级,结合性,表达式的值
算术 % / ++ –
赋值 = +=
关系 == 1<x<5
逻辑 &&(短路) ||(短路) !
条件 ? :
逗号,

四、流程控制
1、顺序
2、选择
1)if(表达式)
语句;

if(4)
if(a)<=>if(a!=0)
if(!a)<
=>if(a==0)
2) if(表达式)
语句1
else
语句2
3) if…else嵌套
else和if的配对

4)switch(表达式)//表达式任意合法
{
case 常量: 语句1;break;//case后面必须是常量
case 常量: 语句2;break;
default: 语句n;//default语句可以没有

}

3、循环
循环三要素
循环初值,循环条件,循环体(循环变量的改变)

1)while(表达式)
语句

2)do{
语句
}while(表达式);

3)for(表达式1;表达式2;表达式3)//表达式3一定会执行,哪怕循环体中遇到continue
语句

4)break; 跳出所在的循环
continue; 跳过循环体下面的语句,接着执行下一次循环的判断(如果是for循环,则先执行表达式3,然后在进行下一次循环条件的判断)

5)循环的嵌套:外循环执行一次,内循环执行一轮

五、数组—处理批量同类型数据,数组在内存中占有连续一段内存,数组名代表数组首的地址,并且是常量,不能改变
(一)一维数组
1、数组的定义
类型 数组名[常量]

2、数组的初始化:定义的同时赋值
int a[10]={1,2,3,4}//部分赋值,数组的大小必须指定,其余数组元素的值为类型所默认的值
int a[]={1,2,3,4,5}//全部初始化,则可以省略数组大小

3、数组元素的引用
数组名[下标]
int b[5];
b[0]=1;

利用循环遍历数组
for(i=0;i<5;i++)
b[i]

(二)二维数组 --------按行存放,是一维数组的数组
1、数组的定义
类型 数组名[常量][常量]

2、数组的初始化:定义的同时赋值
int a[10][4]={ {1,2,3},{4},{3}}//部分赋值,数组的大小必须指定,其余数组元素的值为类型所默认的值
int a[][3]={ {1,2},{3,5},{4,9},{5,8}}//全部初始化,则可以省略数组第一维大小
int a[][3]={ {1,2},{3},{4,9},{5}}//部分赋值,但按行赋值,此时也可以省略数组第一维的大小

3、数组元素的引用
数组名[行标][列标]
int a[5][4]; -------a是一个一维数组,里面有5个元素a[0],a[1],a[2],a[3],a[4],每个元素又都是一个一维数组,里面有4个元素
a[0][0]=1;

利用双重循环遍历数组
for(i=0;i<5;i++)
for(j=0;j<4;j++)
a[i][j]

对于方阵(行列相等)
上三角i>=j
下三角i<=j
对角线i==j

(三)常见算法
1、排序
2、增删改查
3、最值
(四)字符数组
char ch[10];
scanf("%s",ch);
printf("%s",ch);
字符串处理函数

六、函数—模块化程序设计

1、函数的定义
函数的类型 函数名(形参1类型 形参1,形参2类型 形参2…)
{
声明语句(变量、数组等的声明,函数的声明)

 执行语句

}
、返回值只能有1个,函数体中return语句可以有多个,但是只有一个能执行
2、函数的调用
函数名(实参1,实参2…) 实参的个数和形参保持一致,类型和形参要赋值兼容,实参一定要有确定的值

调用时 1)流程转到被调用函数
2)给被调用函数的局部变量,分配内存空间
3)实参的值一一对应传给形参,执行函数体语句
调用结束 1)流程回到函数调用处
2)收回被调用函数中局部变量占有的内存空间
3)将返回值带回

参数的传递
形参是普通变量 传递的是值
形参是数组名 传递的是值(址)

3、函数的声明(函数原型的声明)----为了编译系统检查函数调用语句的合法性

4、全局变量/局部变量

七、指针
1、指针变量的定义
基类型 * 指针变量名
int * p
2、指针变量的赋值
int a;
int *pa=&a;

3、指针变量的引用

p=地址
*p
=指向的内存中的内容

&取地址,后面只能跟变量
*取地址里面的内容,后面必须是指针(地址类型的变量)

4、指针指向数组

5、指针指向字符串
char *s=“hello”

*s!=’\0’

指针*p的理解:p代表地址(p的值是一个地址),*p代表该地址下存放的值
例: int a=10,*p;//a的地址编号为 1703724
p=1703724;
printf("%d,%d",*p,p);
程序运行的结果为 10,1703724
*p代表指向位置的数据,p表示指向的地址编码.

猜你喜欢

转载自blog.csdn.net/qq_45688164/article/details/103745457