第3章C程序的基本结构精Word下载.docx

上传人:b****3 文档编号:17824383 上传时间:2022-12-11 格式:DOCX 页数:20 大小:28.78KB
下载 相关 举报
第3章C程序的基本结构精Word下载.docx_第1页
第1页 / 共20页
第3章C程序的基本结构精Word下载.docx_第2页
第2页 / 共20页
第3章C程序的基本结构精Word下载.docx_第3页
第3页 / 共20页
第3章C程序的基本结构精Word下载.docx_第4页
第4页 / 共20页
第3章C程序的基本结构精Word下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

第3章C程序的基本结构精Word下载.docx

《第3章C程序的基本结构精Word下载.docx》由会员分享,可在线阅读,更多相关《第3章C程序的基本结构精Word下载.docx(20页珍藏版)》请在冰豆网上搜索。

第3章C程序的基本结构精Word下载.docx

length=9.42,area=7.07

printf()函数的一般格式如下:

printf("

格式字符串"

[,输出项表]);

1.格式字符串。

“格式字符串”也称“转换控制字符串”,可以包含三种字符:

(1)格式指示符。

格式指示符的一般形式如下:

%[标志][输出最小宽度][.精度][长度]类型

详细内容见教材

(2)转义字符

例如,[案例3.1]中printf()函数中的'

\n'

就是转义字符,输出时产生一个“换行”操作。

(3)普通字符──除格式指示符和转义字符之外的其它字符。

格式字符串中的普通字符,原样输出。

2.输出项表

输出项表是可选的。

如果要输出的数据不止1个,相邻2个之间用逗号分开。

下面的printf()函数都是合法的:

(1)printf("

Iamastudent.\n"

);

(2)printf("

%d"

3+2);

(3)printf("

a=%fb=%5d\n"

a,a+3);

3.1.2格式指示符

输出不同类型的数据,要使用不同的类型转换字符。

1.类型转换字符d──以带符号的十进制整数形式输出。

[案例3.2]类型转换字符d的使用。

{intnum1=123;

longnum2=123456;

/*用3种不同格式,输出int型数据num1的值*/

num1=%d,num1=%5d,num1=%-5d,num1=%2d\n"

num1,num1,num1,num1);

/*用3种不同格式,输出long型数据num2的值*/

num2=%ld,num2=%8ld,num2=%5ld\n"

num2,num2,num2);

num1=%ld\n"

num1);

 

num1=123,num1=123,num1=123,num1=123

num2=123456,num2=123456,num2=123456

num1=16908411

对于整数,还可用八进制、无符号形式(%o(小写字母o))和十六进制、无符号形式(%x)输出。

对于unsigned型数据,也可用%u格式符,以十进制、无符号形式输出。

所谓无符号形式是指,不论正数还是负数,系统一律当作无符号整数来输出。

例如,printf("

%d,%o,%x\n"

-1,-1,-1);

2.类型转换字符f──以小数形式、按系统默认的宽度,输出单精度和双精度实数。

[案例3.3]类型转换字符f的使用。

main()

{floatf=123.456;

doubled1,d2;

d1=1111111111111.111111111;

d2=2222222222222.222222222;

%f,%12f,%12.2f,%-12.2f,%.2f\n"

f,f,f,f,f);

d1+d2=%f\n"

d1+d2);

123.456001,123.456001,123.46,123.46,123.46

d1+d2=3333333333333.333010

对于实数,也可使用格式符%e,以标准指数形式输出:

尾数中的整数部分大于等于1、小于10,小数点占一位,尾数中的小数部分占5位;

指数部分占4位(如e-03),其中e占一位,指数符号占一位,指数占2位,共计11位。

也可使用格式符%g,让系统根据数值的大小,自动选%f或%e格式、且不输出无意义的零。

3.类型转换字符c──输出一个字符(只占一列宽度)。

[案例3.4]类型转换字符c的使用。

{charc='

A'

;

inti=65;

c=%c,%5c,%d\n"

c,c,c);

i=%d,%c"

i,i);

c=A,A,65

i=65,A

需要强调的是:

在C语言中,整数可以用字符形式输出,字符数据也可以用整数形式输出。

将整数用字符形式输出时,系统首先求该数与256的余数,然后将余数作为ASCII码,转换成相应的字符输出。

4.类型转换字符s──输出一个字符串。

[案例3.5]类型转换字符s的使用。

