《C语言程序设计 》课件第3章_第1页
《C语言程序设计 》课件第3章_第2页
《C语言程序设计 》课件第3章_第3页
《C语言程序设计 》课件第3章_第4页
《C语言程序设计 》课件第3章_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

第3章顺序结构程序设计3.1结构化程序设计3.2C语句3.3赋值语句3.4数据输入/输出的概念及在C语言中的实现3.5字符数据的输入与输出3.6格式输入与输出3.7顺序结构程序实例

3.1结构化程序设计

3.1.1程序的三种基本结构

通常的计算机程序总是由若干条语句组成的,从执行方式上看,从第一条语句到最后一条语句完全按顺序执行,是简单的顺序结构;若在程序执行过程中,根据用户的输入或中间结果去执行若干不同的任务则为选择结构;如果在程序的某处,需要根据某项条件重复地执行某项任务若干次,直到满足或不满足某条件为止,这就构成循环结构。大多数情况下,程序都不会是简单的顺序结构,而是顺序、选择、循环三种结构的复杂组合。

(1)顺序结构。顺序结构是简单的线性结构,各框按顺序执行。其流程图的基本形态如图3-1所示,语句的执行顺序为:A→B→C。

(2)选择(分支)结构。这种结构是对某个给定条件进行判断,条件为真或假时分别执行不同的框的内容。其基本形状有两种,分别如图3-2(a)、(b)所示。图3-2(a)的执行序列为:当条件为真时执行A,否则执行B;图3-2(b)的执行序列为:当条件为真时执行A,否则什么也不做。图3-1顺序结构的流程图图3-2选择(分支)结构的流程图

(3)循环结构。循环结构有两种基本形态:while(当)型循环和do-while(直到)型循环。

①while型循环。while型循环的流程图如图3-3所示。

其执行序列为:当条件为真时,反复执行A,一旦条件为假,跳出循环,执行循环后面的语句。

②do-while型循环。do-while型循环的流程图如图3-4所示。图3-3

while型循环的流程图图3-4

do-while型循环的流程图执行序列为:首先执行A,再判断条件,条件为真时,一直循环执行A,一旦条件为假,结束循环,执行循环后面的下一条语句。

在图3-3、图3-4中,A被称为循环体,条件被称为循环控制条件。要注意的是:

a.在循环体中,必须对条件要判断的值进行修改,使得经过有限次循环后,循环一定能结束。

b.当型循环中循环体可能一次都不执行,而直到型循环则至少执行一次循环体。

c.直到型循环可以很方便地转化为当型循环,而当型循环不一定能转化为直到型循环。例如,图3-4可以转化为图3-5。

d.三种基本结构的NS流程图如图3-6所示。图3-5

do-while型循环转换为while型循环图3-6三种基本结构的NS图3.1.2结构化程序设计的核心思想

结构化程序设计的基本思想概括有三点:

(1)采用顺序、选择和循环三种基本结构作为程序设计的基本单元,这样程序有以下四个特征:只有一个入口;只有一个出口;无死语句;无死循环。

(2)尽量避免使用goto语句,如果要使用,尽可能不使用多于一个goto的语句标号;只在一个单入口单出口的程序模块结构内使用goto语句,并且只往前跳转,不允许往后跳转。

(3)采用“自顶向下、逐步求精”的程序设计方法。3.1.3自顶向下、逐步求精的程序设计方法

自顶向下、逐步求精的程序设计方法有以下几个要点:

(1)自顶向下(Top-Down):先整体再局部,把一个较大的问题分成几个小问题(部分),再逐步求解,较小的问题还可以进一步进行分割。

(2)自底向上(Bottom-Up):先部分后整体,先编写出基本的程序段,然后再将多个程序段组合成更大的部分,直至完成整个程序。

(3)大致步骤:

①对实际问题进行全局分析,确定数学模型;

②确定程序的总体结构,将整个问题分解成若干相对独立的子问题;

③确定子问题的具体功能及其相互关系;

④将子问题进一步细化,直至能用高级语言表示为止。

3.2

C语句

图3-7

C程序的结构

