与C语言有关

一、数据类型

二、运算符、表达式和语句

1.算数运算符

2.表达式

用算术运算符和圆括号将操作数链接起来的,符合C语法规则的式子成为算数表达式。操作数可以是常量,变量,函数等。

例如:x+y 2.3-3.4 (x*2)/y

(1)加减乘除和取余运算

(2)自增和自减运算   

单独使用自增运算符、在表达式中使用自增运算符

·逻辑运算真值表                                                                                            

3.C语言的语句

表达式语句:由表达式末尾加上分号构成。
函数调用语句:由西数调用表达式加上分号构成
空语句: ;
选择结构语句:if语句 ,switch 语句
福环语句:for 语句,while 语句,do while语句
复合语句:用花括号{ }将以上仁意语例括起来构成一条复合语句。

·基本结构
void main()
{      声明部分:用来定义变量和声明自定义附数的原型,需以";"结尾,如 int x
      执行语句部分:第六点里介绍的各种语句,如x=3; printf.%d",x);                                                 }
main 函数外可写自定义函数。如

int max()
{
   return O;
}

三、循环

1.for循环语句
for(表达式 1; 表达式2; 表达式3)循环体语句
语句执行过程:
(1)计算表达式 1
(2)判断表达式2的值是否为0,若为0,语句执行结束,若不为0,进入(3)
(3)执行循环体语句(需注意的是循环体语句只能有一个语句,若要包舍多个语句要用一对{}括号来,构成一条复合语句,此处也不要随便加上";",因一个";"可构成一条空语句,这会使得后面真正的循环体语句不属于for 循环语句的部分)进入(4)
(4)计算表达式3,然后重新进入(2)

例如:

#include <stdio.h>
int main(void)
{
   int sun,s;
   int i;
   sum= 0 ;
   for(i=1;i<52;i++)
   {
       if(i%2==0)
       {
          s = -1;
       }
       else
       {
          s = 1;
       }
       sum += (2*i-1)*s;
   }
printf("sum of (1-3+5-7+...-99+101) is: %d\n",sum);
return 0;
}

2.while语句、do while语句

·while循环体语句
执行过程:
(1)判断表达式的值是否为非0,若是进入(2),否则结束语句执行。
(2)执行循环体语句,重新回到 (1)
·do循环体语句while(表达式)
执行过程:
(1)执行循环体语句,进入(2)
(2)判断表达式的值是否为非0,若是重新回到(1),否则结束语句执行。
*这里要注意的地方跟for 语句一样,即循环体语句只能有一个语句,若要包含多个语句要用一对{}括起来,构成一条复合语句,此处也不要随便加上";",因一个";"可构成一条空语句,这会使得后面真正的循环体语句不属于while循环语句的部分,另外do while循环的while(表达式)后是要加";"的。

3.break语句

放在循环体内实现的功能是结束其所在的那层循环的执行。

四、分支和转跳

1. if (表达式)语句1 else 语句2
如果if语句的圆括号内的表达式值为非0,则执行语句 1,值为0则执行语句2。
表达式可为任意表达式,if计语句执行的实质是判断表达式的值是否为0来决定执行语句1还是语句2。

语句1和语句2都只能是一个语句,若要跟多条语句,切记用一对{}括起来,构成复合语句;也不要随便在圆括号后加";",
因";"构成一条空语句,这会使后面跟的语句1不再属于 if语句的组成部分。
·if语句的三种结构
(1)单边:if(表达式)语句
(2)双边:if(表达式)语句1clse 语句2                                                                                                                                         (3)多层(重点掌握):
if(表达式1)语句 1
else if(表达式2)语句 2
else if(表达式3)语句 3                                                                                                                                                                  ...
eise  语句 n
•条件运算符 表达式 1?表达式2:表达式3
若表达式1的值非0,则取表达式2的值做为整个表达式的值,否则取表达式3的值为整个表达式的值。如 3>4?1:2                 该表达式的值为2

2.switch语句
switch(表达式)

 

{
   case 表达式1:语句
   case 表达式2:语句
   ...
   case 表达式n:语句
   default:语句
}

语句执行过程:先计算表达式的值,然后判断该值与表达式1到表达式n中的哪个相等,若与表达式i的值相等,则执行表达式i后的所有语句,当遇到break;语句时结束整个switch 语句的执行。表达式1到表达式n的值都不相等的情況下执行 default 后跟的语句。每个case后可跟多条语句。

五 、函数

函数类型 函数名(形式参数列表)
{                                                                                                                                                                                                      内部变量定义和声明部分
执行语句                                                                                                                                                                                        }

int max (int x,int y)
{  int z;
     z=x>y?x:y;
     return (z) ;
}

注意点
(1)函数类型是指返回值的类型,即要与return语句后跟的表达式的值的类型一致。若函数类型为void则说明该函数无返回值,即函数体里可以不出现return语句
(2)形式参数列表里定义的变量要记得给它们指定类型,而且如果同时要定义多个,应在每个前面都分别指定类型名,而不能写成 int x,y;
(3)函数体里能写的语句跟main函数一样,在开头可定义所需要的变量,后面跟上一堆执行语句。
·函数调用流程
以上面的函数为例,在main 函数进行调用:
void main()
{  int a,b,c;
   scanf("%d%d",&a,&b);
   printf ( "%d",max(a,b));或c=max(a,b);printf("%d" ,c)                                                                                                                   }以上两种方法
都会在屏幕中打印出a,b间的较大值。

六、数组

1.一维数组
类型名 数组名1[exp],数组名2[exp], ...   其中:exp为常量表达式
如: int A[10],b[5]; char c[8];
float X[20],y[4*M+1],w[5];(M为符号常量)
注意:
1)数组名命名规则和简单变量名相同;
2)数组名后只能是方括号括起来的常量装达式(常量和符号常量)
3) 常量表达式的值确定数组元素的个数。

 ·一维数组的初始化

 2.二维数组