{printf("

%s,%5s,%-10s"

"

Internet"

%10.5s,%-10.5s,%4.5s\n"

Internet,Internet,Internet,Inter,Inter,Inter

3.2格式化输入--scanf()函数

scanf()函数是用来从外部输入设备向计算机主机输入数据的。

3.2.1scanf()函数的一般格式

[案例3.6]已知圆柱体的底半径radius=1.5,高high=2.0,求其体积。

{floatradius=1.5,high=2.0,pi=3.14159,vol;

vol=pi*radius*radius*high;

/*求体积*/

printf(“vol=%7.2f\n”,vol);

/*输出求出的体积*/

[案例3.7]已知圆柱体的底半径为radius,高为high,求其体积。

/*功能:

说明函数scanf()的格式及作用。

*/

{floatradius,high,vol,pi=3.1415926;

Pleaseinputradius&

high:

"

scanf("

%f%f"

&

radius,&

high);

/*从键盘输入两个实数赋给变量r,h*/

radius=%7.2f,high=%7.2f,vol=%7.2f\n"

radius,high,vol);

1.52.0↙

radius=1.50,high=2.00,vol=14.14

在程序中给计算机提供数据,可以用赋值语句,也可以用输入函数。

在C语言中,可使用scanf()函数,通过键盘输入,给计算机同时提供多个、任意的数据。

1.scanf()函数的一般格式

格式字符串"

输入项首地址表);

(1)格式字符串。

格式字符串可以包含3种类型的字符:

格式指示符、空白字符(空格、Tab键和回车键)和非空白字符(又称普通字符)。

格式指示符与printf()函数的相似,空白字符作为相邻2个输入数据的缺省分隔符,非空白字符在输入有效数据时,必须原样一起输入。

(2)输入项首地址表──由若干个输入项首地址组成,相邻2个输入项首地址之间,用逗号分开。

输入项首地址表中的地址,可以是变量的首地址,也可以是字符数组名或指针变量。

变量首地址的表示方法:

&

变量名

其中“&

”是地址运算符。

例如[案例3.7]中的“&

radius”是指变量radius在内存中的首地址。

2.scanf()函数的功能:

从键盘上接收格式化输入。

运行[案例3.7]的程序时,从键盘上输入2个实数,分别存入&

radius、&

high起始的存储单元中,即输入两个实数分别赋给radius和high。

3.2.2格式指示符

格式指示符的一般形式为:

%[*][宽度][F|N][h|l]类型字符

1.类型字符

类型字符如表3-6所示。

例如,在[案例3.7]的scanf()函数语句中,格式字符串“%f%f”。

2.宽度n

指定该项输入数据所占列数为n。

换句话说,读取输入数据中相应的n位,但按需要的位数赋给相应的变量,多余部分被舍弃。

例如,scanf("

%3c%3c"

ch1,&

ch2);

ch1=%c,ch2=%c\n"

ch1,ch2);

假设输入“abcdefg”,则系统将读取的“abc”中的“a”赋给变量ch1;

将读取的“def”中的“d”赋给变量ch2,所以printf()函数的输出结果为:

ch1=a,ch2=d。

3.赋值抑制字符*

表示本输入项对应的数据读入后,不赋给相应的变量(该变量由下一个格式指示符输入)。

例如,scanf("

%2d%*2d%3d"

num1,&

num2);

num1=%d,num2=%d\n"

num1,num2);

假设输入“123456789”,则系统将读取“12”并赋值给num1;

读取“34”、但舍弃掉(“*”的作用);

读取“567”并赋值给num2。

所以,printf()函数的输出结果为:

num1=12,num2=567。

4.类型修饰符──F、N、h、l。

其含义与printf()中的一样,分别为远指针、近指针、短整型和长整型。

3.2.3数据输入操作

1.如果相邻2个格式指示符之间,不指定数据分隔符(如逗号、冒号等),则相应的2个输入数据之间,至少用一个空格分开,或者用Tab键分开,或者输入1个数据后,按回车,然后再输入下1个数据。

2.“格式字符串”中出现的普通字符(包括转义字符形式的字符),务必原样输入。

%d,%d"

假设给num1输入12,给num2输入36,正确的输入操作为:

12,36↙

另外,scanf()函数中、格式字符串内的转义字符(如\n),系统并不把它当转义字符来解释,从而产生一个控制操作,而是将其视为普通字符,所以也要原样输入。

例如:

假设给num1输入2,给num2输入36,正确的输入操作为:

num1=12,num2=36\n↙

提高人机交互性建议:

为改善人机交互性,同时简化输入操作,在设计输入操作时,一般先用printf()函数输出一个提示信息,再用scanf()函数进行数据输入。

例如,将scanf("

改为:

num1="

scanf("

num1);

num2="

3.输入数据时,遇到以下情况,系统认为该数据结束:

(1)遇到空格,或者回车键,或者Tab键。

(2)遇到输入域宽度结束。

例如“%3d”,只取3列。

(3)遇到非法输入。

例如,在输入数值数据时,遇到字母等非数值符号(数值符号仅由数字字符0-9、小数点和正负号构成)。

4.使用格式说明符“%c”输入单个字符时,空格和转义字符均作为有效字符被输入。

3.3单个字符输入输出--getchar()和putchar()函数

3.3.1单个字符的输出──putchar()函数

[案例3.8]putchar()函数的格式和使用方法。

说明putchar()函数的格式和使用方法。

#include"

stdio.h"

/*编译预处理命令:

文件包含*/

{charch1='

N'

ch2='

E'

ch3='

W'

putchar(ch1);

putchar(ch2);

putchar(ch3);

/*输出*/

putchar('

putchar('

/*输出ch1的值,并换行*/

/*输出字符'

,并换行*/

putchar(ch3);

NEW

N

E

W

3.3.2单个字符的输入──getchar()函数

[案例3.9]说明getchar()函数的格式和作用。

说明getchar()函数的格式和作用。

/*文件包含*/

{charch;

Pleaseinputtwocharacter:

ch=getchar();

/*输入1个字符并赋给ch*/

putchar(ch);

putchar(getchar());

/*输入一个字符并输出*/

程序运行情况如下:

Pleaseinputtwocharacters:

ab↙

a

b

3.4顺序结构程序设计

在顺序结构程序中,各语句(或命令)是按照位置的先后次序,顺序执行的,且每个语句都会被执行到。

[案例3.10]输入任意三个整数,求它们的和及平均值。

设计一个顺序结构程序,求三个整数的和及平均值。

{intnum1,num2,num3,sum;

floataver;

Pleaseinputthreenumbers:

"

%d,%d,%d"

num2,&

num3);

/*输入三个整数*/

sum=num1+num2+num3;

/*求累计和*/

aver=sum/3.0;

/*求平均值*/

num1=%d,num2=%d,num3=%d\n"

num1,num2,num3);

sum=%d,aver=%7.2f\n"

sum,aver);

}

在顺序结构程序中,一般包括以下几个部分:

1.程序开头的编译预处理命令。

在程序中要使用标准函数(又称库函数),除printf()和scanf()外,其它的都必须使用编译预处理命令,将相应的头文件包含进来。

2.顺序结构程序的函数体中,是完成具体功能的各个语句和运算,主要包括:

(1)变量类型的说明。

(2)提供数据语句。

(3)运算部分。

(4)输出部分。

3.5关系运算及其表达式

所谓“关系运算”实际上就是“比较运算”,即将两个数据进行比较,判定两个数据是否符合给定的关系。

例如,“a>

b”中的“>

”表示一个大于关系运算。

如果a的值是5,b的值是3,则大于关系运算“>

”的结果为“真”,即条件成立;

如果a值是2,b的值是,则大于关系运算“>

”的结果为“假”,即条件不成立。

3.5.1关系运算符及其优先次序

1.关系运算符

C语言提供6关系运算符:

<

(小于),<

=(小于或等于),>

(大于),

>

=(大于或等于),==(等于),!

=(不等于)

2.优先级

(1)在关系运算符中,前4个优先级相同,后2个也相同,且前4个高于后2个。

(2)与其它种类运算符的优先级关系

关系运算符的优先级,低于算术运算符,但高于赋值运算符。

3.5.2关系表达式

1.系表达式的概念

所谓关系表达式是指,用关系运算符将两个表达式连接起来,进行关系运算的式子。

2.系表达式的值--逻辑值(非“真”即“假”)。

由于C语言没有逻辑型数据,所以用整数“1”表示“逻辑真”,用整数“0”表示“逻辑假”。

例如,假设num1=3,num2=4,num3=5,则:

(1)num1>

num2的值=0。

(2)(num1>

num2)!

=num3的值=1。

(3)num1<

num2<

num3的值=1。

(4)(num1<

num2)+num3的值=6,因为num1<

num2的值=1,1+5=6。

再次强调:

C语言用整数“1”表示“逻辑真”,用整数“0”表示“逻辑假”。

所以,关系表达式的值,还可以参与其它种类的运算,例如算术运算、逻辑运算等。

3.6逻辑运算及其表达式

关系表达式只能描述单一条件,例如“x>

=0”。

如果需要描述“x>

=0”、同时“x<

10,就要借助于逻辑表达式了。

3.6.1逻辑运算及其优先次序

1.逻辑运算符及其运算规则

(1)C语言提供三种逻辑运算符:

逻辑与(相当于“同时”)

||逻辑或(相当于“或者”)

!

逻辑非(相当于“否定”)

例如,下面的表达式都是逻辑表达式:

(x>

=0)&

(x<

10),x<

1)||(x>

5),(x==0),

(year%4==0)&

(year%100!

=0)||(year%400==0)

(2)运算规则

1)&

