2023年C语言程序设计14归纳_第1页
2023年C语言程序设计14归纳_第2页
2023年C语言程序设计14归纳_第3页
2023年C语言程序设计14归纳_第4页
2023年C语言程序设计14归纳_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言的特点

语言简洁、紧凑,使用以便:32个关键字,9种控制语句。

运算符丰富:共有34个运算符。

数据构造丰富。

具有构造化的控制语句。

语法限制不太严格,程序设计自由度大。

容许直接访问物理地址,能进行位操作,可以直接操作硬件。

生成目的代码质量高,程序执行率高:一般只比汇编程序生成的目时

代码效率低10%~20%

升序可移植性好。

程序构成-基本概念

源程序:

在编辑方式卜建立起来的程序文献称为源程序文献,简称源文献,对

应程序称为源程序。

C语言的源程序文献扩展名为

目日勺程JT:当顾客将高级语言编写的源程序输入计算机后,编译程疗

便把源程序整个翻译成用机器语言表达的与之等价的FI的程序。

机器代码:机器指令形式H勺的可执行程序。

(以上三者都称为程序,一般需根据上下文判断。本课程中无尤其阐

明程序指源程序)

"Ll・l.c:一种精短的例子。*/

#include<stdio.h>括号内'定义函数参数.void表达没有参数。

intmain(void)函数首部.函数名称main,即主函数。

PrintfC'hello!Word!\n");函数类型(返回成果)

RcturnO;

)

Hello!Word!

C程序构成

/&L2-2.C例1.2计算两个整数H勺和*/

^include<stdio.h>文献包括行,表达程序中用到了stdio.h文

献中定义H勺常量或宏

intmain(void)

“{”表达函数体开始。

a=45;'

b=70;"

sum=a+b;函数体,包括数听阐明和执行语句两个

部分。

printfCtsum=%d\n,,,sum);

return(O);

}“}"表达函数体结束。

Sum=l15

/♦L1-3.C:例1.3到处两个证书中大内数据。

#include<stdio.h>

in(main(void)

函致原型.由「函数max在主函数之后定义,因此

intmax(int.inl);

scanf(M%d,%dM,&a,&b);

c=max(a,b);调用函数max,计第变

量a和b的最大值,

printf(4max=%d,,,c);并将成果赋给变量c

return0;

}

intmax(intx,inty)函数max首行,其中定义int类

型日勺形式参数x和y,

