快速学会C语言_第1页
快速学会C语言_第2页
快速学会C语言_第3页
快速学会C语言_第4页
快速学会C语言_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

C语言速成教程

一教你如何10小时学会C语言

令第一章C语言简介与TurboC的使用

令第二章C程序的结构

令第三章常数与变数

令第四章基本输出入函式

令第五章流程图与抉择指令

令第六章循环与自动重复

<第七章数组与指针

令第八章函数与呼叫

令第九章档案存取

■第一章C语言简介与TurboC的使用

◎c语言的优点:

O效率高:C语言的编译器会产生最小的程序代码。

O可移植性/移植性高:经过些许的修改,可以在不同的平台使用。

O功能强而有弹性。

O需要记忆的东西很少,易于写作。

◎TurboC的安装:已安装在学校主机。

TurboC的环境设定:TurboC安装的目录必须设定在PATH的系统变量。

如:PATH=C:\TC;C:\DOS;……如此TC才能正常工作。

◎TurboC的使用

只要设定好PATH变量,在DOS提示号输入TC,就可以执行TurboC的

整合环境了。TC将编辑(Edit)、编译(Compile)、连结(Link)、除错(Debug)、

档案管理(File)、…等等的功能整合在一起,所以我们称之为整合环境。

最好先用CD的指令,变更工作目录到你要写C的目录,再执行TC,这样

所产生的档案,就会里这个目录里面,便于备份与管理。

◎移动光标

方向键一tI-可以用来移动光标。

◎删除文字

将光标移到你要删除的文字上,再按下Del键即可。

将光标移到要删除文字的右边,再按下BS退位键也可以。

◎加载文字文件(C语言原始码文件)

按下功能键F3或按F10选File-Load就会出现一个询问窗口要求输入文件

名:

I------------------LoadFileName------------------1

I*CI

其中的文件名可以使用万用字符*或?,或直接指定你要的槽名。

若是使用万用字符,TC会再秀出一个窗口让你选择所要的档案,

你可以用方向键移动反白光棒,按Enter键则是选择反白的档案。

◎储存编辑的文字文件

按下功能键F2或按F10选File-Save就会储存目前编辑档案。

若你想另外取一个档名,并加以存盘,就必须按F10选File-Writeto

就会出现一个询问窗U要求输入文件名:

NewName

输入新的档名,按下Enter即可。

◎编译并执行目前的所编辑的程序

TurboC是一种编译语言系统,你所写的程序,经过TC的编译(pass1)及

连结(pass2)后,产生可执行档(.exe),才能在PC上执行。

按下Ctrl+F9或按F10选RunfRun,TC会编译目前所编辑的程序,

如果没有错误发生,TC会立即执行所编辑的程序。

TC在执行完程序后,会立刻切换回到TC的整合环境,如果你还想看刚才程序

执行的结果,可以按下Alt+F5或按F10选Run-Userscreen,就会

切换到执行画面,再按下任何一键,就会回到TC的整合环境。

©结束TurboC

按下Alt+X或按F10选File-*Quit便可结束TurboC»

若你还有已编修尚未储存的档案,TC会问你要不要存。

'Verify=n

|NONAME.Cnotsaved.Save?(Y/N)||

要存就按丫,不想存就按N。

■第二章C程序的结构

◎C程序的结构:

hello.c|范例文件名

#include<stdio.h>|----范例原始码

2main()1

