C语言基础知识2谢新冲.docx

上传人:b****5 文档编号:4708023 上传时间:2022-12-07 格式:DOCX 页数:74 大小:244.55KB
下载 相关 举报
C语言基础知识2谢新冲.docx_第1页
第1页 / 共74页
C语言基础知识2谢新冲.docx_第2页
第2页 / 共74页
C语言基础知识2谢新冲.docx_第3页
第3页 / 共74页
C语言基础知识2谢新冲.docx_第4页
第4页 / 共74页
C语言基础知识2谢新冲.docx_第5页
第5页 / 共74页
点击查看更多>>
下载资源
资源描述

C语言基础知识2谢新冲.docx

《C语言基础知识2谢新冲.docx》由会员分享,可在线阅读,更多相关《C语言基础知识2谢新冲.docx(74页珍藏版)》请在冰豆网上搜索。

C语言基础知识2谢新冲.docx

C语言基础知识2谢新冲

第一章C语言基础知识

第一节C语言的基本格式

一、C语言源程序或C程序.c

例:

求两数和程序

命令行,编译预处理命令行

#include"stdio.h"

主函数

main()

变量

{

定义语句

inta,b,sum;

函数体

赋值语句

a=10;

b=20;

sum=a+b;

printf("sum=%d",sum);

}

说明:

1.主函数:

一个C源程序有且仅有一个main函数,程序总是从main函数开始,从main函数结束。

Main必须小写,且其后紧跟一对小括号,中间无空格。

2.函数体:

告诉计算机要做什么事情。

3.int是C中的关键字(表示特殊含义的一些符号)必须小写;变量变量名(规则)变量类型变量名,变量名;;是C中语句结束的标志。

4.开头:

#开头,无分号printfinclude是预定义标识符

5.注释:

可放在程序的任意位置,以/*和*/来界定。

但要注意:

#include"stdio.h"

main()

{

inta=0,b=0;

a=10;

sum=a+b;

printf("a+b=%d",a+b);

}

#include"stdio.h"

main()

{

inta=0,b=0;

a=10;/*给a赋值

b=20;给b赋值*/

sum=a+b;

printf("a+b=%d",a+b);

}

 

 

变量先定义后使用,定义变量放在程序的定义部分

语句后加;

程序可以从任一列开始书写,一行内可写多个语句

main()

{

定义部分;(前)

执行部分;(后)

}

总结:

 

二、标识符:

用于标识名字的有效字符序列

命名规则:

①字母、数字、下划线

②第一个字母必须是字母或下划线

③大小写字母有区别

标识符分为三类:

1关键字:

具有特定含义,专门用为说明C语言特定成分的一类标识符;必须小写

如:

int,floatdouble等

2预定义标识符:

库函数名编译预处理命令名(define、include)

预定义标识符可作为用户标识符使用,此时预定义标识符就失去原来的意思;但用户标识符不可作预定义标识符

3用户标识符:

一般给变量、函数、数组或指针等命名,由用户根据需要定义的标识符

a.不与关键字相同

b.遵循起名规则

c.见名知义

例1.2可在C语言中用作用户标识符的一组标识符是:

()

A)andB)VoidC)HiD)int

_2007y-m-dDr.TomBig1

例1.3以下不合法的用户标识符是:

()

A)j2_KEYB)DoubleC)4dD)_8

三、常量:

程序运行过程中,值不改变的量

数值型:

值的形式出现

字符串常量

实型

字符常量

整型

 

★符号常量:

用标识符命名

1遵循命名规则②见名知义

例:

计算圆面积的C语言程序

宏定义命令行,符号常量大写

#definePI3.14159

大写形式

main()

{

floatr,area;

r=12.5;

area=PI*r*r;

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

}

定义了符号常量后,不可以再通过赋值语句改变该符号常量的值。

四、变量:

在程序运行过程中,其值可以改变的量。

遵循规则

#include"stdio.h"

main()

{

inta=10,b=20,c;

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

a=30;

b=10;

c=a+b;

printf("area=%f\n",c);

}

变量中的值以最后一次赋值为准。

第二节整型数据

一、数值转换:

计算机内部以二进制来存储数据