{intz;该函数返回成果为int类型

if(x>y)z=x;

elsez=y;

return(z);将变量zl为返回值给main函数

221.45从键盘输入21,45

/♦L-4.C:例1.4求数组元素的和。*/

#incldue<stdio.h>

intmain(void)

{-------"定义数组a,有5个数组元素沟成

inti,a[5]={4,5,6,7,8},sum=0;

for(i=0;i<5,i++)循环语句,反复执行5次

suni=sum+a[i];

printfC*sum=%d\n,\sum);

return0;

Qiin=^O

返回值类型main(参数阐明)/*主函数阐明*/

(变量定义/*主函数体*/

执行变量语句

}

返回值类型子函数名1(参数阐明)/*子函数阐明*/

{变量定义/*子函数体9

执行语句组

返回值类型子函数名N(参数阐明)/*子函数阐明专

{变量定义/*子函数体*/

执行语句组

C程序的基本构成

函数是C程序的重要构成部分

•一种C程序必须有J1仅有一种主函数,名称为main。

•无论main函数出目前代码的任何位置,C程序的执行总是从main

困数开始,在main函数结束。

•main函数中可以调用C语言提供的库函数或顾客自定义的其他函

数。

・各函数并列关系。

个函数并列关系。

C语言中R勺函数由函数头和函数体构成

函数头包括函数类型、函数名、函数参数和参数类型阐明等都分。

函数体:函数头下面的由•对花括号括起来的部分。•般包括数听阐

明部分和语句部分。

说句阐明部分:定义函数内部将要使用的变量。

语句部分:规定函数要执行的动作。

C程序的基本构成

根据需要可以在程序中增长注释

注释由开头,以“*/”结尾。可以分多行书写,也可以在程

序中任意位置出现。

注释只是为了增强程序的可读性,并不执行。

语句以分号结尾。

怎样对的定义main函数?

intmain()

intmain(void)

intmain(intargc,char*argv[])

能否把main。定义为void,以防止扰人的“main无返回值”警告?

不能。main。必须申明为返回int,1,且没有参数或者接受合适类型的

两个参数。无二为甚么main。函数必须采用上述三者之一的定义形

式?

假如main。申明得不对,它的调月者(运行期初始代码)也许甚至都

不能对时调用它。你的J操作系统也许会忽视推出状态,而voidmain。

在你那里也也许可行,但这不可移植并且不对的。

怎样编写自己的I代码?

问题定义:在处理问题之前,先彻底理解问题是甚么?

定义处理方案所需的范围:

定义输入和输出;

定义常量和公式:

定义基本计算需求(数据的类型、范围和精度);

设计测试计划:

验证程序的对的性。

•测试计划:由输入数据集和预期输出数据构成。

需要考虑所有正常状况和异常状;兄。

设计处理方案:

算法:对的的计算措施。

驱动程序:对输入数据的对日勺性判断,非法输入不处理。

测试和调试:设计执行测试计划的方式,提供监视程序执行过程口勺有

效措施。

开发环境选择:程序员编辑、编译、维护程序的环境。

文本编译器

编译程序或者翻译程序

连接程序

编写代码:上机前,应当画好程序的详细的代码流程图。

编辑源程序;

编译程序,并改正编译错误:

连接程疗,并改正连接错误;

验证程序:执行和测试程序。

执行程序;

测试和验证:定义和改正错误(调试程序);重新编译、联机程序;

C程序的编辑、编译和运行

源程序:在编辑方式下建立起来向程序文献称为源程序文献,简称源

文献、对应程序称为源程序。

编译:将高级语言源程序转换成机器语言程序口勺过程称为编译,而

完毕这种转换过程的系统软件称为编译程序。

目的代码:经编译内生成H勺目的程序文献称为目的文献:由于程序中

用的附库函数或其他函数,需要把分离啊目日勺程序连接成完整的可

执行程序,这种计算机能识别的二进制大妈称为目的代码,对应文献

称为可执行文献。

在UNIC/Linux中编辑、编译和运行C程序

登陆进入UNIC/Linux系统

在系统提醒符(一般为$)下使用vi命令编辑源程序,以扩展名“.c”

保留文献,如丘。

在shell提醒符下输入编译命令,一般为$ccf.c

生成的可执行文献为默认的文献名a.oul,假如后来但愿指定生成H勺

可执行文献名,可以输入一下命令格式$ccf.c-of.out

运行程序,在系系统提醒符下直接输入可执行文献名,如:$f.out

在TURBOC中编辑、编译和运行c程序

TC是窗口菜单程序,由二类文献系统构成(假定TC的工作目录为

c:\tc):

,扩展名.h的J系统文头件,寄存在c:\tc\include目录下。

♦扩展名为Jib或.obj的库文献,寄存在c:\tc\lib目录下。

•扩展名为.exe的可执行文献:其中【c.exeTCI均可执行程序。

启动TC:

在DOS提醒符下.输入TC.如:

C:\TOTC

TurboC开始运行后,出现下图所示的主菜单窗口

VisualC++6.0集成环境

运用VisualC++6.0集成环境开发C程序时过程如下:

启动VisualC++6.0环境

编辑源程序文献

编译和链接

执行

第二章词汇、常量和变量

字符集

C语言中可用到的字符集有:

・数字:0、1......、9

•字母:大、小写英文字母,注意C程序中严格辨别大小写字母,如

A和a是不一样的字符。

•空白符:空格符、制表符、换行符和换页符统称为空白符。它们重

要用于分割单词,一般无其他特殊意义。

•图形符号:29个图形符号(可见),即!“%$'()*.....

等重要用作多种运算符。

・转义字符:程序中有时需要用到某些不可见或难以打印的字符,C

语言中采用转义字符来表达,如:

“\n”表达一种换行符;字符'称为转义符,表达气候的字符n具有特

定H勺含义。

语法约定

C语言中共有六类单词:标识符、关健字、常量、注释符、运算符和

标点符。

注释符:以“/*”开头、“*/”结束日勺一种字符串,其作用是对该程序

段的功能口勺一种注释。

标识符:

用于标志变量名、符号常量名、数组名、函数名、类型名、文献名的

有效字符序列。

标识符的构成:由字母、数字和下划线构成。必须由字母或下环线中

任意一字符开头。原则C规定有效程度为前31个字符。

例如,如下为合法的标识符:

nameNAME_alxlSum_2

如卜不是合法的标识符:

12a以数字开头#we以#开头

num$l包括$字符suml中间有空格

美键字:又称保留字,指具有特定含义、专门用作系统的个顶成分日勺

•类标识符。不能用作一般标识符,即不容许用左边两名或函数名

等。

原则C语言中共有32个关键字,按用途分为4类:

数据类型:如charint等存储类:如autoreturn等

流程控制:如ifelseswitch等运算类:sizcof

注意关犍字C语言的关键字都呆小写的。例如else是关犍字.但ELSE

就不是关键字

常量:在程序运行过程中,其值不能被变化的J量称为常量。

运算符:C语言中干旱有相称丰富的运算符。运算符与变量、函数一

起构成体现式,表达多种运算功能。运算符由一种或多种字符构成。

标点符:C语言中的标点符共有13个,即

••••••••••,•一

数据类型

数学中的J数据:

•数据时同个屋里观测的来的事实和概念,是有关现实世界中的地

方、事件、其他对象或概念H勺描述。

•对客观事物的符号表达,是用于表达客观事物的未经加工的原始素

材,如图形符号、数字、字母等。

计算机中的数据:

♦在计算机科学中是指所有能输入到计算机并被计算机处理的符号日勺

介质的总称。

•必须在计算机中存储,因此手计算机字长的J限制,有明确的数据类

型,不•样类型有各自的数据表达范围、表达精度。

•不一样程序设计工具中所支持的数据类型各不相似。

数据的型(类型):

・例如:int整型

数据的值:

・例如

整型数据,值为127,型为int

C语言的数据类型

整型单精

基本数字符型双精度

联合类型(或其山体)

指针类型

枚举型

基本数据类型整型

整型

int整型

shortint短整型可简写为short

longint长征性,可简写为long

unsignedint无符号整型,可简舄为

unsigned

unsignedshort无符号短整型

unsignedlong无符号长整型

整型存储特点:

C语言没有详细规定各类型数据所内存的字节数。一般

short2bytes(字节)

long4bytes

in(一种字长

unsigned前缀不变化整数存储的字节数。

整型数据可表达的数据范围

•假如值在-32768知32767之间,可以赋值给intjongint型变量,

•假如只超过上述范围在-至内,可以赋值给。ngini型变量。

・无符号型变量只能寄存不带符号的整数,而不能寄存负数。

♦无符号型整数可以寄存H勺数日勺范围比一般整型变量中数的范围寸大

一倍。

基本数据类型字符型

用于存储ASCH码字符或8位二进制数。类型名未:

char

字符型是8bits日勺证书,可与整数混合运算。

char字符型

unsignedchar无符号字符型

存储特点:

字符数据在内存中寄存的是它的ASCH编码,一般占用一种字节。当

与字符格式输出时,输出为字符:当以整型输出时,输出为整型数。

char数值范围-128727

unsignedchar数值范围0-255

基本数据类型一一浮点型

用于寄存实型(浮点型)数据的变量。

float单精度实型

double双精度实型

longdouble长双精度型

存储特点:在PC机中

•float型变量一般占4B内存空间;

•double型变量一般占8B内存空间,并提供15至・6位有效数

字。

•longdouble型变量一般占16B内存空间,并提供24位有效数

字。

常量的定义

常量:在程序运行过程中,其值保持不变的量。

常量H勺类型:根据字面形式可将常量辨别为不一样H勺类型。

整型常量的表达措施

C语言三种表达整型常量的措施:

・十进制整数:用不带任何修饰的整数表达。如123.-456/0等;

•八进制整数:以数字0开头的证书。如0123.-011等:

•十六进制整数:以数字Ox开头的证书。如0x123、0x2ef;

整蛰常量的类型

C语言中一般整型常量在机器中占用一种字长(int),但由于各武器

字长不一样,因此整数所恩可以表达的数值范围饿不一样。

系统根据整型常量的详细数值确定其类型。

使用整型常量时要注意与否超过数值表达范围之外,如在一种16位

字长的机器上,int类型的表达范围是-32768~32767。

那么000和0x10000均超过表达范围,应当为长整型常量。

整型常量后缀

无符号整型后缀:u或U,如986u、OxfeDU都是无符号整蛰常

量。

长整型后缀:1或L,JP:02341k9666L都是长整型常量。

两者可以同步使用,例如9999LU、077777LU

,十进制数形式的浮点数:由数字和小数点构成。如:

123.456.0.123.123.0、0.0、123.等。

•指数形式的J浮点数:用字母e表达卜进制指数中的)10o

如:123e3(表达123*103),且e后日勺指数必须为整型。

如:e3、2.1e3.5、.e3为不合法。

浮点型常量

•浮点型常量如不带后缀,如上所示,都是双精度类型(double),

・浮点理常量可带后缀f或F,如3.14f,那么其类型为单精度浮点型

(float)

•浮点型常量可带后缀I或L,如3.14L,那么其类型为长双精度类型

(longdouble)

字符常量

•C语言规定以单引号''包围的J单个字符为字符常量。

如:‘A'、'a'、'2'、'!'等。

,注意:

-请区别‘A'和匕'的不一样;

中的字符引用日勺是该字符日勺ASCH码值。

字符常量II勺寄存寄存形式与整数的寄存形式相类似,故C中的字符

数据与整型数据之间有相通性。

•转义字符常量(也称控制字符常量)

•用开头的功能

特使形式的字换行

符常量,用以产横行跳格

生一种动作。竖向跳格

•任意:'\n'、退格

回车

W、'\\,、走纸换页

'\123'等。“\”字符

转义字符“,”字符

\nI至3位八进制数所代表的字

1至2位十六进制数代表的字

\b符

\f

\\

\ddd

\xhh

注:横向挑个和纵向跳格均以8个字符为1格。

字符串常量

•C语言汇总用双引号将一串字符括起来称为字符串常量。

如“asee"、"011"、"WearesiudyingC”等。

•字符串常量可以看作是一种数组,这个数组的每个元素是•种字

符。

•编译程序在编译源程序时自动在每个字符串末尾放空字符‘101作

为字符串结束标识。

要点:请区别“A”与要'的不一样。

由于他们各自在内存中寄存的长度不一样。

A,A'

\n

ASCII案为0的字符

符号常量

1)含义:用一种标识符表达的常量。

定义措施:

#dcfincPRICE30

2)例:#definePRICE30