3{I

4printfC'Hello!");|

5

Hello!|范例执行结果

第一列:#include<stdio.h>

是用来定义一些函式的原型(prototype)>数据结构(struct)或是常数(constant)。

C在使用变量之前,该变量都要先行宣告(declear)才可使用,而使用函式也是一样,必须先

宣告它的原型才可以。宣告函式的原型是为了让C能在编辑时作数据的型别检查,以减少

错误的发生。内建的函式原型定义都放在INCLUDE\*.H中,用#include<stdio.h>就会

将INCLUDE\stdio.h这个档引含。stdio.h由档名可知道是跟标准输出入(standardI/O)有

关,档内定义了档案输出入、屏幕输出、键盘输入等相关函式的原型、数据结构及常数。本

例中的printf()就属于标准输出的函式。引含.h档并不会让你的执行档变大或是变慢,

而且还能让编辑器作正确的型别检查,所以要养成写include的习惯。☆虽然在某些状

况下,不加includeo所产生的执行档,一样可以正常的执行。

第二列:main()

main()就是主程序。程序在执行时,就是由这个函式开始执行。在C语言中,内定的型

别是int,所以原来的main()相当于是intmain(int)

★在这里正确的写法应该是voidmain(void),因为在这个简单的程序中,没有回传值,

也没有输入参数。

☆回传值,是指一个函式在执行后传回的数值。

☆输入参数,是指一个函式可由参数决定执行的结果,这个部分在第八章中有详细的说明。

第三列:{

第五列:}

在第三列及第五列之间,属于main()函式的程序代码。

{表示程序由此开始,}表示程序到此结束。

第四列:printf("Hello!");

是本程序要求系统做动作的指令,称之为「叙述」。在C语言中,每一叙述都以分号(;)做

为结束。在这个程序中,利用缩排的方式,使程序的层次分明,增加可读性。

在C语言中,调位字符(如:空白(space)、定位(tab)及换列字符)在编译时都会被忽略,

所以可适时加入调位字符,使程序好看一点。要注意的是,别把一个完整的个体拆开,如:

main,printf等,这些字本身是一个完整的个体,不可予以拆开。而在各个个体之间,可以

任意加入调位字符。

☆C语言中的英文字母是有分大小写的,printfO与PrintFO不同,内建的函式大多是小

写的,你自己写的函式,则可以用大写来做区隔。

◎printf的功用

printfO的功用是在屏幕上输出数据。在TC中,在编辑区内输入printf,再将光标移到

printf这个字上,按下Ctrl+Fl就会看到以下Help画面:

I---------------------------------Help--------------------------------------1-这是TC的Help窗

printf:formattedoutputtostdout|-printf是将格式化的

I数据输出到stdout

intprintf(constchar*format,...);|-printf的语法

I

Prototypeinstdio.h|-要用printf应该

I#include的槽

Printformatsavariablenumberofarguments|—使用说明:不同的格式

accordingtotheformat,andsendstheoutput|须要不同的参数,这些

tostdout.Returnsthenumberofbytesoutput.|数据会送到stdout。传

Intheeventoferror,itreturnsEOF.|回值是输出的byte数,

I若发生错误则传回

EOF

Seealsoecvtfprintfputc可参考相关指令:

putsscanfvprintfecvt,fprintf,putc,

puts,scanf,vprintf

在用TC的整合环境中,只要将光标移到想进一步了解的指令或内建的函式上,按下

Ctrl+Fl就可以叫出TC的Help说明窗口,得到该指令或函式的相关说明。

printf的语法:intprintf(constchar*fonnat,…);

其中constchar*format指的是一个格式化的字符串。const是常数的意思,在此表示

format这个字符串指针传入printf函式后,它的值不会被改变。

...指的是不定参数,参数的数目取决于format字符串的内容,这些参数,通常是一些你

要秀出来的变量。简单来说:printf("输出格式(含控制字符串)",要印出的数据);

在C语言中是用双引号(")来引含字符串,也就是在双引号内的数据,是一个字符串。

本章只介绍%d这个控制字符串,其它的控制字符串在第四章会讲到。%d表示以整数10

进位的方式秀出数据。在输出格式(含控制字符串)内有几个%d,在要印出的数据内就要有

几个整数来对应。

arith.c

1

1|#include<stdio.h>

2|voidmain(void)

31{

4Iprintf("%d+%d=%d\n';8,2,8+2);

5|printf(u%d-%d=%d\nu,8,2,8-2);

6Iprintf(M%d*%d=%d\n”,8,2,8*2);

7Iprintf("%d/%d=%d\nn,8,2,8/2);

81)

8+2=10

8-2=6

8*2=16

8/2=4

我们以第四列的叙述作说明:

printf("%d+%d=%d\n",8,2,8+2);

在输出格式(含控制字符串)内有3个%d,所以在要印出的数据的部分有

8,2,及8+2三个整数对应,所以输出来的结果就是

8+2=10

在输出格式(含控制字符串)的最后有\n符号,这是一个控制字符,表示要

更换到下一列,其它的控制字符在第四章会提到。

若将本例中的\n都删除,那秀出的结果会像这样子:

8+2=108-2=68*2=168/2=4

◎C的四则运算

计算机语言用的四则运算符号儿乎都是相同的:

四则运算符号意义范例结果

------------------..—

+加法4+26

-减法(或代表负号)4-22

*乘法4*28

/除法4/22

=====

相关运算符号意义范例结果

===========

++变数值加1i++或++ii值加1

—变数值减1i-或--ii值减1

%整数除法的余数4%20

____________________________—________________

在书中提到C语言没有提供次方的功能,指的是在某些计算机语言可以用**表示

次方,如:2**3,表示2的3次方;有的用A表示,如:2A8,表示

2的8次方。在C语言,没有运算符号可以表示次方,但是C语言有提供次方

的函式:pow(),pow(2,3)表示2的3次方。

•个式子如果有多个运算的话,C是以先乘除后加减的方法来运算,当然我们也

可以用括号()来改变这个法则,只要有括号,就优先运算。另外,在C语言内

中括号【|及大括号{}是有其它的用途,所以在作数学运算时,只要用括号

,就只能用小括号(),小括号可以多层,C在运算时,是由最内层开始运算。

范例:(1+2*(3+4))*5-6*7/2+8

=(1+2*(7))*5-6*7/2+8

=(15)*5-6*7/2+8

=75-42/2+8

=7521+8

=62

◎批注(Comments)

通常老师会要求初学者在程序的每一列加上批注,这是为了让初学者知道自己在写些什么程

序代码,了解为什么要这样写,而不只是照著书Keyin程序。写批注有助于自己了解程序

的内容,便于日后的修改。但写批注对于某些程序设计师而言可说是一种噩梦,因为写批注

所花的时间可能会与写程序的时间相去不远,认为写批注只是在浪费时间。对一个相当好

的程序设计师而言,也许写批注真的是浪费时间,因为好的程序代码本身就已经隐含了批注,

这也是写程序相当高的境界。对一般的程序设计师而言,写一些批注还是比较好的作法,

特别是某些程序代码是你花了一段时间才想到的「特殊」方法,加上一些批注,说明一下这

个「特殊」的方法,以后要修改才能快速进入状况,否则,你可能会佩服自己当时是如何想

到的这个方法,又再花一段时间才知道自己在写些什么程序代码。讲了这么多批注的

正反面(正面居多)论调,在C语言中要如何写批注呢?只要用/*和*/将你要的批注内

容包起来就可以了。C在编译时,会将/**/内的数据略去,就如同调位字符一样。唯一的

例外是:当/**/在一组双引号”内时,它们就属于这组双引号所包含的字符串。在C++

语言中则可用〃当批注.

Icomments.corcomments.cpp

1|#include<stdio.h>/*prototype:printf()*/

2|voidmain(void)//mainprogram

3I(

4|/*所有的程序代码都变成批注,所以这个程序目前是空的*/

5|/*printf("%d+%d=%d\n",8,2,8+2);*/

6|/*printf("%d-%d=%d\n",8,2,8-2);

7|printf("%d*%d=%d\n",8,2,8*2);

8|printf("%d/%d=%d\n",8,2,8/2);//division

9|*/

10|}//endofprogram

◎巢状注(NestedComments)

InestcomO.c

1|#include<stdio.h>/*prototype:printf()*/

2|voidmain(void)

3I(

4|/*这个程序必须把巢状批注的设定打开,才不会有错误*/

5|/*

6|printf("%d+%d=%d\n",8,2,8+2);

7|/*printf("%d-%d=%d\n",8,2,8-2);*/

8|printf("%d*%d=%d\n",8,2,8*2);

9|printf("%d/%d=%d\n",8,2,8/2);

10|*/

HI}

上面的例子,有四组批注/**/,其中第三组及第四组的批注之间有部分重迭。

想要Compile没有错误,必须第5列的/*与第10列的*/配,也就是

第5列到第10列都是批注;另外第7列的/*与第7列的*/配,也就是

第7列是批注。这种批注方式,我们称之为巢状批注。

TurboC内定是不可使用巢状批注的,上面的例子会是第5列的/*与第7列

的*/配,结果在第10列的*/会变成是多余的,造成Compile错误。

打开巢状批注的方法:

按下F10fOptionsfCompilerfSource—NestedcommentsOff

将Off设为On就可以了。

◎巢状批注的使用时机

在前面的例子只是为了说明巢状批注,也许你会觉得这样的用法是自找麻烦,

但是以下的例子,你就会认为有巢状批注的功能还是比较好的。

在nestcoml.c中,每一列的printf();后面都加上了批注。

若要把这几列程序变成批注,不使用巢状批注,就会像nestcom2.c一样,

必须在每一列的printf();前后再加上/**/,若是使用巢状批注,

就像nestcom3.c一样,只要在这几列的前后加/**/就可以了。

11

Inestcoml.c

i

|#include<stdio.h>/*prototype:printf()*/1

2|voidmain(void)1

1

3ii1

41/*这个程序在每一个叙述后都加上了批注*/1

51

6|printf(M%d+%d=%d\nH,8,2,8+2);*8+2=10*/I

7|printf(n%d-%d=%d\n”,8,2,8-2);/*8-2=6*/1

8|printf(n%d*%d=%d\n”,8,2,8*2);/*8*2=16*/|

9Iprintf(H%d/%d=%d\nn,8,2,8/2);/*8/2=4*/|

101

111)1

ii

ii

nestcom2.c

1#include<stdio.h>/*prototype:printf()*/

2voidmain(void)

3(

4/*这个程序不用把巢状批注的设定打开,也不会有错误刃

5

6/*printf(n%d+%d=%d\n';8,2,8+2);*//*8+2=10*/

7/*printf(u%d-%d=%d\n",8,2,8-2);*//*8-2=6*/

8/*printf(u%d*%d=%d\n'\8,2,8*2);*//*8*2=16*/

9/*printf("%d/%d=%d\nn,8,2,8/2);*//*8/2=4*/

10

11

nestcom3.c

1#include<stdio.h>/*prototype:printf()*/

2voidmain(void)

3(

4/*这个程序也必须把巢状批注的设定打开,才不会有错误*/

5/*

6printf("%d+%d=%d\n",8,2,8+2);/*8+2=10*/|

7printf("%d-%d=%d\n",8,2,8-2);/*8-2=6*/|

8printf("%d*%d=%d\n",8,2,8*2);/*8*2=16*/|

9printf("%d/%d=%d\n",8,2,8/2);/*8/2=4*/|

10*/

11

■第三章常数与变数

C语言的数据可分为常数(constant)及变量(variable),常数指的是固定不变的数,

例如:0,1,2等数值,或是用双引号定义的字符串,我们也称之为字符串常数。

变量指的是数值可以改变的数,例如:-个整数变量,我们可以把它设成1,然后再

改为10,或是其它的整数数值。

一个程序若没有变量,那纯粹只是将常数秀出来而已,好比是用文字编辑器编辑一个

档案,再用type把它秀出来一样。有了变量,就可以做不同的变化。

◎变量的型态---Char,int,long,float,doubleetc.o

◎变数的命名

如同档案的命名,变量的名字要取得有意义,在C中,名字可以取得很长,但是

要用英文的,所以你可以把变量用中翻英来命名。

◎变量的命名规则

O变量名称的第一个字符必须是英文字母(A到Z或a到z)或是底线(_)。

O第二个字符以后可以使用前述字符,再加上数字0到9。

O变量名称的大小写是不同的。

O变量名称的最前面32个字符有效。

O不可以使用「保留字」当变量的名称,保留字是给编译器使用,不可以当成

变量名称。TC有以下的保留字:

流程:ifelsefordowhile

switchdefaultcasebreakcontinue

gotoreturn

型别:charintlongfloatdouble

voidregistersignedunsigned

shortnearfarhuge

typedefstructunionenum

autoconststaticvolatileextern

interruptcdeclpascalasm

运算:sizeof

缓存器:_AX_AH_AL__cs_CS

_BX_BL_ds_DS

_CX_CH_CL_es_ES

_DX_DH_DL_ss_SS

_SI_DI_BP_SP

变量的设定

使用变量时,应该先考虑这个数可能的数值范围,用以选定变量的型别,例如:

用一个数来存班上的人数,一个合班的大班级可能超过百人,但最大不太可能

超过千人,所以选一种变量型别可存1000以下的数值,在此可选整数。

若是要用一个数来存你的存款,则整数的上限32767可能某些同学一个月的薪资

就是它的数倍,所以要选长整数,它的上限是2147483647。在数学运算时,

想要有小数的就要用浮点数(float)。

在C语言中,变量宣告的语法如下:

I型别变量名称1[,变量名称2|

例如:intNumberOfStudent;/*学生人数*/

longMoneylnBank,interest;/*银行存款*/

floatRateOflnterest;/*利息利率*/

charEndOfString;/*字符串结束*/

charOneStudentName[9];/*学生姓名*/

在宣告变量时,我们可以设定变量的初始值(initialvalue),语法如下:

I型别变量名称1=初始值1[,变量名称2=初始值2|

例如:intNumberOfStudent=60;/*学生人数*/

longMoneyInBank=1000000L;/*银行存款*/

floatRateOfInterest=5.0;/*利息利率in%*/

charEndOfString=V)';/*字符串结束*/

charOneStudentName[9]="王大明";/*学生姓名*/

注意:在银行存款的设定数值1000000后加上一个L,表示这个常数数值

1000000是一个长整数。因为C语言内定的型别是整数,为了防止

不可预期的状况发生,最好是自己把它设定成你想要的型别,不要

假设TC会帮你做好好的,要假设TC很笨不会帮你做,这样在发展

大程序要除错时,就可以把问题简化,不必再考虑是不是数据型别错误,

只要把程序流程或算法搞定就可以了。

在TC中,不加L,结果还是正确的,但是在其它的环境下可能会不同。

多加一个L并不会使程序变大或变慢,又能保障正确使用,何乐不为。

O复习一下字符与字符串:

char字符只占一个byte,以一组单引号’引含字符数据,其表示法如下:

O单一字符:'A'、岂>'0'«

O八进制数值:M01','\141\'60'、'\0'

0十六进制数值:\x41'、"61'、\x30\'\xO'

字符串则是由一个以上的字符所组成的,而且以W这个字符做为结尾。

表示法:"123"、"ABC"、"abc"。以上的三个例子都是占4bytes。

用strlen()可以取得字符串的长度(不含W字符)。

如:intStringLen=strlen("123");

这样,StringLen就等于3。

☆在使用strlen()时,必须加入#include<string.h>

◎设定叙述

前面已经说明了变量在宣告时给定初值的方法,接下来是在程序执行的过程中设定变量数值

的方法.即然是变量,表示它的数值可能在程序执行的过程中会改变多次,如果一个变量

在整个程序执行中都不会改变,或许你该把它设成常数。

在设定变量时,可以用等号=来设定变量新值,语法如下:

I变量名称=表达式(表达式、函式传回数值或两者混合);

这个意思是等号左边「变量名称」的数值会等于等号右边「表达式」的运算结果。

在C中,等号=是用来设定变量数值的,所以在等号的左边必须是变量,不可以

是常数。在逻辑上的相等,在C中是用两个等号==来表示,有关逻辑的表示,

在第五章中会作介绍。以下我们来看一些设定的例子,计算圆的面积:

PI=3.1415926;

r=4;

area=PI*r*r;

以下是用变量的方式表示的范例:

var.c

#include<stdio.h>

voidmain(void)

(

inti,j;

i=10;

j=2;

printf("%d+%d=%d\n",i,j,i+j);

printf(H%d-%d=%d\n",i,j,i-j);

printf(H%d*%d=%d\nH,i,j,i*j);

printf(n%d/%d=%d\n",iJ,i/j);

i=20;

j=2;

printf(u%d+%d

M

printf(%d-%d:

printf("%d*%d%d\n”,i,j,i*j);

printf(M%d/%d:%d\n\i,j,i/j);

10+2=12

10-2=8

10*2=20

10/2=5

20+2=22

20-2=18

20*2=40

20/2=10

变量使用的有效范围:

整体变量(GlobalVariable):整体程序内

区域变量(LocalVariable):函式内

静态变量(StaticVariable):单一程序内

■第四章基本输出入函式

这一章将介绍一些基本输出入的函式,使用者经由这些函式可以与计算机沟通,让程序

读取使用者的输入部分。程序依使用者不同的要求,做不同的事,再将结果输出给使用者。

◎输出指令:printf()

在第二章中,曾经谈过printf指令,现在来详细的探讨它。

printf是一种格式化的输出指令,换句话说,你可以用它来编排你所要的输出格式。printf的

一般型式如下:

Iprintf("控制字符串“,表达式1,表达式2,...);

控制字符串是你打算要秀出的讯息,其中利用%与\这两个字符,来控制数值的

输出格式。

控制字符串中每一个%符号,表示在后面有一个表达式与它对应,表达式的值会代

入这个%的位置。在%后的字符表示代入数的型别,常用的句柄如下表:

ii

1printf的句柄代表代入的数值型别I

1I

11

|%c1字符

I%d1十进制之整数

I%ld1十进制之长整数

|%f1浮点数

I%lf1倍精浮点数1

|%Lf1长倍精浮点数

I%s1字符串

11

表达式的型别必须跟句柄所代表的型别相符,否则会秀出不可预期的资料。

另一个控制符号\,其实只是定义字符而已。在上一章已经介绍了字符的各种表

示法,如:表示A字符。

在C语言中,将一些特殊的控制字符另外定义,这些控制字符大部份跟光标的

控制有关,如下表:

I控制字符IDec|Hex|功能

\n|10|OxOA1换列,也就是将光标移到下一列

\t|9|0x09|将光标移到下一个定位(l+8n)

\b18|0x08|退一格,类似按下左键

\aI7|0x07|喇叭叫一声

\rI13|OxOD|回到列首

\f|12|0x0C|跳页,在列表时控制列表机跳页

\\|92|0x5C|印出\字符

\r|39|0x27|印出,字符

\"|34|0x22|印出"字符

\xHHI|OxHH|卬出OxHH所表示的字符

%%|37|0x25|印出%字符

其中,%字符的定义与在控制字符串中的表示法不同,其余的字符在定义上与在控

字符串中的表示法都相同。

printf在做输出时•,你也可以指定保留多少位置给对应的表达式放结果。指定的

方式是在%之后加一个数值,如%5d:表示保留5个字符空间给一个十进制整数;

%121d:表示保留12个字符空间给-•个十进制长整数。

如果要输出数据的长度比你指定的保留空间还要大时,printf就不理会你的设定,

把要输出的数据完整的输出,所以,你在设定保留空间时,应该注意输出数据的范围

及长度,保留够大的空间,确保输出格式的整齐。

在浮点数方面,你除了可以指定保留的空间外,还可以指定小数点后要取几位。

如%8.3f:表示保留8个字符空间给一个浮点数,小数部分则是占3个字符空间

,由于小数点本身占一个字符,所以整数部分占8-(3+1)=4个字符空间。

printf在输出数据时,如果你指定保留的空间比要秀的数据长度还要大时,那

printf先秀一些空白,再秀出数据,使总长度等于你所指定的宽度,这样等于是

让输出的数据向右对齐。如果你想要让数据是向左对齐的话,可以在指定宽度时

使用负数,如%-5d:表示保留5个字符空间给一个十进制整数,若数据长度不足

5,则在秀出资料后补空白。

O整数(int)及长整数(long)

%-+wd-int|

|%-+wIdflongI

1tft1

III1———若有指定,则保留w个字符

111若无指定,秀出长度将由数据决定1

111----------—若有指定,则一定会秀出正负号1

11若无指定,则只有负数会秀出负号I

11___________—若有指定,则向左对齐I

若无指定,则向右对齐1

11

O浮点数(float)、倍精浮点数(double)及长倍精浮点数(longdouble)

%-+w.pfffloat

%-+w.pIffdouble

%-+w.pLfflongdouble

tttf

1111—若有指定,则保留p个字符给小数1

111若无指定,内定是保留6个字符给小数|

111____若有指定,则保留w个字符含小数及小数点

11若无指定,秀出长度将由数据决定1

11__—若有指定,则一定会秀出正负号1

1若无指定,则只有负数会秀出负号I

1—若有指定,则向左对齐|

若无指定,则向右对齐I

说了这么多,只有自己试试看才知道!以下是个简单的例子:

Iprint.c1

11

11

1|#include<stdio.h>1

2|voidmain(void)1

31{1

4Iprintf(nl%ldl\n';123456);1

5Iprintf(nl%51dKnn,123456);1

6Iprintf("l%dl\n",123);1

7|printf(Ml%5dl\nH,123);1

8|printf(Ml%-5dl\n",123);1

9Iprintf(',l%fl\nH,12.345);1

10Iprintf("l%9fl\nn,12.345);1

11IprintfCI%9.2fl\nn12.345);1

12|printf(nl%-9.2fl\nn,12.345);1

131)1

1

11

I11234561-123456大于32767要长整数才能表示,所以用%ld|

I11234561一所保留的5个字符不够使用,所以TC视同你没设|

I112311

I11231一保留5个字符,只使用3个字,向右靠齐|

I11231一保留5个字符,只使用3个字,向左靠齐|

I112.3450001<-小数没有指定,所以TC使用内定的6个小数。|

|112.3450001-一保留9个字符,小数部分仍使用内定值I

1112.351-保留9个字符,小数2个字符,向右靠齐|

|112.351-保留9个字符,小数2个字符,向左靠齐|

◎输入指令:scanf()

C语言使用scanf指令来读取keyboard输入的数据。scanf的一般型式如下:

Iscanf("控制字符串",&变量1,&变量2,);

scanfprintf可以说是相对的,一个用来做输入,一个用来做输出。

scanf的控制字符串与printf几乎是一样。

111

1scanf的句柄1代表输入的数值型别1

111

111

I%c1字符

I%d1十进制之整数

I%ld1十进制之长整数1

I%D1十进制之长整数

I%f1浮点数1

I%lf1倍精浮点数1

I%Lf1长倍精浮点数

I%s1字符串

111

★注意:没有%F这种句柄,课本有误!

%D的句柄只能用在scanf(),在printf()中无法使用。

在用scanf时还有一点要注意,在控制字符串后的变量,使用的是指针(pointer)。

什么是指标?指针就是指向内存的一个地址,在那个地址存放着数据。

例如:一个整数变量i,它是存在内存的某一个地址,那个地址在C语言中,

是以&i来表示,我们通常称&i是i的地址,也称为i的指标。

以下是常用的变量及其指针(因为它的地址固定不会改变,也称为指标常数):

Icharc;/*字符*//*C的指针是&C*/

1inti;/*整数*//*i的指标是&i*/

1long1;/*长整数*//*1的指标是&1*/

|floatf;/*浮点数*//*f的指标是&f*/

Idoubled;/*倍精浮点数*//*d的指标是&d*/

|longdoubleId;/*长倍精浮点数*//*Id的指标是&ld*/

1I

|charstr[8O];/*字符数组(字符串)*//*str[8O]的指标是str*/|

|inta[100];/*整数数组*//*a[100]的指标是a*/

|longb[100];/*长整数数组*//*b[100]的指标是b*/

|floatc[100];/*浮点数数组*//*c[1001的指标是c*/

以下的范例,将第三章的范例var.c变量改由scanf输入:

11

Iio.c|

।1।1

1|#include<stdio.h>1

2|voidmain(void)1

31{1

4Iinti,j;

温馨提示

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

评论

0/150

提交评论