数字的四种表示形式:

十进制、二进制、八进制、十六进制

表十进制、二进制、八进制、十六进制对照表

十进制

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

二进制

0

1

10

11

100

101

110

111

1000

1001

1010

1011

1100

1101

1110

1111

八进制

0

1

2

3

4

5

6

7

10

11

12

13

14

15

16

17

十六进制

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

除2取余

1.十二、八、十六

例:

(38)10=()2

每位乘以2的n-1次幂,再求和

2.二、八、十六十

例:

(1101)2=()10

(1)2=21-1

(11)2=22-1

(111)2=23-1

★当二进制所有位数上的数字均为1时,可用2的n次幂减1求出其相应的十进制数。

3.二八、十六

观察表可得出每个八进制数的单个数字都可用3位二进制数来表示

每个十六进制数的单个数字都可用4位二进制数来表示

例:

(13)8=(001011)2(E3)16=(11100011)2

十进制整型常量:

0~9

★八进制和十六进制之间无直接转换

★C中无二进制的整型常量

八进制整型常量:

(前导0)+(0~7)

二、整型常量:

十六进制整型常量:

(前导0x或0X)+(0~9

短整型

★长整型无符号型常量加lu/LU

无符号整型(加后缀U/u)

长整型(加后缀L/l)

基本整型

 

例1.6以下选项是可作为C语言合法的整数的是:

(C)

A)10110BB)0386C)0fXffaD)x2a2

例1.7以下程序运行后的输出结果是()

main()

{

intx=0210;

printf("%X\n",x);

}

程序运行结果为:

88

三、

基本整型:

(short[int])2个字节

无符号整型(加后缀U/u)

整型变量:

短整型:

(int)

 

长整型(加后缀L/l):

(long[int])4个字节

 

00000000

00000110

inti=6;

inti;

i=6;

例:

★定义变量的同时可给变量赋值,称为变量的初始化。

变量的字节个数反映变量存储值的范围

整型数据的取值范围:

-32768~32767(215-1)

无符型数据的取值范围:

0~65535(216-1)

四、整数在内存中的存储形式:

位、字节、最低位、最高位、符号位(0正;1负)

1.有符号正整数:

有符号正整数的存储形式称为源码。

如:

(10)10=(0000000000001010)2

两个字节存放的最小的有符号正整数:

0000000000000001

两个字节存放的最大的有符号正整数:

0111111111111111=215-1=32767

2.负整数:

“补码”形式存放(反码加1)

两个字节存放的最小负整数为:

1000000000000000-32768~32767

3.无符号正整数:

1111111111111111=216-1=65535

例1.9#include"stdio.h"

main()

{

unsignedinta;

intb=-1;

a=b;

printf("%u",a);

}

程序运行后的输出结果是:

(B)

A)-1B)65535C)32767D)-32768

第三节实型数据

一、实型常量:

有2种形式:

小数形式和指数形式

1.小数形式:

包含1个小数点的十进制数字串,小数点前(后)可无数字,但不可以同时没有数字。

如:

3..140.15.×

2.指数形式:

小数部分+指数部分

e/E+整数(可带符号的整数)阶码

★小数部分+指数部分二者缺一不可

例:

以下合法的一组C数值常量是:

D)ox8A

10.000

3.e5

C).177

4e1.5

0abc

B)12.

0Xa23

4.5e0

A)028

.5e-3

-0xA

 

单精度:

7位有效数字,计算机中给出6位小数位

-

二、

实型变量:

双精度:

15-16位有效数字,计算机中给出6位小数位

-

C中,为单精度分配4个字节的存储单元,其数值范围在-1038~1038之间

C中,为双精度分配8个字节的存储单元,其数值范围在-10308~10308之间

第四节表达式

一、算术运算符:

+、-、*、/、%

%前后只能为整型,当运算对象为负数时,C中运算结果的符号与被除数的符号相同。

根据运算符的运算对象的个数,运算符可分为:

单目、双目、三目

◆①运算符两边的运算对象类型必须一致,结果的类型与运算对象类型一致

◆②运算符两边的运算对象类型不一致时,运算对象从低类型向高类型转换。

如:

5/2.0=2.5

◆③C中,所有实型数的运算都是以双精度方式进行,单精度尾部补0

表算术运算符与圆括号的优先级次序

高低

()

+、-(正、负号)

*、/、%

+、-(加减号)

同级

同级

同级

单目

双目

二、算术表达式:

用算术运算符和圆括号将运算对象连接起来的式子称为算术表达式

三、强制类型转换:

(类型名)表达式;

例:

(int)(3.927*10+0.5)/100.0

第五节赋值表达式

一、赋值运算符和赋值表达式:

赋值运算符:

=

赋值表达式:

变量名=表达式如:

sum=a+b;

◆①赋值运算符=左边必须是变量

◆②赋值运算符=左边的值被右边的表达式的值代替,而右边的值不变。

如:

b=3;c=2;

a=b+c;

◆③赋值表达式的值是赋值号左边变量被赋值后的值。

如:

x=y=2525赋给y,再将y=25这个表达式的值赋给x,则x=25

◆给合方向:

自右向左

◆赋值运算符=是单方向的操作,将右边表达式的值赋给左边的变量

◆赋值运算符=两边的运算对象类型不一致,自动转换:

右边表达式的值的类型转化成左边变量的类型

例1.13有以下语句:

doublea,b;intw;longc;若各变量已正确赋值,则下列选项中正确的表达式是:

(C)

A)a=a+b=b++B)w%((int)a+b)C)(c+w)%(int)aD)w=a%b;

二、复合赋值表达式:

算术运算符和赋值运算符组合成复合赋值运算符:

+=、-=、*=、/=

如:

n+=100;相当于n=n+100;

例:

n=8;

n+=n*=n-2;★运算方向:

自右向左

6

48

96

三、自加、自减运算符:

++、--属于赋值运算符

++i:

++称为前缀增量运算符

i++:

++称为后缀增量运算符

◆增量运算符的运算对象只能为变量,有有为常量或表达式如:

3++++(i+1)

◆++/--不论放在变量的前或后,变量本身都会增加(或减少)1

◆结合方向:

自右向左

◆i++:

表达式的值为变量i没有增加1之前的值(即变量i的初始值)

◆++i:

表达式的值为变量i增加1之后的值(即变量i增1之后的值)

如:

i=3;

j=i++;j=i;i=i+1;j=3

k=++i;i=i+1;k=i;k=4

例1.15有以下程序:

#include"stdio.h"

main()

{

intm=12,n=34;

printf("%d%d",m++,++n);

printf("%d%d",n++,m++);

}

程序运行后的输出结果是:

(A)

A)12353514B)12353513C)12343514D)12343513

四、逗号运算符和逗号表达式:

逗号运算符:

逗号表达式:

用逗号运算符将两个或两个以上的表达式连接起来,可构成一个新的表达式

结合性:

自左向右

整个表达式的值为最后一个表达式的值

如:

x=5,y=6,z=7;7

★逗号运算符的优先级最低。

例:

a=3*5,a*4

因为=的优先级比,优先级高,所以先求解a=3*5=15,然后求解a*4=60,所以整个逗号表达式的值是60

例:

#include"stdio.h"

main()

