C语言教程Word格式文档下载.docx

上传人:b****1 文档编号:881514 上传时间:2023-04-29 格式:DOCX 页数:98 大小:299.69KB
下载 相关 举报
C语言教程Word格式文档下载.docx_第1页
第1页 / 共98页
C语言教程Word格式文档下载.docx_第2页
第2页 / 共98页
C语言教程Word格式文档下载.docx_第3页
第3页 / 共98页
C语言教程Word格式文档下载.docx_第4页
第4页 / 共98页
C语言教程Word格式文档下载.docx_第5页
第5页 / 共98页
C语言教程Word格式文档下载.docx_第6页
第6页 / 共98页
C语言教程Word格式文档下载.docx_第7页
第7页 / 共98页
C语言教程Word格式文档下载.docx_第8页
第8页 / 共98页
C语言教程Word格式文档下载.docx_第9页
第9页 / 共98页
C语言教程Word格式文档下载.docx_第10页
第10页 / 共98页
C语言教程Word格式文档下载.docx_第11页
第11页 / 共98页
C语言教程Word格式文档下载.docx_第12页
第12页 / 共98页
C语言教程Word格式文档下载.docx_第13页
第13页 / 共98页
C语言教程Word格式文档下载.docx_第14页
第14页 / 共98页
C语言教程Word格式文档下载.docx_第15页
第15页 / 共98页
C语言教程Word格式文档下载.docx_第16页
第16页 / 共98页
C语言教程Word格式文档下载.docx_第17页
第17页 / 共98页
C语言教程Word格式文档下载.docx_第18页
第18页 / 共98页
C语言教程Word格式文档下载.docx_第19页
第19页 / 共98页
C语言教程Word格式文档下载.docx_第20页
第20页 / 共98页
亲,该文档总共98页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言教程Word格式文档下载.docx

《C语言教程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言教程Word格式文档下载.docx(98页珍藏版)》请在冰点文库上搜索。

C语言教程Word格式文档下载.docx

C程序的头文件以“.h”为后缀,C程序的定义文件以“.c”为后缀。

头文件的内容也可以直接写C程序中,但这是很不好的习惯。

许多初学者用了头文件,却不明其理。

在此略作说明。

1.通过头文件来调用库功能。

在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。

用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。

编译器会从库中提取相应的代码。

2.头文件能加强类型安全检查。

如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。

关于头文件的内容,初学者还必须注意。

1.头文件中可以和C程序一样引用其它头文件,可以写预处理块,但不能写语句命令。

2.可以申明函数,但不可以定义函数。

3.可以申明常量,但不可以定义变量。

4.可以“定义”一个宏函数。

宏函数很象函数,但却不是函数。

其实还是一个申明。

5.结构的定义、自定义数据类型一般也放在头文件中。

6.#include<

filename.h>

,编译系统会到C语言固定目录去引用。

#include"

filename.h"

,系统一般首先在当前目录查找,然后再去环境指定目录查找。

四、好的风格是成功的关键

版本申明、函数功能说明、注释等是C语言程序的一部分。

不养成很好的习惯则不能成为C语言高手(专业人员)。

02章C语言的变量和数据类型

掌握变量的有效范围、基本数据类型是本章的内容。

一、基本数据类型

基本数据类型只有5种,另外加上布尔型、数组、结构类型、枚举类型等都是基本类型的一种变化。

指针是一种地址操作,必须和某一种数据类型相结合才有意义。

自定义数据类型则是将以上类型进行组合变化后重新命名而已。

1.char   字符型

2.int   整型

3.float  浮点型

4.double  双精度浮点型

5.void   无类型

不同的C语言版本都扩充了许多自己的类型,这些全是基本类型的变化(主要是数据范围的变化),扩充的修饰符有2组(short和long,signed和unsigned)。

下面列出VC的基本类型及部分扩充类型,以供参考:

类型名称

字节数

其它称呼

值的范围

int

*

signed,

signedint

根据操作系统而定

unsignedint

unsigned

__int8

1