C语言的语句用来向计算机发出操作指令,指挥、控制计算机执行相应的操作。在本书的前面章节已有介绍,一个C语言程序由多个函数构成。每个函数都由声明部分和执行部分构成。其中,执行部分由语句构成,可完成对数据的操作,程序的功能也是由执行语句实现的。说明

(1)函数声明部分的内容不应称为语句,函数的执行部分才称为语句。

(2)C程序的预编译命令不应称为C语言语句。

C语句可以分为以下五类:

(1)控制语句。

if()…else… 条件语句

for()… 循环语句

while()… 循环语句

do…while() 循环语句

continue 结束本次循环语句

break 中止switch或循环语句

switch 多分支选择语句

goto 转向语句

return 从函数返回语句

其中,()表示条件,… 表示内嵌的语句。

(2)函数调用语句。如:

a=getchar();

/*该语句调用函数getchar()*/

(3)表达式语句。在表达式后面加分号就构成表达式语句。任何表达式加上分号都可以成为语句,例如:

a=100;

/*由赋值表达式加分号构成的赋值语句*/

a++;

都是一个语句,第一个语句的作用是使变量a的值等于100,第二个语句的作用是使变量a的值加1,即等于101。

但是,不是所有的表达式构成的语句都有意义,如:

a+b;

是一个合法的语句,作用是完成a+b的操作,但是并不把a+b的结果赋给任何变量,即除了执行运算操作,不作其他任何操作。从实际的角度讲,这样的语句无实际意义。

(4)空语句。仅包含一个分号的语句称为空语句。如:

;

程序在执行这个语句时,不进行任何操作。

(5)复合语句。由大括号“{}”括起来的语句序列称为复合语句。如:

{

a=1+2;

b=a+5;

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

}

说明

(1)C语言语句的书写没有固定格式,一行中可以有多个语句,一个语句也可以在多行书写,语句之间必须用分号分隔。

(2)一个语句必须在最后出现分号,分号是语句不可缺少的部分。如:

a=1;b=2;c=3; /*一行写几个语句*/

