总复习

﹥>﹥吖頭↗ 提交于 2020-01-27 03:29:21

一、数据类型:
类型决定了,在内存中分配的字节数,可以参与的运算类型
数值类型(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(a0)
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’

字符串

字符数组

1、使用字符串初始化字符数组

char ch[]=“hello world”

scanf("%s",ch);

printf("%s",ch);

2、字符串处理函数

gets(ch)


指针变量指向字符串

char

  • str=“hello” //使用字符串常量对字符指针进行初始化

str=str+2;

str=“world”

等价于

char * str;

str=“hello”

char ch[]=“hello”

char ch[10];

ch=“hello”//错误

char * str=ch;

字符串在c内存中都是以数组的形式存放

char * mystrcat(char ch1[],char * ch2)

{

int i,j;

for(i=0;;i++)

{

if(ch1[i]==’\0’)

break;

}

for(j=0;;j++)

{

if(ch2[j]==’\0’)

break;

}

for(y=0,x=i;y<=j;x++,y++)

{ ch1[x]=ch2[y];

}

return ch1;

}

char * mystrcat(char * ch1,char * ch2)

{

int i,j;

for(i=0;;i++)

{

if(*(ch1+i)==’\0’)

 break;

}

for(j=0;;j++)

{

if(*(ch2+j)==’\0’)

break;}

for(y=0,x=i;y<=j;x++,y++)

{(ch1+x)=(ch2+y); }

return ch1;}

案例,字符串连接函数

char * mystrcat3(char * ch1,char *ch2)

{char *p=ch1;

   while(*ch1!='\0')

      ch1++; 

      while(*ch2!='\0')

      {

        *ch1=*ch2;

        ch1++;

        ch2++; }

      *ch1='\0';

      return p;}

#define A 5

#define B 6

#define C A+B

int x=2*C
====>x=2A+B ==x=25+6

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!