当且仅当两个运算量的值都为“真”时,运算结果为“真”,否则为“假”。

2)||:

当且仅当两个运算量的值都为“假”时,运算结果为“假”,否则为“真”。

3)!

当运算量的值为“真”时,运算结果为“假;

当运算量的值为“假时,运算结果为“真”。

例如,假定x=5,则(x>

=0)&

(x<

10)的值为“真”,(x<

-1)||(x>

5)的值为“假”。

2.运算符的运算优先级

(1)逻辑非的优先级最高,逻辑与次之,逻辑或最低,即:

(非)→&

(与)→||(或)

(2)与其它种类运算符的优先关系

→算术运算→关系运算→&

→||→赋值运算

3.6.2逻辑表达式

1.逻辑表达式的概念

所谓逻辑表达式是指,用逻辑运算符将1个或多个表达式连接起来,进行逻辑运算的式子。

在C语言中,用逻辑表达式表示多个条件的组合。

例如,(year%4==0)&

=0)||(year%400==0)就是一个判断一个年份是否是闰年的逻辑表达式。

2.逻辑量的真假判定──0和非0

C语言用整数“1”表示“逻辑真”、用“0”表示“逻辑假”。

但在判断一个数据的“真”或“假”时,却以0和非0为根据:

如果为0,则判定为“逻辑假”;

如果为非0,则判定为“逻辑真”。

例如,假设num=12,则:

num的值=0,num>

=1&&num<

=31的值=1,num||num>

31的值=1。

3.7if语句和条件运算符

3.7.1if语句

[案例3.11]输入任意三个整数num1、num2、num3,求三个数中的最大值。

说明if语句的格式。

{intnum1,num2,num3,max;

if(num1>

num2)

max=num1;

else

max=num2;

if(num3>

max)

max=num3;

Thethreenumbersare:

%d,%d,%d\n"

max=%d\n"

max);

11,22,18↙

11,22,18

max=22

本案例中的第1个if语句,可优化为如下不带else子句的形式:

if(num2>

max)max=num2;

这种优化形式的基本思想是:

首先取一个数预置为max(最大值),然后再用max依次与其余的数逐个比较,如果发现有比max大的,就用它给max重新赋值,比较完所有的数后,max中的数就是最大值。

这种方法,对从3个或3个以上的数中找最大值的处理,非常有效。

1.if语句的一般格式

if(表达式)

{语句组1;

{语句组2;

}]

(1)if语句中的“表达式”必须用“(”和“)”括起来。

(2)else子句(可选)是if语句的一部分,必须与if配对使用,不能单独使用。

(3)当if和else下面的语句组,仅由一条语句构成时,也可不使用复合语句形式(即去掉花括号)。

2.if语句的执行过程

(1)缺省else子句时

当“表达式”的值不等于0(即判定为“逻辑真”)时,则执行语句组1,否则直接转向执行下一条。

(2)指定else子句时

当“表达式”的值不等于0(即判定为“逻辑真”)时,则执行语句组1,然后转向下一条语句;

否则,执行语句组2。

3.if语句的嵌套与嵌套匹配原则

if语句允许嵌套。

所谓if语句的嵌套是指,在“语句组1”或(和)“语句组2”中,又包含有if语句的情况。

if语句嵌套时,else子句与if的匹配原则:

与在它上面、距它最近、且尚未匹配的if配对。

为明确匹配关系,避免匹配错误,强烈建议:

将内嵌的i

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

当前位置:首页 > 法律文书 > 调解书

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

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