printf("Iama

student,\n"); /*一个语句分多行书写*/ 3.3赋值语句

赋值语句是由赋值表达式再加上分号构成的表达式语句。

其一般形式为

变量=表达式;

赋值语句的功能和特点都与赋值表达式相同。它是程序中使用最多的语句之一。在赋值语句的使用中需要注意以下几点:

(1)由于在赋值符“=”右边的表达式又可以是一个赋值表达式,因此,下述形式

变量=(变量=表达式);

是成立的,从而形成嵌套的情形。

其展开之后的一般形式为

变量=变量=…=表达式;

例如:

a=b=c=d=e=5;

按照赋值运算符的右结合性,以上语句实际上等效于:

e=5;

d=e;

c=d;

b=c;

a=b;

(2)注意在变量说明中给变量赋初值和赋值语句的区别。给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其他同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。例如:

inta=5,b,c;

(3)在变量说明中,不允许连续给多个变量赋初值。如下述说明是错误的:

inta=b=c=5;

必须写为

inta=5,b=5,c=5;

而赋值语句允许连续赋值。

(4)注意赋值表达式和赋值语句的区别。赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。下述语句是合法的:

if((x=y+5)>0)z=x;

该语句的功能是:若表达式x=y+5大于0,则z=x。

下述语句是非法的:

if((x=y+5;)>0)z=x;

因为“x=y+5;”是语句,不能出现在表达式中。说明

(1)“=”号还可以是组合赋值号,如 +=、-=、*=、/=、%= 等。

(2)赋值语句由赋值表达式构成,后面一定要跟分号。

(3)“=”具有方向性(向左),它与数学上的等号含义不同。数学上的等号在C中用 ==号表示。如a=a+1在数学上不合法,但在C语言中却是合法的。

(4)表达式值的类型最好与等号左边的变量类型一致,否则系统自动将右侧表达式类型转换成左侧变量的类型。如x类型为int,则执行“x=5.6;”后,x值为5(不四舍五入)。

(5)格式中的表达式可以包含另一个赋值表达式。如执行“a=b=c=1;”后,a、b、c的值均为1。

3.4数据输入/输出的概念及在C语言中的实现

所谓输入/输出,是以计算机为主体而言的。本章介绍的是向标准输出设备显示器输出数据的语句。

在C语言中,所有的数据输入/输出都是由库函数完成的,因此都是函数语句。在使用C语言库函数时,要用预编译命令

#include

将有关“头文件”包括到源文件中。使用标准输入/输出库函数时要用到“stdio.h”文件,因此源文件开头应有以下预编译命令:

#include<stdio.h>

#include"stdio.h"

stdio是standardinput&outupt的意思。

考虑到printf和scanf函数使用频繁,系统允许在使用这两个函数时不加

#include<stdio.h>

#include"stdio.h"

3.5字符数据的输入与输出

3.5.1putchar函数(字符输出函数)

putchar函数是字符输出函数,其功能是在显示器上输出单个字符。

其一般形式为

putchar(字符变量);

例如:

putchar('A'); (输出大写字母A)

putchar(x); (输出字符变量x的值)

putchar('\101'); (也是输出字符A)

putchar('\n'); (换行)对控制字符则执行控制功能,不在屏幕上显示。

使用本函数前必须用文件包含命令:

#include<stdio.h>

#include"stdio.h"

【例3.1】

输出单个字符。

程序如下:

#include<stdio.h>

main(){

chara=‘B’,b=‘o’,c=‘k’; /*定义字符变量a,b,c*/

putchar(a);putchar(b);putchar(b);putchar(c);putchar(‘\t’);

putchar(a);putchar(b);

putchar(‘\n’);

putchar(b);putchar(c);

}

程序运行结果:

Book↙

Bo↙

ok3.5.2

getchar函数(键盘输入函数)

getchar函数的功能是从键盘上输入一个字符。

其一般形式为

getchar();

通常把输入的字符赋予一个字符变量,构成赋值语句,如:

charc;

c=getchar();

【例3.2】

输入单个字符。

程序如下:

#include<stdio.h>

voidmain(){

charc;

printf(“inputacharacter\n”);

c=getchar();

putchar(c);

}

程序运行结果:

inputacharacter:↙

j↙

j说明

(1)getchar函数只能接收单个字符,输入的数字也按字符处理。输入多于一个字符时,只接收第一个字符。

(2)使用本函数前必须包含文件“stdio.h”。

(3)在TC屏幕下运行含本函数的程序时,将退出TC屏幕而进入用户屏幕等待用户输入。输入完毕再返回TC屏幕。

(4)程序最后两行可用下面两行的任意一行代替:

putchar(getchar());

printf("%c",getchar()); 3.6格式输入与输出

3.6.1

printf函数(格式输出函数)

printf函数称为格式输出函数,其关键字最末一个字母f即为“格式”(format)之意。其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。在前面的例题中我们已多次使用过这个函数。

1.printf函数调用的一般形式

printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。

printf函数调用的一般形式为

printf

("格式控制字符串",输出表列)其中,格式控制字符串用于指定输出格式,可由格式字符串和非格式字符串组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如:

“%d”表示按十进制整型输出;

“%ld”表示按十进制长整型输出;

“%c”表示按字符型输出。

非格式字符串在输出时原样照搬,在显示中起提示作用。

输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。

【例3.3】printf函数的应用。

程序如下:

main()

{

inta=88,b=89;

printf(“%d%d\n”,a,b);

printf(“%d,%d\n”,a,b);

printf(“%c,%c\n”,a,b);

printf(“a=%d,b=%d”,a,b);

}

程序运行结果:

88

89↙

88,

89↙

X,

Y↙

a=88,b=89说明

本例中四次输出了a、b的值,但由于格式控制串不同,输出的结果也不相同。第四行的输出语句格式控制串中,两格式串%d之间加了一个空格(非格式字符),所以输出的a、b值之间有一个空格。第五行的printf语句格式控制串中加入的是非格式字符逗号,因此输出的a、b值之间加了一个逗号。第六行的格式串要求按字符型输出a、b值。第七行中为了提示输出结果,又增加了非格式字符串。

2.格式字符串

在C语言中格式字符串的一般形式为

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

其中,方括号 [] 中的项为可选项。

各项的意义介绍如下:

(1)类型。类型字符用以表示输出数据的类型,其格式符和意义如表3-1所示。

(3)输出最小宽度。此项用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出;若实际位数少于定义的宽度,则补以空格或0。

(4)精度。精度格式符以“ . ”开头,后跟十进制整数。本项的意义是:如果输出的是数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。

(5)长度:长度格式符为h、l两种,h表示按短整型量输出,l表示按长整型量输出。

【例3.4】格式字符串的使用1。

程序如下:

main()

{

inta=15;

floatb=123.1234567;

doublec=12345678.1234567;

chard=‘p’;

printf(“a=%d,%5d,%o,%x\n”,a,a,a,a);

printf(“b=%f,%lf,%5.4lf,%e\n”,b,b,b,b);

printf(“c=%lf,%f,%8.4lf\n”,c,c,c);

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

}程序运行结果:

a=15, 15,17,f↙

b=123.123459,123.123459,123.1235,1.231235e+002↙

c=12345678.123457,12345678.123457,12345678.1235↙

d=p, p↙

说明

本例第七行中以四种格式输出整型变量a的值,其中“%5d”要求输出宽度为5,而a值为15,只有两位,故补三个空格。第八行中以四种格式输出实型量b的值。其中“%f”和“%lf”格式的输出相同,说明“l”符对“f”类型无影响。“%5.4lf”指定输出宽度为5,精度为4,由于实际长度超过5,故应该按实际位数输出,小数位数超过4位部分被截去。第九行输出双精度实数,“%8.4lf”指定精度为4位,故截去了超过4位的部分。第十行输出字符量d,其中“%8c”指定输出宽度为8,故在输出字符p之前补加7个空格。使用printf函数时还要注意一个问题,那就是输出表列中的求值顺序。此顺序对于不同的编译系统不一定相同,可以从左到右,也可从右到左。C语言是按从右到左进行的。请看下面两个例子。

【例3.5】格式字符串的使用2。

程序如下:

main(){

inti=8;

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

}

程序运行结果:

8↙

7↙

8↙

8↙

-8↙

-8↙

【例3.6】格式字符串的使用3。

程序如下:

main(){

inti=8;

printf(“%d\n”,++i);

printf(“%d\n”,--i);

printf(“%d\n”,i++);

printf(“%d\n”,i--);

printf(“%d\n”,-i++);

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

}程序运行结果:

9↙

8↙

8↙

9↙

-8↙

-9↙

说明

这两个程序中,例3.5程序用一个printf语句输出,例3.6程序用多个printf语句输出。但从结果可以看出是不同的。为什么结果会不同呢?就是因为printf函数对输出表中各量求值的顺序是自右至左进行的。在例3.5中,先对最后一项“-i--”求值,结果为-8,然后i自减1后为7。再对“-i++”项求值得 -7,然后i自增1后为8。再对“i--”项求值得8,然后i再自减1后为7。再求“i++”项得7,然后i再自增1后为8。再求“--i”项,i先自减1后输出,输出值为7。最后才求输出表列中的第一项“++i”,此时i自增1后输出8。

但是必须注意,求值顺序虽是自右至左,但是输出顺序还是从左至右,因此得到的结果是上述输出结果。3.6.2

scanf函数(格式输入函数)

scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。

1.scanf函数的一般形式

scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。与printf函数相同,C语言也允许在使用scanf函数之前不必包含stdio.h文件。

scanf函数的一般形式为

scanf("格式控制字符串",地址表列);其中,格式控制字符串的作用与printf函数的相同,但它不能显示非格式字符串,也就是不能显示提示字符串。地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。例如:

&a,&b

分别表示变量a和变量b的地址。这个地址就是编译系统在内存中给a、b变量分配的地址。在C语言中,使用了地址这个概念,这是与其他语言不同的。应该把变量的值和变量的地址这两个不同的概念区别开来。变量的地址是C编译系统分配的,用户不必关心具体的地址是多少。变量的地址和变量值的关系如下:

在赋值表达式中给变量赋值,如:

a=567

则a为变量名,567是变量的值,&a是变量a的地址。但在赋值号左边是变量名,不能写地址。而scanf函数在本质上也是给变量赋值,但要求写变量的地址,如 &a。这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。

【例3.7】scanf函数的应用。

程序如下:

main(){

inta,b,c;

printf(“inputa,b,c\n”);

scanf(“%d%d%d”,&a,&b,&c);

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

}

说明

在本例中,由于scanf函数本身不能显示提示串,故先用printf语句在屏幕上输出提示,请用户输入a、b、c的值。执行scanf语句,则退出TC屏幕进入用户屏幕,等待用户输入。用户输入“789”后按下回车键,此时,系统又将返回TC屏幕。在scanf语句的格式串中由于没有非格式字符在“%d%d%d”之间作输入时的间隔,因此在输入时要用一个以上的空格或回车键作为每两个输入数之间的间隔,如:

789

7

8

9

2.格式字符串

格式字符串的一般形式为

%[*][输入数据宽度][长度]类型

其中,有方括号 [] 的项为任选项。各项的意义如下:

(1)类型:表示输入数据的类型,其格式符和意义如表3-3所示。

(2)“ * ”符:用以表示该输入项读入后不赋予相应的变量,即跳过该输入值。如:

scanf("%d%*d%d",&a,&b);

当输入为“123”时,把1赋予a,2被跳过,3赋予b。

(3)输入数据宽度:用十进制整数指定输入数据的宽度(即字符数)。例如:

scanf("%5d",&a);

若输入“12345678”,则只把12345赋予变量a,其余部分被截去。

又如:

scanf("%4d%4d",&a,&b);

若输入“12345678”,则把1234赋予a,而把5678赋予b。

(4)长度:长度格式符为l和h,l表示输入长整型数据(如%ld)和双精度浮点数(如%lf),h表示输入短整型数据。

使用scanf函数还必须注意以下几点:

(1)scanf函数中没有精度控制,如“scanf(”%5.2f“,&a);”是非法的,不能用此语句输入小数为2位的实数。

(2)scanf中要求给出变量地址,只给出变量名会出错。如“scanf(”%d“,a);”是非法的,应改为“scnaf(”%d“,&a);”才是合法的。

(3)在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔,则可用空格、Tab或回车作间隔。C编译程序在碰到空格、Tab、回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。

(4)在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。例如:

scanf(“%c%c%c”,&a,&b,&c);

若输入为

def

则把 ‘d’ 赋予a,‘’ 赋予b,‘e’ 赋予c。

只有当输入为

def

时,才能把 ‘d’ 赋于a,‘e’ 赋予b,‘f’ 赋予c。

如果在格式控制中加入空格作为间隔,如:

scanf("%c%c%c",&a,&b,&c);

则输入时各数据之间可加空格。

【例3.8】scanf函数的格式控制应用1。

程序如下:

main(){

chara,b;

printf(“inputcharactera,b\n”);

scanf(“%c%c”,&a,&b);

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

}

说明

由于scanf函数 "%c%c" 中没有空格,因此若输入“MN”,输出结果只有“M”。若输入改为“MN”,则可输出“MN”两字符。

【例3.9】scanf函数的格式控制应用2。

程序如下:

main(){

chara,b;

printf(“inputcharactera,b\n”);

scanf(“%c%c”,&a,&b);

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

}

说明

本例中scanf格式控制串 "%c%c" 之间有空格,则输入的数据之间可以有空格间隔。如果格式控制串中有非格式字符,则输入时也要输入该非格式字符。例如:

scanf("%d,%d,%d",&a,&b,&c);

其中用非格式符“,”作间隔符,故输入时应为

5,6,7

又如:

scanf("a=%d,b=%d,c=%d",&a,&b,&c);

则输入应为

a=5,b=6,c=7

如输入的数据与输出的类型不一致,虽然编译能够通过,但结果将不正确。

【例3.10】scanf函数的格式控制应用3。

程序如下:

main(){

inta;

printf(“inputanumber\n”);

scanf(“%d”,&a);

printf(“%ld”,a);

}

程序运行结果:

inputanumber:

1234567890

722

说明

由于输入数据类型为整型,而输出语句的格式串中说明为长整型,因此输出结果和输入数据不符。如改动程序如下:

【例3.11】scanf函数的格式控制应用4。

程序如下:

main(){

longa;

printf(“inputalonginteger\n”);

scanf(“%ld”,&a);

printf("%ld",a);

}

程序运行结果:

inputalonginteger

1234567890

1234567890

当输入数据改为长整型后,输入、输出数据相等。

【例3.12】

输入三个小写字母,输出其ASCII码和对应的大写字母。

程序如下:

main(){

chara,b,c;

printf("inputcharactera,b,c\n");

scanf("%c%c%c",&a,&b,&c);

printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);

}