{

intx,y,z;

x=y=1;

z=x++,y++,++y;/*先将x++的值赋给z,z为1;整个逗号表达式的值为3

printf("%d,%d,%d",x,y,z);

}

程序运行后的结果是:

(C)

A)2,3,3B)2,3,2C)2,3,1D)2,2,1

第二章顺序结构

C语言的三种基本结构:

顺序、选择、循环

一、表达式语句:

在表达式之后加一个分号“;”,就构成了一个表达式相应的语句。

特别地,当只有一个;时,也是一条语句,称为“空语句”。

空语句表示程序执行时,不产生任何动作。

二、复合语句:

(多个语句)用{}括起来的多个语句组成一个复合语句,其形式如下:

{语句1,语句2,语句3,......,语句n;}

一个复合语句在语法上等同于一个语句

三、顺序结构:

一个程序中的语句按照它们在程序中出现的顺序逐条执行,由这样的一系列语句构所的程序结构称为顺序结构。

第二节数据输出

程序运行过程中产生的数据需输出到显示器或打印机上,用户才能看到;一般情况下,计算机先将运行结果存到变量中,然后将变量的值输出。

C语言本身无输入/出关键字,输入/出操作由数据库函数提供的,因此程序第一行需引入库函数。

#include”stdio.h”

一、printf函数的一般形式:

功能:

按指定的格式将需要输出的数据在显示器上输出

用于说明的信息:

按原样输出

格式:

输出控制+输出数据列表

带有%的格式转换说明:

指定输出数据的格式

1.输出控制由“”引起来的格式转换控制信息:

格式转换说明

必须有;但只有格式说明信息时可以没有格式说明信息和后面的输出数据列表

格式说明信息

如:

printf(”a=%d,b=%d”,2,3);

 

2.输出数据列表:

包括需要输出的一些数据(可以是常量,变量或表达式),各数据之间用,隔开。

★输出数据的个数与输出控制中格式转换说明的个数要相等,且在顺序上要一一对应且类型匹配。

(否则,系统不会报错,得不到正确的结果)

★若输出数据个数与格式说明的个数不相等时:

输出数据个数>格式说明的个数:

多余的输出项不输出

输出数据个数<格式说明的个数:

多余的格式说明将输出不定值

二、printf 函数中的模式说明:

格式说明

输出数据格式

%d或%i

输出有符号的十进制数

%f

输出单精度或双精度且小数点后有6位小数

%c

输出一个字符

%o

输出八进制无符号形式整型数(不带前导符0)

%x或%X

输出十六进制无符号形式整型数(不带前导符0x或0X))

%u

输出无符号的十进制整数

%e或%E

以[-]m.ddddde+xx或[-]m.ddddde+XX的形式输出单精度或双精度数。

D的个数由精度决定。

系统隐含的精度为6,d的个数隐含为5。

说明:

①可用%与格式字符之间加一个整数来控制输出数据所占的宽度。

指定宽度>实际宽度:

右对齐,左边补空格如:

printf(“%4d”,254);输出:

空格

(1)+254

指定宽度<实际宽度:

按实际宽度输出如:

printf(“%2d”,254);输出:

254

②%+整数1.整数2+f:

整数1指定数据的总宽度,整数 2指定数据的小数位的个数

①实际小数的位数>指定的小数位数:

截去多余的小数位(四舍五入)

实际小数的位数<指定的小数位数:

右边用0补齐

3若想输出格式为:

0mmm(8)或0xmmm(16),输出数据类型应为:

%#o或%#x或%#X

第三节数据输入

一、scanf函数的格式:

&变量名

scanf(输入控制,输入数据列表)

 

二、scanf函数中的格式说明:

格式说明对应的输入数据格式

格式说明

输入数据格式

%d

输入十进制整型数

%i

输入整型数,可是前导带0的八进制数和带前导0x的十六进制整数

%c

输入一个字符

%o

输入八进制整型数

%x

输入十六进制整型数

%u

输入无符号的十进制整型数

%f

以带小数点的形式或指数形式输入单精度或双精度数

说明:

①从键盘输入多个数值数据时,数值数据之间用分隔符隔开

如:

intx,y,z;

scanf(“%d%d%d”,&x,&y,&z);

②格式说明的类型与输入项的类型一一对应匹配

③可指定输入数据的宽度,但不能指定小数的位数

4格式说明的个数<输入项的个数:

多余的数据作为下一个输入操作的输入数据

格式说明的个数>输入项的个数:

结束输入

如:

#include"stdio.h"

 

main()

{

intx,y,z,w;

scanf("%d%d",&x,&y,&z);

scanf("%d",&w);

printf("%d,%d,%d,%d",x,y,z,w);

}

若输入:

102030(输入结束)输出结果为:

x=10,y=20,w=30

如:

main()

{

intx,y,z;

scanf("%d%d%d",&x,&y);scanf("%d",&z);

printf("%d,%d,%d",x,y,z);

}

若输入:

10203040后就结束输入x=10,y=20,z=40

5跳过输入数据的方法:

格式字符与%之间加一个*,使跳过输入的数据。

6在输入控制中含有其他的字符,则在输不入时要求按一一对应的位置原样输入这些字符:

如:

scanf(“x=%d,y=%d”,&x,&y)

输入时需按如下格式输入数据:

x=10,y=20

★scanf赋值和使用赋值语句赋值,有什么区别:

前者变量的值是不固定的,运行结果可不同;后者变量的值是固定的,运行结果是相同的。

第三章选择结构

第一节关系运算与逻辑运算

C中的逻辑值:

真(非0)假(0)

一、关系运算符:

>、>=<<===!

=

同级(低)

同级(高)

优先顺序

 

算术运算符>关系运算符>赋值运算符

二、关系表达式:

用关系运算符将两个表达式连起来的表达式

运算结果有两种:

(1)、假(0)

三、逻辑运算符:

&&||

优先顺序:

逻辑运算符两侧的运算对象可以是任意合法的表达式

(单目)>算术运算符>关系运算符>&&>||>赋值运算符>逗号运算符

四、逻辑表达式:

注意短路现象

例:

设有定义:

inta=2,b=3,c=4;则以下选项中值为0的表达式是(A)

A)(!

a==1)&&(!

b==0)B)(a

c||1

C)a&&bD)a||(b+b)&&(c-a)

例:

有以下程序:

main()

{

inti=1,j=2,k=3;

if(i++==1&&(++j==3||k++==3))

printf("%d,%d,%d",i,j,k);

}

程序运行后的输出结果是(D)

A)123B)234C)223D)233

第二节if语句

一、

if语句结构:

if(表达式)语句

注意:

若一个程序中有多个并列if语句时,将逐条判断是否满足

If子句分清楚,若if后有多条语句,并不是一条复合

语句时,说明if后只有一条语句是if子句,其他不是。

例:

main()

{

inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);

}

输入58,输出结果将为:

585858

例:

main()

{

inta=4,b=3,c=4,t=0;

if(a

if(a

printf("%d%d%d",a,b,c);

}

程序输出结果为:

5 0 3

二、if—else语句:

if(表达式)

语句1;

else

语句2;

 

★a=b条件的判断

if的子句不只为一条语句时,须用{}括起来

else与它前面最近的且未曾配对的if语句配对,组成一对if—else语句

例:

main()

{

inta=0,b=0,c=0,d=0;

if(a=1)b=1;c=2;

elsed=3;

printf("%d,%d,%d,%d",a,b,c,d);

}

程序输出:

D

A.0,1,2,0B.0,0,0,3C.1,1,2,0D.编译有错

例:

main()

{

inta=3,b=4,c=5,d=2;

if(a>b)

if(b>c)

printf("%d",d+++1);

else

printf("%d",++d+1);

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

}

程序运行后的输出结果是:

(A)

A)2B)3C)43D)44

练习:

编写程序:

输入两个数,输出较大者

三、if—else—if结构:

if(表达式1)语句1

elseif(表达式2)语句2

可是一条语句或一个复合语句,{}后不加;

elseif(表达式3)语句3

…….

else语句n

★表达式1不满足时,才会判断表达式2是否满足等等,但多个if语句并列时,逐条对if表达式进行判断

★3种形式的if中的表达式一般为逻辑表达式或关系表达式

分析:

0x=0

y=

 

成绩等级问题

四、嵌套的if条件语句:

if语句的子句可是一复合语句,也可是一个if语句,即嵌套的if语句。

基本形式如下:

 

if(表达式1)

if(表达式2)语句1

else语句2

else

if(表达式3)语句3

else语句4

例:

if(表达式1)if(表达式1)

if(表达式2)语句1if(表达式2)语句1

else语句2else语句2

例:

main()

{

inta=3,b=4,c=5,d=2;

if(a>b)

if(b>c)

printf("%d",d+++1);

else

printf("%d",++d+1);

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

}

程序运行后的输出结果是:

(A)

A)2B)3C)43D)44

第三节条件运算符和条件表达式

条件运算符:

条件表达式:

表达式1?

表达式2:

表达式3

条件运算符的优先级:

>赋值运算符

<关系运算符和算术运算符

条件运算符的结合性:

自右向左

例:

max=a>c?

a:

c;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1