char,

signedchar

-128to127

__int16

2

short,

shortint,

signedshortint

-32,768to32,767

__int32

4

-2,147,483,648to2,147,483,647

__int64

8

none

-9,223,372,036,854,775,808to9,223,372,036,854,775,807

char

unsignedchar

0to255

short

unsignedshort

unsignedshortint

0to65,535

long

longint,

signedlongint

unsignedlong

unsignedlongint

0to4,294,967,295

enum

与int相同

float

3.4E+/-38(7digits)

double

1.7E+/-308(15digits)

longdouble

10

1.2E+/-4932(19digits)

标准ANSIC中没有布尔型,只有布尔表达式,但不同的C语言版本有可能扩充。

布尔型只有2个值“真”、“假”,数值0表示“假”,0以外数值全当作“真”处理。

二、变量定义

变量定义要注意以下几方面:

1.变量定义必须有一数据类型。

2.变量定义时可以赋初值,也可以不赋初值。

3.几个变量可以同时定义。

4.不同类型的变量赋值时,小类型的变量可以直接赋给大的,大类型的变量赋给小类型的变量时必须强制转换。

.NET的编译器做了许多防错处理,使得不强制转换也不出问题。

大家仍不可忘记类型转换,否则将来程序移植时会带来许多麻烦。

unsignedcharu_char=109;

//定义并初始化

charcharC;

//只定义不赋值

doubledoubleX=200,doubleY;

//2变量同时定义

charC=u_char;

//类型的范围相同,无须强制转换

u_char=%c\n"

u_char);

charC=%c\n"

charC);

u_char=%d\n"

charC=%d\n"

doubleY=charC;

//小类型->

大类型

charC=(char)doubleX;

//大类型->

小类型

doubleY=%e\n"

doubleY);

}

三、变量命名

C语言的变量命名是很自由的,不同的系统有各自的规则,如UNIX主张用小写并用下划线分割意思(例:

new_value)。

Windows主张大小写混写(例:

NewValue)。

中国主张尽可能用英文,而日本更喜欢用汉字的读音。

甚至不同企业的命名规则也不一样,但不管什么风格,都必须遵守C语言的几点规则。

1.不能用纯数字命名,如“123”,“849”等。

2.不能有空格和运算符,如“newvalue”,“two+three”。

3.不能用C语言的关键字(参见下表)、扩充关键字。

auto

struct

break

else

switch

case

register

typedef

extern

return

union

const

continue

for

signed

void

default

goto

sizeof

volatile

do

if

static

while

四、易忽视的地方

char型和unsignedint是同一类型,字符其实就是无符号整型,因此下面几种写法实际上是一样的。

charch1=109;

__int8x1=109;

charch2='

m'

;

unsignedintx2='

ch1=%c\n"

ch1);

//字符方式输出

ch1=%d\n"

//整型方式输出

x1=%c\n"

x1);

x1=%d\n"

ch2=%c\n"

ch2);

ch2=%d\n"

x2=%c\n"

x2);

x2=%d\n"

字符用单引号,而以后学的字符串是用双引号的。

03章字符的输入输出

前2章用到的printf()函数,是C语言中的带格式的标准输出函数。

C语言的函数都封装在不同的函数库里面,编程时要用到某个函数时,只要用include语句申明一下,被申明过的函数库中的所有函数就可以在程序的任何地方使用。

这2章要讲述的基本输入输出函数,都在stdio.h中被定义。

一、字符的输入输出『getchar(),putchar()』

函数getch()是从终端输入一个字符。

是一个字符,也就是说,该函数调用一次只能得到一个字符,想要得到若干字符,只能调用若干次。

函数putchar()是向终端输出一个字符。

这儿也是一个字符,也就是说,该函数调用一次只能输出一个字符,要输出若干字符,只能调用若干次。

charich1;

intich2,ich3;

charch1='

q'

u'

charch3='

a'

charch4='

n'

 

ich1=getchar();

//字符类型实际是整型,只是范围小点而已

ich2=getchar();