程序运行结果:

inputcharactera,b,c↙

abc↙

97,98,99↙

A,B,C↙

说明

在ASCII码中,小写字母正好比大写字母大32。

【例3.13】

输出各种数据类型的字节长度。

程序如下:

main(){

inta;

longb;

floatf;

doubled;

charc;

printf("\nint:%d\nlong:%d\nfloat:%d\ndouble:%d\nchar:%d\n",sizeof(a),sizeof(b),sizeof(f),sizeof(d),sizeof(c));

}程序运行结果:

int:4↙

long:4↙

float:4↙

double:8↙

char:1↙

说明

在VC++ 中,int整型长度为4字节,sizeof(k)为求数据k的字节数的函数。

3.7顺序结构程序实例

【例3.14】

输入正方形的边长,计算正方形的周长。

分析:

要计算机出正方形的周长,需要以下步骤:

①输入边长;

②运行公式计算出周长;

③输出周长值。

根据以上分析,画出计算正方形周长程序的流程图如图3-8所示。图3-8例3.14流程图输入数据可以使用scanf函数;计算周长可以使用算术表达式;显示周长可以使用printf函数。根据流程图,可以编写出如下程序:

main()

{

floatx;

printf(“请输入正方形的边长:”);

scanf(“%f”,&x); /*输入正方形的边长*/

x=4*x; /*计算正方形的周长*/

printf(“正方形的周长是:%f\n”,x); /*显示周长*/

}

