C语言笔记(一)

1、为什么要学习编程?

     编写程序的目的:通过编写的程序去解决现实生活中的问题。


2、c程序的组成

     c程序 = 数据结构 + 算法 

     数据结构:数据的组织形式

     1:数据之间没有直接的联系(变量int a,int b)

     2:数据之间呈现一对一的联系(数组、链表、栈、队列)

     3:数据之间呈现一对多的联系(树)

     4:数据之间呈现多对多的联系(图)  

     算法:对数据的操作方法 


3、hello c 程序

#include <stdio.h>

int main(int argc, const char * argv[])

{

    printf("Hello, World!\n");

    return 0;

}

      #include <stdio.h>:预处理命令,不是c语句,末尾没有分号,它的作用是将stdio.h文件加载到当前hello.c文件中,因为stdio.h文件中有printf函数的声明。

      int:main函数的类型,函数返回值类型,和return后面返回的数据的类型对象。

      main:main是一个函数,每一个c程序有且只有一个main函数,main是整个c程序的入口,main函数由系统调用的。

      int argc,char *argv[]:main函数的两个参数,argc是整型,argv是指针数组,argc命令行参数个数,argv保存每个命令行参数的字符串首地址,这两个参数由系统传递。

   {}:{main函数的开始,}main函数的结束,{}中间main函数的实现。

      printf:标准库提供的格式化输出函数,他的作用是将Hello,World!字符串输出到终端上,  \n换行。

      //:单行注释。

     /**/:多行注释。

     return 0:函数返回,他的作用是将0返回给系统,一般返回的是一个状态。


4、c程序的编译

      思考:hello.c程序能否在终端下直接运行

      中国人————>汉语

      外国人————>英语

      翻译:将汉语翻译成英语

     

      程序————>c语言

      计算机———>二进制语言

编译器(gcc):将c语言翻译成二进制语言


hello.c————>hello

编译的过程:

1:预处理:将预处理命令转换成纯粹的c语句

       gcc -E hello.c -o hello.i

2:编译:将c语句转换成汇编语句

gcc -S hello.i -o hello.s

3:汇编:将汇编语句转换成二进制语句

gcc -c hello.s -o hello.o

4:链接:将程序中使用到的函数库加载进来

gcc hello.o -o hello


编译方式:

1:gcc 程序名————>a.out可执行程序————>./a.out

2:gcc 程序名 -o 可执行程序名————>可执行程序————>./可执行程序名


5、c程序中的数据

数据的分类:常量、变量


6、常量

特点:在整个程序运行过程中不能改变

c程序中常见的常量:

1:整型常量:1,5

2:浮点型常量:1.1

3:字符常量:'S','s'

4:字符串常量:“hello”,“ni hao”

5:地址常量:数组名(地址常量,等于数组首元素地址),函数名(地址常量,函数的入口地址)

6:标识符常量:#define MAX 100

7:const修饰的变量:const int a = 5;

常量的存储(内存):内存中的代码段,内存中数据段的只读存储区(字符串常量)


7、变量

特点:在整个程序运行规程中可以改变

变量的定义:

格式:数据类型 变量名

变量名:满足标识符命名规则

数据类型:

基本数据类型

整型

字符型(char)

短整型(short)

整型(int)

长整型(long)

浮点型

单精度(float)

双精度(double)

派生数据类型

数组([])

指针(*)

函数

结构体(struct)

公用体(union)

枚举(enum)

空类型(void)


例子:char a;


变量的大小:计算方法sizeof(变量),sizeof(数据类型)

#include <stdio.h>

int main(int argc, const char * argv[])

{

    //整型

    char a;

    short b;

    int c;

    long d;

    //浮点型

    float e;

    double f;

    printf("a=%lu\n",sizeof(a));

    printf("b=%lu\n",sizeof(b));

    printf("c=%lu\n",sizeof(c));

    printf("d=%lu\n",sizeof(d));

    printf("e=%lu\n",sizeof(e));

    printf("f=%lu\n",sizeof(f));

    return 0;

}

#include <stdio.h>

int main(int argc, const char * argv[])

