今天上午老师为我们耐心地讲解了昨天留下地作业题,自己后来又认真过了一遍,虽然说谈不上自己可以灵活掌握,但至少也在有限的时间里有了一些实在的收获,这里先想谢谢李龙江老师地耐心讲解,我会在日后的作业中继续努力。下面是今天老师上课的主要内容。
C的结构
顺序结构、分支结构、循环结构
分支结构:
if else
switch case
if else配对问题
else总是与离他最近的if配对
for循环
(1)for(表达式1,表达式2,表达式3)
执行顺序;
(A)表达式1
(B)表达式2, 若表达式2成立,执行c; 不成立执行E
(C)循环体,即括号里的内容
(D)执行表达式3,再执行2
(E)退出循环
鸡翁:a 0~100/5
鸡母:b 0~100/3
鸡雏:c 0~300,c+=3
if(百鸡&&百钱)
条件:
百鸡:a+b+c=100
百钱:5a+3b+c/3=100
c%3==0
作业:素数问题
数组
1.一维数组
(1)数组定义
DataType ArrayName[size];
DataType:数据类型,int, float, double,char 等等
ArrayName:数组名
size:数组的大小或数组下标,必须是常量表达式
[ ]: 下标运算符
下标是从0开始到size-1
example:
int arr[5];
arr:数组名
5 :数组大小即数组元素的个数
int:数组元素的类型
(2)数组的初始化
int arr[3] = {1,2,3};
int arr1[3]={1,3};
int arr2[3]={1};
int arr3[2]={[2]=3}; //不建议
int arr4[]={1,2,3,4};//不建议
int arr5[]={}; //error 数组大小必须给定
int arr[5];
arr[5] = {1,2,3,4,5}; //不可以,arr[5]是一个常量
注:
数组若要初始化,必须在定义的同时初始化
不能先定义,后初始化
#define M 5 原地把M换成5,一般用大写字母。
(3)数组元素的访问
使用下标形式;
int arr[5];
arr[1]:访问第二个元素
(4)数组的存储
数组也是一种数据结构,数组中的元素顺序储存;
数组中的每个元素的类型都相同;
(5)数组地址问题
printf(“arr=%p\n”,arr);
printf("arr+0 = %p\n", arr+0);
printf("arr+1 = %p\n", arr+1);
:
:
:
数组名也能作为一个地址
printf("&arr=%p\n", &arr);
arr:0x0000000 arr数组首元素的地址,也代表数组
&arr[0]:0x0000000 第一个元素的地址
&arr:0x0000000 整个数组的地址
arr+1:0x0000004 表达地址偏移sizeof(arr[0])个字节
&arr[0]+1:0x0000004
&arr+1:0x0000014 跳到下一个数组的起始 &arr+1跳过整个数组的地址
(6)数组元素的赋值
(7) char arr[16]={'h','e','l','l','o'};
char buf[16]={"hello"}; 末尾是\0
2.二维数组(基于矩阵)
Datatype ArrayName[行下标][列下标];
行下标可以省略 Datatype ArrayName [][列下标];
(1)初始化:
int arr[3][3] ={1,2,3};
注释
(1)//。。。。。。。。。:
单行注释,可以独占一行,也可以跟在执行语句之后
但“//”之后的内容不被编译执行
规定:
注释内容放在被注释的上一行,或者同行行末;
(2)/...................../:
注释大段代码即注释代码块
(3) #if 0(不执行) 1(执行)
#else
#endif
网友评论