//所以字符赋给整数变量没有关系

ich3=getchar();

//这三句在屏幕上输入“xue”后回车

putchar(ch1);

putchar(ch2);

putchar(ch3);

putchar(ch4);

putchar(ich1);

putchar(ich2);

putchar(ich3);

putchar('

\n'

//这是回车字符

上例中调用了3次getchar()函数,输入时请注意:

1.如果正好输入3个字符后回车,则3个字符分别赋给了相应的三个变量。

2.如果输入的字符数大干3个,则多余的被会扔掉。

3.如果输入2个字符后回车,则回车符被赋给了第3个变量。

4.如果输入1个字符后回车,则第1个变量得到了这个字符,而第2个变量则得到的是回车,第3个变量还没有得到,所以系统还在继续等待你输入第3个字符。

5.如果不输入而直接敲回车,则你必须敲3次回车,3个变量全等于回车。

6.getchar()的返回值不是char,而是int。

因此当得到超出char范围的数据时要注意。

二、改进后的字符输入函数

上面这些令人不满的地方,主要是由于getchar()函数使用了键盘缓冲区,一直等到有回车时,getchar()函数才接受字符。

因此有人对此函数进行了扩充,函数名为getche(),不再使用键盘缓冲,输入的字符立即就能被接受。

这个函数不是存放在stdio.h中,而是存放在conio.h中。

上面程序如下修改便好用多了。

类似函数还有很多,如getch(),这和getche()的区别是,getch()函数在输入后并不显示在屏幕上,其它功能和getche()相同,也是定义在conio.h中。

conio.h>

ich1=getche();

//改进后的字符输入函数

ich2=getche();

ich3=getche();

三、转义字符

前面的例子中,我们已经看很多“\n”,它表示输出时显示一个回车。

回车字符是控制字符,无法输入在字符串中间。

因此,C语言用“转义字符”来代替这一类的控制字符。

%的输出并不是用“\%”表示,而是用“%%”表示,好象就这一个是特殊的。

字符形式

功  能

\0

空字符(NULL)

\n

换行

\t

横向跳格(Tab)

\v

竖向跳格(|)

\b

退格

\r

回车

\f

换页字符

\\

反斜杠"

\"

字符

\'

单引号(撇号)字符

双引号字符

\a

响铃字符

\?

问号字符

%%

百分号字符

\ddd

1~3位8进制数所代表的字符

\xhh

1~2位16进制数所代表的字符

04章附带格式的输入输出

printf()函数和scanf()函数中的f是format的缩写,这里面用到的“格式”,在C语言其它地方也有很广的应用。

一、格式输出『printf()』

前面已经说过,一个字符用%d格式就可以输出其ASCII码即字符的整数值。

用%c格式则输出这个字符。

如果用%f格式,则小数的方式输出。

intdays=360;

//“劝学网”三字的ASCII码是“C8B0”“D1A7”“CDF8”

\xC8\xB0\xD1\xA7\xCD\xF8\t小雅\n"

//显示:

劝学网{TAB}小雅

北京奥运还有:

%d天\n"

days);

\a\a"

//“嘟嘟”

//以下三行写在同一行

%s"

"

这是C语言"

教程\t"

作者:

%s\n"

"

小雅"

//360分别以整数、小数、科学计数法显示

整数:

%d\n小数:

%f\n科学:

%e\n"

days,(float)days,(double)days);

//以下控制字节长度

360用5个字节表示:

[%5d]\n"

days);

//[...]中共5字节

3.6保留2位整数2位小数:

[%5.2f]\n"

(float)days/100);

//[...]中2位整数2位小数,

//外加小数点共5字节

格式符的个数必须和逗号后面的变量或常量相同,类型也必须一致或可以直接转换。

二、常见格式符号

格式字符

类型

输出格式

c

int或

win_t

以字符方式输出。

C

用在printf()函数中时,以双字节字符显示;

用在wprintf()函数中时,以单字节字符显示。

d

以整型输出。

i

o

以八进制无符号整型输出。

u