二维数组可以看作一种特殊的一维数组:
它的元素又是一个一维数组。
如:int a[3][4];
可将a数组看作是一个一维数组,它有3个元素:a[0]、a[1]、a[2],每个元素又是一个包含4个元素的一维数组。

二维数组的输入输出

 七、结构体、联合体

1.结构体
结构体类型的定义及变量的定义
struct 结构体名
{ 类型 成员1;
  类型 成员2;                                                                                                                                                                                 ...
  类型 成员n;
}变量名;

struct student
{  long num;
   char name[10];
   int score[4];
}

定义类型时同时定义变量
struct student 定义类型后,用类型名定义变量
还有一种

struct
{  long num;
   char name [1];
   int score[4];
}

不给类型名,直接定义变量

2.共用体

共用体类型的定义及变量的定义
union   共用体名
{  类型成员名1;                                                                                                                                                                           ...
   类型 成员名n;                                                                                                                                                                             }
变量的定义与结构体类似,也有三种方法。

union data
{
  int i;
  char ch;
  float f;
}dl;定义类型时同时定义变量
union data d2;定义类型后,用类型名定义变量
union
{
  int i;
  char ch;
  float f; i
}d3;不给类型名,直接定义变量

·共用体变量所占字节数:各成员所占字节数的最大值,如上d1,d2,d3 所占字节数皆为4
·共用体变量成员的访问
1.共用体变量名 成员名如dl.i
2.使用共用体类型的指针:
(共用体指针名).成员  或  共用体指针名->成员名
union data *dd;  dd=&d1; dd->i 或(*dd).i

八、指针

 若指针变量存入的是数组元素的地址,则其加一减一得到的是那个数组元素下一个或前一个元素的地址。
int a[ 10]; p=&a[3];
*p得到的是a[3]的值。
若p++;此时p存放的是a[4]的地址&a[4];*p得到的就是 a[4]的值.
或p--;此时p存放的是a[2]的地址&a[2];*p得到的就是a[2]的值.

通过指针变量访问整型变量

 九、宏定义

1.无参宏定义

#define 标识符 值 定义后,出现所定义的标识符的地方都将以定义时指定的值来代替。

#define M 2+3
main()
{  int x;
   x=M*M;则x的值为 2+3*2+3=11 若想得到的结果是(2+3)*(2+3)则定义时也写成这样 #define M (2+3)
}

注意#define、标识符、值之间都要用空格隔开,且宏定义结尾不需加分号。

2.带参宏定义

#define 标识符(参数表)值

#define S(x,y) x*y
main()
{   int a=3,b=4,c=5,d=6;
    printf("a*b=%d\n",S(a,b));//此时会打印出 a*b=12
    printf("a+b*c+d=%d\n”,S(atb,c+d));//此时会打印出 a+b*c+d=29
}

带参宏定义执行时是将a+b这样一个表达式代替x,c+d这样一个表达式代替y,所以 S(a+b.c+d)进行的是a+b*c+d 的运算,而不是将a+b 的值给x,c+d 的值给 y然后再做 x*y,这点跟函数调用传递参数是不一样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值