运行程序时,如果输入5,屏幕显示如下信息:

请输入正方形的边长:5↙

正方形的周长是:25.000000

【例3.15】

输入两个整数给变量x和y,然后输出x和y的值,交换x和y的值后再输出x和y的值。

分析:

完成本题需要4个步骤:

①输入两个整数给x和y;

②输出x和y;

③交换x和y的值;

④输出x和y。

根据以上分析,可画出程序的流程图如图3-9所示。

输入、输出可以使用printf函数和scanf函数完成;交换变量x和y的值可以先把x的值保存在另一个变量t中,再把y的值赋给x,最后把t的值赋给y。根据流程图3-9,容易写出如下程序:图3-9例3.15流程图

main()

{

intt,x,y;/*变量t为中间变量*/

printf(“请输入两个整数:”);

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

printf(“交换前:x=%dy=%d\n”,x,y);

t=x;

x=y;

y=t;

printf("交换后:x=%dy=%d\n",x,y);

}程序运行时,屏幕显示如下信息:

请输入两个整数:56↙

交换前:x=5y=6

交换后:x=6y=5程序第7行至第9行的作用是交换x和y的值,请注意分析这个程序段各条语句的作用。交换x和y值不能简单地用“x=y;”和“y=x;”这两条语句,如果没有把x存放的数据保存到其他变量,就执行“x=y;”语句,把y的值赋给x,将使x和y具有相同的值,丢失x中原来的值,也就无法实现两个数值的交换了。

提示:读者可以思考一下交换两个变量值的其他算法,如两两异或。

【例3.16】计算一元二次方程ax2 + bx + c = 0的实根,a、b、

温馨提示

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

评论

0/150

提交评论