3)作用是定义符号常量PRICE日勺值为30,在程序任何用到

price符号常量的地方,系统将自动用常量30替代。

使用要点:

为辨别符号常量与变量的不一样,一般符号常量用大写字母表达

(但不是必须)。

"2-2.C:例2.2求圆的周氏和面积*/

#includc<stdio.h>

^includePl3.14159/*宏定义*/

intmain(void)

{floatc,s,i;

printf(“输入圆的半径:");

scanf(4t%f\&i);

c=2.0*PI*i;

s=PI*i*i;

prinlf("圆H勺周长:%f\n",c):

printf(“圆H勺面积:%An”,s);

return0:

变量的定义

在程序执行过程中,其值可以被变化的量。

变量的构成:

­变量名:代表内存於J存储空间

,变量值:存储单元内容

例如:

inia;变量名:a

a=12;变量值:12

例:inta,b,c/*阐明a,b,c为整型变量*/

charcc;产阐明cc为字符变量*/

doublex,y;/*阐明xj未双精度实型变量*/

C语言规定:

•程序里使用日勺每个变量都必须“先定义,后使用”

・不•样类型口勺变量应分开定义:

•在同一程存的I同一部分(同一对大括号中),不容许对同意变量做

反复定义,也就是说,不容许有同名的变量。

变量定义的)位置在函数体开始的位置(数听阐明部分),或者在函数

外。

变量内初始化

在定义变量同步可以对•变量赋予初值。

例如:intil=3.i2=4:

floatfl,f2=3.5;

定后来赋初值。

例如:

intil,i2;/*定义整型变量il和i2*/

i1=2;

i2=4;件为il赋初值为3,i2赋初值为4*/

对的理解变量

数学中日勺变量:取值可变的量。

计算机程序中的变量:

•数学含义指取值口J变的量;

・内存空间,数据类型决定系统分派给变量的内存空间的大小,以及

该内存空间中数据的二进制编码规则

例如:

shortinta;

变量a定义时的数据类型决定,系统分派给a变量2个字节H勺内存空

间,存储的二进制编码为有符号补吗;

左值(lvalue):在C语言中表达位于赋值运算符左边H勺值,左值•般

指可以定位的值,即有地址的值,可以用来存储其他的值:

右值(rvalue):在C语言中表达位于赋值运算符左边时值;

例:int=5;

5数据内容

--------------(右值)变

地址

A0I2H

左值和右值:

®x=5;J

(g)5=x;X

C中有些运算符仅仅需要操作数需右值,例如“+”时两侧、赋值运

算符的右边;

有些运算符仅仅需耍左值,例如赋值运算符“二”的左边:

有些运算符需要操作数同步有右值与左值的角色,例如++或-

整型数据H勺溢出

芦L2-3.C:阅读如下程序,指出程序运行成果刃

#include<stdio.h>

intmain(void)

{shortinta.b;

a=32767;

b=a+l;为甚么bH勺取值不是32768?

printf(tta=%d,b=%d'\a.b);

return0;

a=32767.b=—32768

由于a+1时类型为shortint类型,其表达范围为・32767~32767:

而a+1在16位计算机中的成果表到达二进制为1000000000000000,

最高位表达符号位,该二进制码是补码形式,是-32768日勺补码。

/*第一种改法*/

^includc<stdio.h>

intmain(void)

{longinta.b;

a=32767'

a=a+1;

printfC4a=%ld,b=%ld\n'\a.b);

return0;

)

注意prinif中%d是输出int类型数据欧J,应当改为%1<1.

/*第二种改法*/

#include<stdio.h>

intmain(void(

{shortinta;

longb;

a=32767;

b=a+lL;

printf(ua=%d.b=%ldM.a.b):

returno;

怎样决定使用哪种整数类型?

・假如需要大数值(不小于32767或不不小于・32767),使用long型。

•否则,假如空间很重要(如有大数组或诸多构造),使用short,

•除此之外,就使用血型。

・尽管字符类型(尤其是无符号字符类型)可以当成“小”整型使用,

但由于不可预知的J符号扩展和代码增大有时这样做也许得不偿失。

浮点型变量

tloayx.y;

doublea;

一种float变量赋值为3.1时,为甚么在某些系统中printf输出值为

3.0999999?

♦大多数电脑都是用二进制来表达浮点和整数的。在卜进制里,0』是

个简朴、精确的小数,不过用二进制表达起来却是个循环。小数0.1…。

因此3.1在卜进制内可以精确地体现,而在二进制下不能。

•在对某些二进制中无法精确表达的小数进行赋值或读入在输出

时,也就是从十进制转成二进制再转回十进制,你会观测到数值的不

一致。这是由于编译器二进制/十进制转换例程的精确引起的,这些例

成也用在printf中。

字符型变量

定义变量方式:char字符变量名

如:1)charcl,c2;

cl='d';

c2=,s,;

2)unsignedcharsum;

/*L2-4.C:字符型变量示例*/

#includc<stdio.h>

intmain(void)

阐明:•字符数据与整型数据

{charcl,c2;

之间可以互相赋值。

cl='a,;

•字符数据可■以以字符

c2='A';

或整型数据两种方式输出。

printf(uc1=%c.c2=%c\n,\cl,c2);

prinif("c1=%d,c2=%d\n,\cl,c2);

return0:

)

cl=a,c2=AcI=97,c2=65

/*L2-5.C:例:将两个小写字母转换成大写字母。*/

#inciude<stdio.h>

inimain(void)

(

charcl,c2;

cl='a';c2='b';

cl=cl-32:c2=c2-32:

printf(uc1=%c,c2=%c\n,,,c1,c2);

return0;

)

cl=A,C2=B

不一样类型数据之间H勺混合运算

一、自动转换的原理

1、基本原则

要点:以数据类型所占内存存储空间的J长度最大者为准。

如:int+char+doubledouble

2BIB8B8B

3.例:设以体现式中具有intJong.unsigned,char类型H勺常数和变量,

则体现式的最终成果是,

(A)int(B)char(C)unsigned(D)long

自动类型转换

longdoubledoublefloat高

unsignedlong

unsignedlonglong

unsigned

intchar低

short

强制类型转换

1、功能:由顾客根据自己的规定来决定数据类型的转换成

果。

2、格式:(类型名)(体现式)注意O不可缺

3、3、应用

(1)为满足运算日勺规定:

如:inti=3;

floatx=13.6;

(int)x%i;-------------►(13%4=1)

(2)提高运算精度:

如:inti=IO;

floatx;

x=i/3+25.5:-------------►(3.33+25.5=28.83)

或x=(noal)i/3+25.5;-------------►(3.33+25/5=28.83)

/*L26C:强制类型转换使用范例*/

#include<stdio.h>

intmain()注意:x自身时值和类型都没

{floatx;有变化,强制类型转换只变化

inti;数值类型和值,不变化变量的

x=3.6;值和类型。

i=(int)x;

printf(t*x=%f.i=%d,*.x.i):

return0;

x=3.600000,i=3

数据输入输出-输出函数

1、putchat()函数

功能:讲一种字符输出到原则输出设备。

格式:putchar(c)

,使用要点:

-putchar(c)4'injc可以是字符型或整型数据;

c=98;putchat(c)输出字符变量c的值

putchat(d)输出字符常量

Futchat(0x41)输出字符常量116进制)

使用输出函数需要调用c的原则I/O库函数,故需用预编译命令:

#include<stdio.h>

一putcharO也可以输出•种控制字符或其他转义字符。

如:pulchal('\n')输出一种换行符

putchaK'MOr)输出字符A

putchal,、")互相出字符单引号’

/*L2-7.C:putchat()库函数使用示范*/

#include<stdio.h>

intmain(void(

{chata.b.c:

a='b';b='o';c=y;

putchat(a);putchar(b);putchar(c);

return0;

Boy

输出函数------printf()

-功能:按指定的格式向终端输出若干任意类型的数据。

-格式:printf(格式控制,输出表列)

如:printf(“x=%d,x)

使用要点

-格式控制部分n勺使用方法:

•输出表列:可以是合法的常量、变量和体现式,输出项表中的

各输出项之间用“,”分隔。

•当格式符个数少于输出项时,多出H勺输出项不予输出。

•若格式符多出输出项时,各系统的处理有所不一样,TX对于缺

乏H勺项将输出不定值。

•每次调用printf函数之后,将得到•种整型的函数值,该值等

于正常输出的字符个数。

prinif()函数口勺格式控制

格式控制字符是双引号括起来的字符串,用来确定输出项的格

式和需要原样输出的字符串。其陶成形式为:

“一般字符串%±0m.nl格式控制字符”

其中:

◊输出数据项H勺次序一般按从左至右H勺次序输出。格式控制

中I向一般字符串,照原样输出:如:

printf(ua=%d,b=%d>>,a,b);

%:为C语言规定的标识符;

◊+:指定输出数据日勺对齐方式:+为右对齐(可省略

----;一为左对齐;

◊0:指定输出函数的数据中不合用日勺位置与否填数字“0”

有关m.n与II内阐明:

格式控制字符用J•指定数据H勺输出形式.可以包括转义字符。

用两个持续的“%%”表达输出字符“%工

格式控制字符

格式字符阐明

d以带符号的十进制形式输出整数

O以无符号向八进制形式输出整数

X以无符号R勺十六进制形式输出整数

U以无符号的十进制形式输出整数

C以字符形式输出一种字符

S输出字符串

以小数形式输出单、双精度数,隐含输出六位小数

f

c以原则指数形式输出单、双精度数,数字部分六位小数

选用%f或%6格式输出宽度较短的一种格式输出,不输

g出无意义『、J0

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

(1)若a=123,b=12345则输出为:123,,12345

(2)假如数据位数不不小于m,则左端补充空格,若不小于m,则按

是技术处。

(3)longa=134790;

printf(4t%ld'\a);

长整型数据应采用%ld格式输出,若采用%d格式则用错。

(3)inta=-I;

printf(“%d,%o",a,a);输出为-1,177777

对于八进制输出不会输出带符号的数据,长整型数据用%ld格式输出,

也可以指定宽度。如:printf("%lo,%8o”,a,a);

(4)ima=-l;

printf(“%x,%o,%d”,a,a,a)输出成果为ffffj77777,-1

同样,也可以用%以输出长整型数据或指出输出宽度,

如:printf("%lx,%l2x”,a,a);

/*L2-8.C:printf()使用范例*/

#include<stdio.h>

intmain(void)

{unsignedint=65535;

inib=-2;

printfC4a=%d,%o.%x,%u\n,\a,a,a,a);

printf(4<b=%d,%o,%x,%u\n,,,b,b,b,b);

return0;

)

a=-l,177777,ffff,65535

b=-2,177776,fffc,65534

/*L29C:字符输出*/

#include<stdio.h>

intrnain(void)

{charc=,a\

intk=97;

printf("%c,%d\rT,c,c);

printffi%c,%d\n,,,k,k);

return0;

)

a.97

a,97

例:输出字符串

prinif(“%s”.“china"):china

primf("%7s\n",“china");_china(C前两空格)

prin【f("%3\n","china");china

printf(“%5.3s\n”,china");__chi(C前两空格)

printf(M%-5.3s\n,V,chinaM);chi_(i后两空格)

输入函数---getchar。函数

1、从原则输入设备上读入一种字符。

格式:getchar()

使用要点:

-getchar()函数自身没有参数,其函数值就是从输入设备得到口勺一种

字符;

-由getchar()获得H勺字符可以赋值给一种字符或整型变量,也可以作

为体现式日勺一部分了:

如:c=getchar();

putchar(gctcharO);

printf("%c”,getchar());

-使用gctchW)函数要调用c的原则I/O库函数,应在程疗首部加上:

#include<stdio.h>

"2-11Cgetchar。库函数使用范洌力

#inclued<stdio.h>

intmain(void)

{chatc;

c=geichar():

printf(4*%c\n%d\nM,c,c);

return0;

a----------►键盘输入

a

97

输入函数----scanf()函数

功能:将从终端(键盘)输入日勺数据传送给对应日勺变量。

格式:scanf(格式控制,输入项地址表)

阐明:

・格式控制的含义同printf函数,“%格式控制字符”

•输入项地址表由若干个地址构成,代表每一种变量在内存的地址。

表达为:&变量(或数组与字符串R勺首地址)

•每次调用scanf()函数后,函数将得到一种整形函数值,此值等译正

常输入数据的个数

sanf()函数H勺使用要点

1、格式符的个数必须与输入项的个数相等,数据类型必须从左至

右----对应。

2、canf()函数中常用的格式符有:

顾客可以指定输入数据H勺域宽,系统将自动按此域宽截取所读入的

数据,如:

scanfC<%3d%3d,\&a.&b):

输入123456

系统将123赋值给a,将456赋值给b.

输入实型数据时,顾客不能规定小数点后的位数。

scanf("%7.2已&a);是错误的。

3、输入实型数据时,可以不带小数点,即按整型数方式输入。

从终端输入数值数据时,遇下述状况系统将认为该项数据结束:

•碰到空格、回车符或制表符(TAB),故可用它们作为数值数据间

日'J分隔符:

­碰到宽度结束,如“%4d”表达只取输入数据的前4列。

•碰到非法输入,如:假设a为整型变量,ch为字符型变量,对于

scanf(<<%d%c.&a,&ch);

若输入245a,则系统将认为:a=245,ch=a

在使用%c格式符时,输入的数据之间不需要分隔符标志:空格、回

车符都将作为有效字符读入。

sanf(u%c%c%c,\&a.&b,&c);

输入bEJody

b赋值给a,口赋值给b.o赋值给c

假如格式控制字符串中除了各式阐明之外,还包括其他字符,则输入

数据时,在与之对应口勺位置上也必须输入与这些字符相似的字符,

如:scanf(Enteranumher:%dM.,&x):输入格式Enteranumber:90

sanf("%d%d”,&a,&b);输入格式12223或122回车23或

122TAB23

sanf("%d%d”,&a,&b);输入格式122,23

sanf("a=%d,b=%d”,&a,&b);输入格式a=123,b=23

4、格式阐明%*表达跳过对应的输入数据项不予读入。

如:sanf("%2d%*2d%2d”,&a,&b);

若输入1234567

则12赋给a,67赋给b,而345没有赋给任何数据。

10、在原则C中不合用%u格式符,对unsigend型数据以%由%(:,%0

格式输入。

/*L2-12.C:sanf()使用示范*/

#includc<stdio.h>

intmain(void)

{inta,b,c;

chatx,y,z;

sanf("%c%c%c”,&x,&y,&z);

sanf("%d%d%d”,&a,&b,&c);

printf(tt%c%c%c,,,x,y,z);

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

return0;

}

什么是数组?

・构造数据类型之一

•数组:有序数据H勺结合.用数组名标识

•数组元素:属同一数据类型,用数组名和下标确定,数组中每个数

据都是一种数组元素

计算机中口勺数组

被等分的持续内存空间

一维数组

例inti=15;

intdata[i];(X不能用变量定义数组维数)

例intdata[5]

☆data[5)=|101;/*C语言对数组不作越界检查,使用时要注意*/

☆认为数组H勺引用

・数组必须先定义,后使用

•只能逐一引用数组元素,不能一次一用整个数组

・数组元素表达形式:数组名[下标]

其中:下标可以是常量或整型体现式

例inta[10];

printf(4i%d,,,a);(X)

必须for(j=0;j<10;j++)

printf(t4%d\r,a[j]);(J)

-维数组口勺初始化

inta[5]={1.2,34.5);•«—在定义数组时,为数组元素赋初值(在编译阶

等价于:a⑼=1;a[l]=2;a[2]=3;a|3]=4;a[4]=5;

阐明:

・数组不初始化,其元素值为随机数

・对static数组元素不赋初值,系统会自动赋以。值

staticinta[5];

等价于:a[O]=O;a[l]=0;a[2]=0;a[3]=0;a[4]=0;

阐明:

♦只能部分数组元素赋初值

如inta[5]={6,2,3);

等价于:a[0]=6;a[1]=2;a[2]=3;a[3]=0;a[4]=0;

如inta[3]={6,2,3,5,l};(X)

阐明:

-当所有数组元素赋初值时,可不指定数组长度

inta||={1,23,4,5.6};

编译系统根据初值个数确定数组维数

^defineN6

数组定义:必须用常量体现式

#includc<stdio.h>

intmain()

{inta[N],b[B-60],c[]=[1,2,345,6},i;

for(i=0;i<N;i++)

sanff<%d%d,,,&a[i],&b[i]);

for(i=0;i<N;i++)

数组元素引用

printf("%d”,a[i]);

printf("\n”);

ibr(i=O;i<N;i++)

printf("%d”,b[i]);

prinlf("'n");

tbr(i=O;i〈N:i++)

c[i]=a[i]+b[N-i-l];

fbr(i=O;i<N;i++)

printf("%d”,c[i];

return0;

}

多维数组

☆二维数组日勺定义O/i、

(行数)(列数)

•定义方式:

数据类型数组名[常量体现式北常量体现式];

例inta[3][4];元去个效=行豹*祈幽

一—、_.—一

floatb[2][5];

intc[2][3][4];

inta[3,4];(X)

☆数组元素的寄存次序

・原因:内存是一维的

•二维数组:按行序优先

•多维数组:最右下标变化最快

inta[3][2]

a[0][0]a[0][l]

a[l][0]a[l][l]

a[2][0]a[2][l]

二维数组理解

例inta[3][41;

a[0]a[0][0]a[O][l]a[0]⑵a[0][3]

a|l|a|l||O|a|l]|l|all]⑵a|l||3|

a[2]a[2][0]a⑵⑵a[2][3]

如上每个元素a[i]由包括4个元素时一维数组构成

二维数组引用和初始化

☆二维数组元素的引用

形式:数组名[卜.标][卜.标]

a[0][0]a[O][l]a[0][2]a[l][O]a[l][l]a[l][2]

a[01[0|alOlIl)a[0][2]a[l][O]a[l][l]

例int23456

a[]

[3]=

{{1,},

{4,5}}

1

a[O][OJa[O][l]a⑼⑵

字符数组和字符串

字符数组定义

☆字符数组的初始化

,逐一字符赋值

•用字符串常量

☆字符数组啊引用

I

例输出一种字符串0

#include<stido.h>1

a

intmain()2

m

{charc[10]={T,''y'};3

inti;4

a

tbr(i=O:i<l();i++)5

printf(M%cM,c[i]);6

printf("\n”);7b

return0;80

}9y

字符串

字符串及其结束标志

•无字符串变量,用字符数组处理字符串

­字符串结束标志

104101108108Hi0

字符串时输入输出

•逐一字符I/O:%c/*例用%<:*/

•整个字符串I/O:%s#include<stdio.h>

用字符数组名,遇‘\0'结束intmain()

{charstr[5];

inti;

for(i=0;i<5;i++)

sanf("%c”.&str[i];

for(i=0;i<5;i++)

prinif("%c”,str[i]);

return0;

#includc<stido.h>

intmain()

{chara[5]={'H','e',T,T,'o'};

printf("%s”,a);

returnO'

}

#includc<stdio.h>

intmain()

{chara[『Hello”;

printf("%s”,a)‘

returnO'

戊果:Hello

#include<stdio.h>

intmain()

(

chara[]={kh,;e\,l,;\0Vo,;\0,);

prinif("%d,a)'

+he1\01o\O

returnA0;

}-——

(数组中有多种、(T时,遇\

第一种技志

hel

^includc<stdio.h>

intmain()

(

inti;

输入字符串长度〈数组

chara[5];

scanf(“%s”,a);

tbr(i=0;i<5;i++)

printf(M%cM,a[i]);

he\0

return0;1

)he1o\0

he110

运行状况:

(1)若输入hel,正常

(2)若输入hell,正常

若输入hello,用%$输出时,会出现问题

例字符串输入举例

#include<stdio.h>

intmain()

(chara[15],b[5],c[5];

scaf(44%s%s%s,\a.b.c);

prinlf(tta=%s\nb=%s\nc=%s\n,,,a,b,c);

sanf("%s”,a);

printf(<<a=%s\nM,a);

return0;

)

输入:Howareyou?

Howareyou?

a=How/一一

(sanf中%s输入时,遇

b=are'

、、察格或同生结束

c=you?

Howareyou?

例准备将字符串“Thisisastring.”记录下来,错误H勺输入语句为:

(A)scanf(44%20s,s);(选A)

(B)for(k=0;k<17;k++)

s[k]=getchar();

(C)while((c=getchar())!=,\n,)

s[k++]=c;

常用的字符串处理函数

◊常用的字符串史理函数,包括在头文献string.h

O字符串输出函数puis

格式:pu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论