重点:掌握不同场景下使用什么样的数据类型和使用方法技巧;

 

拓展: ①任意输入一个字母,输出它的大写或者小写?

       ②输入任意字符,判断它是大写字母还是小写字母,还是数字?

1. 字符数据的存储范围:  char 内存分配1字节

有符号的:-27——27-1

无符号的:0——28-1

在C语言中字符型数据,都需要使用单引号将字符括起来,都需要定界符。

Char sex=‘F’;

Char sex=‘FFFF’;  只能输出一个F;

 

2.浮点型数据  float (double) 分配4字节  %f  %m.nf  %0.2f

类似整型变量,但是有小数部分,可以使用科学计数法计数。

科学计数法的规则:M.N e 整数

3.1415e10  =3.1415*1010

3.1415e-8 =3.1415*10-8

3.1415 e1.5

3.变量空间的位置

变量都有三要素: 自己的名称name  它存储个值value  以及它在内存中都自己的物理地址 address

 

1. 指针数据类型【指针就是物理地址 】

(1)指针的概念:一种用于存储内存中的物理地址的存储空间就是指针。

(2)指针变量:用于存储某个变量的内存地址的变量。

可以理解为指针变量也是一种变量,只是它与前面的数据类型不同,它只能存地址。

(3)指针变量的申请:  数据基类型  *指针变量名称;

Int max=99;

Int *pmax=&max;

Pmax=99;  

 

 

(4)取指针运算:*指针变量,表达意思是求指针变量所指向变量空间中存储的值。

Pmax=? // max的物理地址

*pmax=?//max变量的值  99

Ex2:从键盘上输入任意两个整数,交换两个整数后输出。

/*变量版本*/

#include<stdio.h>

void swap(int x,int y);

int main()

{

 int x1=0,x2=0;

 printf("x1=");

 scanf("%d",&x1);

 printf("x2=");

 scanf("%d",&x2);

 printf("交换前:\nx1=%d,x2=%d\n",x1,x2);

 swap(x1,x2);

 printf("主程序:\nx1=%d,x2=%d\n",x1,x2);

 return 0;

}

 

void swap(int x,int y)

{

 int tmp;

 tmp=x;

 x=y;

 y=tmp;

 printf("子函数交换后:\nx1=%d,x2=%d\n",x,y);

}

 

 

 

/*指针版*/

#include<stdio.h>

void swap(int x,int y);

int main()

{

 int x1=0,x2=0;

 printf("x1=");

 scanf("%d",&x1);

 printf("x2=");

 scanf("%d",&x2);

 printf("交换前:\nx1=%d,x2=%d\n",x1,x2);

 swap(&x1,&x2);

 printf("主程序:\nx1=%d,x2=%d\n",x1,x2);

 return 0;

}

 

void swap(int x,int y)

{

 int tmp;

 tmp=*x;

 x=y;

 *y=tmp;

 printf("子函数交换后:\nx1=%d,x2=%d\n",*x,*y);

}

 

(5)在C语言中为什么使用指针,指针有哪些好处,并举例说明?

 

 

(6)指针和其它数据类型的区别?

①相同:指针也是一种数据类型,跟int  char float等都是一种数据类型;

②不同点:指针只能存储物理地址,其它数据类型存储的是具体的数据值;

(7)指针变量和其它变量的区别?

指针变量也是一种变量,它存储的是它指向的那个变量的物理地址;

其它变量存储的就是对应类型的数据值。

 

2. 字符型指针  ,浮点型指针

与整型指针类似。

Char sex=’f’;

char *ps=&sex;

Ex:指针运算

#include<stdio.h>

int main()

{

 int num=101;

 int *pn=#

 char ch='A';

 char *pc=&ch;

 printf("pn-value=%x\n",pn);//22fe..

 printf("num-add=%x\n",&num);//==

 printf("*pn-value=%d\n",*pn);//101

 printf("num-value=%d\n",num);

 num=num+3;

 pn=pn+7;//111

 pn=pn+20;

 printf("*pc=%c\n",*pc);

 ch=ch+2;

 pc=pc+33;

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

 

 return 0;

}

6.空指针及多级指针

(1)没有初值的指针,建议赋值为NULL;

Int num=99;

Int *pn=NULL;

(2)指向指针的指针就是二级指针,多次指向的就是多级指针。

Int num=99;

Int * pm=#

Int * *pmm=NULL;

 

 

7.指针总结:指针使用的时候的三种情况:

① 定义指针  数据类型  *指针变量名称

Int num=99;

Int * pm=NULL;

Pm=&num;

指针本身

Pm是谁?  Pm就是num在内存中的物理地址;

取指针(*运算)

pm=?  pm表示的是pm所指向的变量num里面存储的值。

--------------单个数据的存储-----------------------------

题目升级:

从键盘上任意输入三个数,求总分,求平均分,并输出?

 

从键盘上任意输入10个20个30个…100个….1000个数据,求总分,求平均分?

相同数据类型  多个   

现在你学习的数据存储结构只能解决单一的数据存储,当有批量数据的时候如果来解决存储的问题?

8.批量存储数据——数组

(1).整型数组

①当有多个数据都是相同数据类型特征存储,这个时候就可以考虑采用批量存储。

数组:

②数组定义:数据类型  数组名称[数组大小]

Ex: int ar [10]={1,2,3,4,5,6,7,8,9,10,};

Ar[0]

Ar[1]

Ar[2]

 

 

 

 

Ar[9]

有效存储区间:Ar[0]——ar[n-1]  40字节

Int ar[1];

Int a;

③数组的访问方法:

(一)采用数组下标访问;

(二)采用指针访问数组;

 

④数组的赋值方法:

(一)一种直接赋值:集成赋值及引用下标赋值;

(二)一种从键盘读入:Scanf读入。

新知识,循环结构

 For(初始条件;循环边界;循环控制)

{

 循环体;

}

EX:从键盘上读入十个数,并逆序输出?

输出奇数或者输出偶数?