{

    printf("char=%lu\n",sizeof(char));

    printf("short=%lu\n",sizeof(short));

    printf("int=%lu\n",sizeof(int));

    printf("long=%lu\n",sizeof(long));

    printf("float=%lu\n",sizeof(float));

    printf("double=%lu\n",sizeof(double));

    return 0;

}

变量的存储(内存):栈,堆,数据段中其他区域

变量的赋值:

1:初始化:定义变量的同时堆变量进行赋值

例子:int a = 3;

2:赋值语句:通过赋值运算符对变量进行赋值

例子:int a;a = 3;


赋值运算符:=

格式:变量 = 常量/变量/表达式

作用:将等号=右边的表达式进行计算,将计算的结果赋给等号左边的变量

赋值表达式:由赋值运算符构成的式子

赋值表达式的值:等于等号左边的值

int a= 0;

a=5;

注意:

    1:等号右边可以是常量也可以是变量也可以是表达式

    2:等号左边只能是变量,不能是常量


3:输入函数:scanf

例子:int a=0;scanf(“%d”,&a)


练习:定义三个变量,用三种方式赋值,用printf输出

#include <stdio.h>

  int main(int argc, const char * argv[])

  {

       int a=3;

       int b;

       b=1;

       int c=0;

       printf("请输入c\n");

       scanf("%d",&c);

       printf("a=%d\n",a);

       printf("b=%d\n",b);

       printf("c=%d\n",c);

       return 0;

  }


变量名/变量/数据类型作用?

变量名:内存为变量开辟的存储空间的名字

变量:存储数据

数据类型:决定了变量的大小

#include <stdio.h>


int main(int argc, const char *argv[])

{

//整型

char a;

short b;

int c;

long d;

//浮点型

float e;

double f;

//计算变量的大小

printf("a = %lu\n", sizeof(a));

printf("char = %lu\n", sizeof(char));

printf("b = %lu\n", sizeof(b));

printf("short = %lu\n", sizeof(short));

printf("c = %lu\n", sizeof(c));

printf("int = %lu\n", sizeof(int));

printf("d = %lu\n", sizeof(d));

printf("long = %lu\n", sizeof(long));

printf("e = %lu\n", sizeof(e));

printf("float = %lu\n", sizeof(float));

printf("f = %lu\n", sizeof(f));

printf("double = %lu\n", sizeof(double));

return 0;

}

变量的完整定义:

修饰符 存储类型 符号类型 数据类型 变量名

变量:存储数据

数据类型:决定变量大小

符号类型:由signed(有符号),unsigned(无符号),决定了变量的最高位用来存储符号还是数据

存储类型:决定保存在哪里

1:自动存储:auto,存储在内存的栈中

2:静态存储:static,存储在内存的数据段中

3:寄存器:register,存储在寄存器中

4:外部声明:extern,只是对变量进行声明,没有开辟存储空间

修饰符:const(不可变量),volatile(易变的,编译器优化)


8、c语言中的操作


9、算数运算

算数运算符:

例子:

int a=7;

int b=3;

1:+ ————>a+b

2:- ————>a-b

3:* ————>a*b

4:/:分母不能为0 ——>a/b

5:%:参与求余运算的数是整数 ——>a%b

课堂练习:

1:求73的和、差、乘积、商和余数

2:指定一个大写字母,输出与他对应的小写字母。 printf(“%c”, );

#include <stdio.h>


int main(int argc, const char *argv[])

{

char ch = 'A';

ch = ch + 32;

printf("ch = %c\n", ch);

return 0;

}

3:设圆的半径r=1.5,圆柱的高h=3,求圆的周长、圆面积、圆球表面积、圆球体积、圆柱体积。

printf(“%f”, );

#include <stdio.h>


#define PI 3.14


int main(int argc, const char *argv[])