以无符号整型输出

x

以十六进制小写输出(abcdef)。

X

以十六进制小写输出(ABCDEF)。

e

以科学计数法表示float和double型数据。

(其中e用小写)

E

(其中E用大写)

f

以小数表示float和double型数据。

g

自动地将能显示的很小或很大的数转换成%f,不能直接显示的数则转换成%e。

G

自动地将能显示的很小或很大的数转换成%f,不能直接显示的数则转换成%E。

n

Pointertointeger

Numberofcharacterssuccessfullywrittensofartothestreamorbuffer;

thisvalueisstoredintheintegerwhoseaddressisgivenastheargument.

p

Pointertovoid

内存地址,以十六进制表示。

s

String

以字符串输出。

S

用在printf()函数中时,以双字节字符串显示;

用在wprintf()函数中时,以单字节字符串显示。

三、格式输入『scanf()』

scanf()函数的功能与printf()函数正好相反,是输入数据的功能。

但对于初学者却有一难点,即所输入的数据存放到变量时,用到了地址操作。

地址操作也就是指针,是C语言的难点、重点,许多人不会C语言的根本原因就是没学会指针。

既然指针这么难,为什么C语言要使用指针呢?

C语言产生之前,前辈们都是用机器语言或汇编语言来编程,整天都是与内存地址打交道,C语言使用了指针,使得程序运行速度接近汇编语言,编程效率、实现的功能大大提高。

当今电脑硬件的飞速发展,使速度不成问题,于是Java、C#都基本废除了指针的使用。

intage;

//年龄

charname[20];

//姓名

请输入你的年龄:

"

scanf("

%d"

&

age);

//&

age表示变量age的地址

请输入你的姓名:

name);

//name单独使用就表示变量name的地址

\n姓名=%s\t年龄=%d\n"

name,age);

上例中,2个变量当作参数使用时,一个用了&

符号,一个没用,为什么呢?

原来当一个变量的类型是基本类型、或扩充基本类型时,变量的地址要用&

符号再加变量名。

其它尤其指数组,单独使用变量名,就表示该变量的地址。

关于这一点,以后讲完数组和指针后还要详细讨论。

05章if语句和switch语句

一、if语句

在计算机如此普及的今天,if语句的功能介绍就不说了。

其基本语法如下:

//写法一

if(条件表达式){

语句

//写法二

else{

//写法三

elseif(条件表达式){//elseif(条件表达式){语句}部分可重复n遍

else块只能出现在if语法的最后,且最多只能出现1次。

elseif块能出现若干次,但只能在if块的后面,不能在else块的前面。

当各块里面的语句只有一句时,括号{}可以省略。

不建议省略,因为省略后下面的语句让人容易糊涂。

//易让人看错的写法//表示的是下面的意思

if(x==1)if(x==1){

if(y==1)if(y==1)

x和y都等于1"

elseelse

我其实是y==1的else"

}

二、switch语句

switch语句完全可以用if语句代替,每一个case块的最后一句语句要有break语句,否则将运行到下一个case块中去。

还需要注意的是,switch语句只适用于基本类型的变量作条件(包括扩充基本类型)。

default块可以省略,但小雅建议您不要省略,即使不用也加上。

//基本类型的变量//假定inti;

//假定charstr[];

以下是错误的

switch(变量){switch(i){switch(str){

case表达式1:

case1:

case"

Sunday"

:

语句语句语句

break;

case表达式2:

case2:

Monday"

case表达式n:

case10:

Friday"

default:

}}}

三、(?

)运算符

(表达式?

值1:

值2)这是带运算符的表达式,意思是:

如果“表达式”的值为“真”,则返回“值1”,否则返回“值2”。

if是控制语句而不是运算符,也不是表达式。

y=(x==2?

100:

50);

//写成如下相同功能的if语句

if(x==2){

y=100;

y=50;

四、关于逻辑表达式

逻辑表达式又叫布尔表达式,前面章节已经说过,布尔表达式只有2个值:

TRUE和FALSE

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2