{

float r = 1.5;

float l = 2*PI*r;

float s = PI*r*r;

printf("l = %f\n", l);

printf("s = %f\n", s);

return 0;


10、关系运算

关系运算符:

例子:int a = 7; int b = 3;

1:<(小于)      ————>a<b

2:<=(小于等于)———>a <= b

3:>(大于) ———>a > b

4:>=(大于等于)———>a >= b

5:==(等于) ————> a== b

6:!=(不等于)————>a!=b

关系表达式:由关系运算符构成的式子

关系表达式的值:关系表达式的值只有真(1)和假(0)


11、逻辑运算

练习:

(参加少年运动会的运动员的年龄在1317之间) (13<age) && (age<17)

(动物园年龄小于12,大于65的老人免票)       (age<12) || (age>65)

(年龄不小于15岁以上的人才可以观影)          !(age<=15)       

1: &&

2: ||

3: !

逻辑表达式:由逻辑运算符构成的式子

逻辑表达式的值:逻辑表达式的值只有真(1)和假(0)

例子:

a&&b : a和b都为真时,整个表达式为真

a || b:a和b都为假时,整个表达式为假

!a:a真表达式假,a假表达式为真

1:判断下列表达式哪个为true哪个为false

a:(100>3)&&(‘a’>’c’)

b:(100>3)||(‘a’>’c’)

c:!(100>3)

2:构造一个表达式来表示下列条件:

a:number等于或大于90,但小于100     (number>=90)  && (number<100)

b:ch不是字符q也不是字符k                  (ch != ‘q’) && (ch != ‘k’)

c:number界于19之间(包括1不包括9),但是不等于5  ((number>=1)  && (number<9)) && (number!=5)

d:number不在19之间         !((number>1)  && (number<9))

课堂练习:

1:判断ch这个字符是空格,是数字,是字母      ch == ‘’, (ch >=‘0’) && (ch<=‘9’)((ch >= ‘a’) && (ch<=‘z’)) ||  ((ch >= ‘A’) && (ch<=‘Z’))

2:3个整数a,b,c,判断谁最大,列出所有可能  

a最大:(a>b) && (a>c)

b最大:(a<b) && (b>c)

c最大:(c>b) && (a<c)

3:判断year表示的某一年是否为闰年,用逻辑表达式表示。

闰年的条件是符合下面二者之一:

a:能被4整除但不能被100整除      (year%4==0) && (year%100!=0)

b:能被400整除                    (year%400==0)

((year%4==0) && (year%100!=0))||(year%400==0)


12、c程序中的表达式/语句/复合语句

表达式:由运算符构成的式子

例子:a >b

语句:表达式加分号

例子:a >b;

复合语句:程序段,代码段,由多条语句构成复合语句{}


13、复合运算

复合运算符:由算术运算符(+,-,*,/,%)和赋值运算符(=)构成复合运算符

例子:int a = 7; int b = 3;

1: += ———>a+=b———>a = a+b

2:-=   ———>a-=b———>a = a-b

3:*=  ———>a*=b ———>a = a*b

4:/=  ———>a/=b ———>a = a/b

5:%= ———>a%=b ———>a = a%b

练习

写出下面表达式运算后a的值,设原来a=12

1:a+=a       24

2:a-=2;       10

3:a*=2+3;   ———>a = a * (2+3) ———>60

4:a/=a+a;   ———>a = a/(a+a) ———>0


14:++,- -


i++, ++i ————>i = i + 1;

i- -, - -i ————>i = i - 1;

当++和- - 参与表达式计算时:

i = 3

i++, i - -:先将i参与表达式的计算,再对i进行++

++i, - -i:先对i进行计算,将计算的结果参与表达式的计算

课堂练习:

#include <stdio.h>

int main(int argc, char *argv[])

{

int i = 3;

printf("i = %d\n", i++);//输出的是3, i = 4

printf("i = %d\n", ++i);//i = 5 输出5

return 0;

}


例如:

#include <stdio.h>

int main(int argc, char *argv[])

{

int a = 1;

int b = 1;

int aplus;

int bplus;


aplus = a++;//aplus = 1, a = 2

bplus = ++b;//b = 2, bplus = 2

printf("a = %d\n", a);//2

printf("b = %d\n", b);//2

printf("aplus = %d\n", aplus);//1

printf("bplus = %d\n", bplus);//2

return 0;

s}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值