第3章 顺序结构.docx

上传人:b****4 文档编号:6622981 上传时间:2023-05-10 格式:DOCX 页数:16 大小:133.37KB
下载 相关 举报
第3章 顺序结构.docx_第1页
第1页 / 共16页
第3章 顺序结构.docx_第2页
第2页 / 共16页
第3章 顺序结构.docx_第3页
第3页 / 共16页
第3章 顺序结构.docx_第4页
第4页 / 共16页
第3章 顺序结构.docx_第5页
第5页 / 共16页
第3章 顺序结构.docx_第6页
第6页 / 共16页
第3章 顺序结构.docx_第7页
第7页 / 共16页
第3章 顺序结构.docx_第8页
第8页 / 共16页
第3章 顺序结构.docx_第9页
第9页 / 共16页
第3章 顺序结构.docx_第10页
第10页 / 共16页
第3章 顺序结构.docx_第11页
第11页 / 共16页
第3章 顺序结构.docx_第12页
第12页 / 共16页
第3章 顺序结构.docx_第13页
第13页 / 共16页
第3章 顺序结构.docx_第14页
第14页 / 共16页
第3章 顺序结构.docx_第15页
第15页 / 共16页
第3章 顺序结构.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第3章 顺序结构.docx

《第3章 顺序结构.docx》由会员分享,可在线阅读,更多相关《第3章 顺序结构.docx(16页珍藏版)》请在冰点文库上搜索。

第3章 顺序结构.docx

第3章顺序结构

第3章顺序结构

在程序中若按语句出现的顺序逐条执行,由这样的语句构成的程序结构称为顺序结构。

    3.1 赋值语句

    在赋值表达式尾部加上一个“;”号,就构成了赋值语句,也称表达式语句。

例如a=b+c是赋值表达式,a=b+c; 则是赋值语句。

i++;、--i;、a=b=c、a=b,b=c;等也是赋值语句。

要注意,不要把变量定义时的赋初值和赋值语句混为一谈。

    C语言中可由形式多样的赋值表达式构成赋值语句,用法灵活,因此读者首先应当掌握好赋值表达式的运算规律才能写出正确的赋值语句。

    ◆ 【例题分析】

    (习题)合法的C语言赋值语句是(  c)

  A)a=b=58    

  B)k=int(a+b);    

  C)a=58,b=58;    

  D)--i;

    (习题)若变量a、b、t已正确定义,要将a和b中的数进行交换,以下选项中不正确的语句组是( C )

    A)a=a+b,b=a-b,a=a-b;    

  B)t=a,a=b,b=t;

    C)a=t;t=b;b=a;          

  D)t=b;b=a;a=t;

    3.2数据输出

    把数据从计算机内部送到计算机外部设备上的操作称为“输出”。

例如把计算机运算结果显示在屏幕上或打印在纸上,或者送到磁盘上保存起来。

从计算机外部设备将数据送入计算机内部的操作称为“输入”。

    C语言本身并没有提供输入输出语句,但可以通过调用标准库函数中提供的输入和输出函数来实现输入和输出。

C语言提供了丰富的用于输入和输出的库函数。

在VC++ 6.0环境下,在调用输入和输出的库函数之前要求在源程序中出现包含头文件stdio.h的命令行:

    #include

printf函数的一般调用形式

  3.2.1 printf函数的一般调用形式

    printf函数是C语言提供的标准输出函数,用来在终端设备上按指定格式进行输出。

    printf函数的调用形式如下:

    printf(格式控制,输出项1,输出项2,…)

    格式控制是字符串形式。

在printf函数调用之后加上“;”,则构成输出语句。

    例如:

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

    以上输出语句中,printf是函数名,用双引号括起来的字符串部分“a=%d,b=%d”是输出格式控制,决定了输出数据的内容和格式。

a,b称为输出项,是printf函数的实参。

    printf函数中格式控制的作用是:

    1.给输出项提供输出格式说明

    输出格式说明的作用是将要输出的数据按照指定的格式输出。

格式说明由“%”符号和紧跟在其后的格式描述字符组成。

当输出项为int类型时,用d作为格式描述字符,其形式为%d;当输出项为float或double类型时,用f或e作为格式描述字符,其形式为%f或%e(对于double类型也可用%lf或%le)。

    2.提供需要原样输出的文字或字符

    除了格式转换说明外,字符串中的其他字符(包括空格)将按原样输出。

这样使得输出结果具有可读性。

    printf的各输出项之间用逗号隔开(函数的各个参数之间必须用逗号隔开)。

输出项可以是任意合法的常量、变量或表达式。

printf可以没有输出项,此时函数的调用形式为printf(格式控制),输出结果就是格式控制中的字符串。

    例如:

printf(“OK!

”);将输出字符串:

OK!

    例1

    #include

    main()

    { int i=2518;

     double a=3.1415; 

     printf(“i=%d,a=%f,a*10=%e\n”,i,a,a*10);        //\n为转义字符换行

    }

    运行后的输出结果为:

    i=2518,a=3.141500,a*10=3.141500e+01

printf函数中常用的格式说明

  3.2.2 printf函数中常用的格式说明

    格式控制中,每个格式说明都必须用“%”开头,以一个格式字符作为结束,在此之间可以根据需要插入“宽度说明”、左对齐符号“-”、前导零符号“0”等。

    1.格式字符

    %后允许使用的格式字符和它们的功能如下表所示。

在某些系统中,可能不允许使用大写字母的格式字符,因此为了使程序具有通用性,写程序时应尽量不用大写字母的格式字符。

 

  

    2.长度修饰符

    在%和格式字符之间,可以加入长度修饰符,以保证数据输出格式的正确和对齐。

对于长整型数(long)应该加l,即%ld;对于短整型数(short)可以加h,即%hd。

    3.输出数据所占的宽度说明

    当使用%d、%c、%f、%e、%S、…的格式说明时,输出数据所占的宽度(域宽)由系统决定,通常按照数据本身的实际宽度输出,前后不加空格,并采用右对齐的形式。

也可以用以下三种方法人为控制输出数据所占的宽度(域宽),按照使用者的意愿进行输出。

    

(1)在%和格式字符之间插入一个整数常数来指定输出的宽度n(例如%4d,11代表整数4)。

如果指定的宽度n不够,数据完整输出。

如果指定的宽度n超过输出数据的实际宽度,输出时将会右对齐,左边补以空格,达到指定的宽度。

    

(2)对于float和double类型的实数,可以用“n.m”的形式来指定输出宽度(n和m分别代表一个整常数),其中n指定输出数据的宽度(包括小数点),m指定小数点后小数位的位数,m也称为精度(例如%12.4f,n代表整数l2,m代表整数4)。

    对于f、e或E,实际小数位数>m位时,截去右边多余的小数,并对截去部分的第一位小数做四舍五入处理;实际小数位数

若给出的总宽度n<(m+整数位数+小数点(e或E格式还要加上指数的5位)),则自动突破n的限制;反之,数字右对齐,左边补空格。

    也可以用“.m”格式(例如%.6f),不指定总宽度,仅指定小数部分的输出位数。

如果指定“n.0”或“.0”格式(例如%12.0f或%.Of),则不输出小数点和小数部分。

    对于g或G,宽度用来指定输出的有效数字位数。

若宽度超过数字的有效数字位数,则左边自动补0;若宽度不足,则自动突破。

不指定宽度,将自动按照6位有效数字输出,截去右边多余的小数,并对截去部分的第一位小数做四舍五入处理。

    (3)对于整型数,若输出格式是“0n”或“.m”格式(例如%05d或%.5d),则如果指定的宽度>实际宽度,输出时将会右对齐,左边补0。

    对于float和double类型的实数,若用“0n.m”格式输出(例如%012.4f),如果给出的总宽度n>(m+整数位数+小数点(e或E格式还要加上指数的5位)),则数字右对齐,左边补0。

    对于字符串,格式“n”指定字符串的输出宽度,若n<字符串的实际长度,则输出整个字符串;若n>字符串的实际长度,则右对齐,左边补空格。

若用“.m”格式指定字符串的输出宽度,则若m<字符串的实际长度,将只输出字符串的前m个字符。

    注意:

输出数据的实际精度并不完全取决于格式控制中的域宽和小数的域宽,而是取决于数据在计算机内的存储精度。

通常系统只能保证float类型有7位有效数字,double类型有15位有效数字。

若你指定的域宽和小数的域宽超过相应类型数据的有效数字,输出的多余数字是没有意义的,只是系统用来填充域宽而已。

    4.输出数据左对齐

    由于输出数据都隐含右对齐,如果想左对齐,可以在格式控制中的“%”和宽度之间加一个“-”号来实现,如%-5d。

    5.使输出数据总带+号或-号

    通常输出的数据如果是负数,前面有符号“-”,但正数前面的“+”一般都省略了。

如果要每一个数前面都带正负号,可以在“%”和格式字符间加一个“+”号来实现,如%+5d。

    下表列举了各种输出宽度和不指定宽度情况下的输出结果(表中输出结果中的符号j代表一个空格),其中k为int型,值为l234;f为float型,值为123.456。

         

  

使用printf函数时的注意事项

  3.2.3 使用printf函数时的注意事项

    

(1)printf的输出格式为自由格式,是否在两个数之间留逗号、空格或回车,完全取决于格式控制,如果不注意,很容易造成数字连在一起,使得输出结果没有意义。

例如:

若k=1234,f=123.456,则printf("%d%d%f\n",k,k,f);语句的输出结果是:

12341234123.456,无法分辨其中的数字含义。

而如果改为printf("%d %d %f\n",k,k,f);其输出结果是:

l234 1234 123.456,看起来就一目了然了。

    

(2)格式控制中必须含有与输出项一一对应的输出格式说明,类型必须匹配。

若格式说明与输出项的类型不一一对应匹配,则不能正确输出,而且编译时不会报错。

若格式说明个数少于输出项个数,则多余的输出项不予输出;若格式说明个数多于输出项个数,则将输出一些毫无意义的数字乱码。

    (3)在格式控制中,除了前面要求的输出格式,还可以包含任意的合法字符(包括汉字和转义符),这些字符输出时将“原样照印”。

此外,还可以利用\n(回车)、\r(换行但不回车)、\t(制表)、\a(响铃)等控制输出格式。

    (4)如果要输出%符号,可以在格式控制中用%%表示,将输出一个%符号。

    (5)printf函数有返回值,返回值是本次调用输出字符的个数,包括回车等控制符。

    (6)尽量不要在输出语句中改变输出变量的值,因为可能会造成输出结果的不确定性。

例如:

int k=8;printf(“%d,%d\n”,k,++k);输出结果不是8,9,而是9,9.这是因为调用函数printf时,其参数是从右至左进行处理的,将先进行++k运算。

    (7)输出数据时的域宽可以改变。

若变量m、n、i和f都已正确定义并赋值,则语句printf(“%*d”,m,i);将按照m指定的域宽输出i的值,并不输出m的值。

而语句printf(“%*.*f”,m,n,f);将按照m和n指定的域宽输出浮点型变量f的值,并不输出m、n的值。

    ◆ 【例题分析】

    (2009年9月)有以下程序

    #include 

    main()

    { int a=1,b=0;

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

      printf("%d\n",a=2*b);

    }

  程序运行后的输出结果是(  D  )

  A)0,0     

  B)1,0     

  C)3,2     

  D)1,2

    (2009年9月)以下程序运行后的输出结果是 【8】 。

(答案:

10)

    #include 

    main()

    { int x=20;

      printf("%d",00||x<20

      printf("%d\n",0

    }

    (2009年3月)程序段:

int x=12; double y=3.141593;printf("%d%8.6f",x,y);的输出结果是(  A  )

    A)123.141593    

  B)12 3.141593    

  C)12,3.141593    

  D)123.1415930

数据输入

  3.3 数据输入

    scanf函数是C语言提供的标准输入函数,其作用是从终端键盘上读入数据。

    3.3.1 scanf函数的一般调用形式

    scanf函数的一般调用形式如下:

    scanf(格式控制,输入项l,输入项2,…)    

    在scanf函数调用之后加上“;”,则构成输入语句。

   

    例如,若k为int型变量,a为float型变量,y为double型变量,可通过以下函数调用语句进行输入:

    scanf(”%d%f%lf”,&k,&a,&y);

    其中scanf是函数名,双引号括起来的字符串部分为格式控制部分,其后的&k,&a,&y为输入项。

    格式控制的主要作用是指定输入时的数据转换格式,即格式转换说明。

scanf的格式转换说明与printf的类似,也是由“%”开始,其后是格式字符。

上例的%d、%f(或%e)、%lf(或%le)分别用于int、float和double型数据的输入。

    输入项之间用逗号隔开。

对于int、float和double型变量,在变量之前必须加&符号作为输入项(&是C语言中的求地址运算符,输入项必须是地址表达式,读者在此只需正确表示,不必深究)。

    3.3.2 scanf函数中常用的格式说明

    每个格式说明都必须用%开头,以一个“格式字符”作为结束。

    

    通常允许用于输入的格式字符及其相应的功能如下表所示。

  

     

    说明:

    

(1)在格式串中,必须含有与输入项一一对应的格式转换说明符。

若格式说明与输入项的类型不一一对应匹配,则不能正确输入,而且编译时不会报错。

若格式说明个数少于输入项个数,scanf函数结束输入,则多余的输入项将无法得到正确的输入值;若格式转换说明个数多于输入项个数,scanf函数也结束输入,多余的数据作废,不会作为下一个输入语句的数据。

    

(2)在VC 6.0环境下,输入short型整数,格式控制要求用%hd。

要输入double型数据,格式控制必须用%lf(或%le)。

否则,数据不能正确输入。

    (3)在scanf函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以对实数指定小数位的宽度。

    (4)由于输入是一个字符流,scanf从这个流中按照格式控制指定的格式解析出相应数据,送到指定地址的变量中。

因此当输入的数据少于输入项时,运行程序将等待输入,直到满足要求为止。

当输入的数据多于输入项时,多余的数据在输入流中没有作废,而是等待下一个输入操作语句继续从此输入流读取数据。

    (5)scanf函数有返回值,其值就是本次scanf调用正确输入的数据项的个数。

    3.3.3 通过scanf函数从键盘输入数据

    当用scanf函数从键盘输入数据时,每行数据在未按下回车键(Enter键)之前,可以任意修改。

但按下回车键(Enter键)后,scanf函数即接受了这一行数据,不能再回去修改。

  

  1.输入数值数据

    在输入整数或实数这类数值型数据时,输入的数据之间必须用空格、回车符、制表符(Tab键)等间隔符隔开,间隔符个数不限。

即使在格式说明中人为指定了输入宽度,也可以用此方式输入。

例如:

若k为int型变量,a为float型变量,y为double型变量,有以下输入语句:

scanf(“%d%f%le”, &k,&a,&y);

    若要给k赋值10,a赋值12.3,y赋值l234567.89,输入格式可以是(输入的第一个数据之前可有任意空格):

    10 12.3 1234567.89

    此处表示回车。

也可以是:

    10

    12.3

    1234567.89

    只要能把3个数据正确输入,就可以按任何形式添加间隔符。

    2.指定输入数据所占的宽度

    可以在格式字符前加入一个正整数指定输入数据所占有宽度。

例如上例中改为:

    scanf(“%3d%5f%5le”,&k,&a,&y);

    若从键盘上从第1列开始输入:

123456.789.123

    用printf(“%d %f %f\n”,k,a,y);打印的结果是:

123 456.700000 89.120000

    可以看到,由于格式控制是%3d,因此把输入数字串的前三位123赋值给了k;由于对应于变量a的格式控制是%5f,因此把输入数字串中随后的5位数(包括小数点)456.7赋值给了a;由于格式控制是%5e,因此把数字串中随后的5位(包括小数点)89.12赋值给了y。

由以上示例可知,数字之间不需要间隔符,若插入了间隔符,系统也将按指定的宽度来读取数据,从而会引起输入混乱。

除非数字是“粘连”在一起,否则不提倡指定输入数据所占的宽度。

  

    3.跳过某个输入数据

    可以在%和格式字符之间加入“*”号,作用是跳过对应的输入数据。

    例如:

int x,y,z;

       scanf("%d%*d%d%d",&x,&y,&z);    

       printf("%d%d%d\n",x,y,z);

    若是输入:

12 34 56 78

    则输出是:

12 56 78   

    系统将12赋给X,跳过34,把56赋给y,把78赋给2。

    4.在格式控制字符串中插入其他字符

    

(1)scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,因此若想在屏幕上输出提示信息,应该首先使用printf函数输出。

例如:

    int x,y,z;

    scanf(“Please input x,y,z:

%d%d%d”,&x,&y,&z);

    屏幕上不会输出“Please input x,y,z:

”,而是要求输入数据时按照一一对应的位置原样输入这些字符,必须从第一列起以下面的形式进行输入:

    Please input x,y,z:

12 34 56

    包括字符的大小写、字符间的间格等必须与scanf中的完全一致。

这些字符又被称为通配符。

但如果使用以下的形式:

    int X,y,2;

    printf(“Please input x,y,z:

”);

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

    运行时,由于printf语句的输出,屏幕上将出现提示“Please input x,y,z:

”,只需按常规输入下面的数据即可:

12 34 56

    

(2)如果在上面的scanf函数中,在每个格式说明之间加一个逗号作为通配符:

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

    则输入数据时,必须在前两个数据后面紧跟一个逗号,以便与格式控制中的逗号一一匹配,否则就不能正确读入数据。

例如,输入:

12,34,56

    能正确读入。

输入:

12,    34,    56

    也能正确读入。

因为空格是间隔符,将全部被忽略掉。

但输入:

12    ,34    ,56

    将不能正确读入,因为逗号没有紧跟在输入数据后面。

    需要提醒的是,为了减少不必要的麻烦,尽量不要使用通配符。

    ◆ 【例题分析】

    (习题)若变量已正确定义为int型,要给a、b、c输入数据,正确的输入语句是(  D  )

  A)read(a,b,c);                      

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

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

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

    (习题)若变量已正确定义为float型,要通过输入语句:

scanf(“%f %f%f”,&a,&b,&c);给a赋值11.0,b赋值22.0,c赋值33.0,不正确的输入形式是(  B  )

  A)11 

      22   

     33 

  B)11.0,22.0,33.0

  C)11.0              

   22.0   33.0 

  D)11 22 

   33                  

  3.4 复合语句和空语句

    3.4.1 复合语句

    在C语言中,一对花括号“{}”不仅可用作函数体的开头和结尾的标志,也可用作复合语句的开头和结尾的标志。

复合语句也可称为“语句块”,其语句形式如下:

    {语句l

    语句2

    ……语句n

    }

    用一对花括号把若干语句括起来构成一个语句组。

一个复合语句在语法上视为一条语句,在一对花括号内的语句数量不限。

在复合语句中,可以定义本复合语句中的局部变量。

    3.4.2 空语句

    c程序中的所有语句都必须由一个分号“;”作为结束。

如果只有一个分号,这个分号也是一条语句,称为“空语句”,程序执行时不产生任何动作。

程序设计中有时需要加一个空语句来表示存在一条语句,但随意加分号也会导致逻辑上的错误,而且这种错误十分隐蔽,编译器也不会提示逻辑错误,初学者一定要小心,需要慎用。

    ◆ 【例题分析】

    (习题)下列选项中不是C语句的是(  C  )

  A){int i;i++;printf("%d\n",i);}     

  B);

  C)a=5.C=10                              

  D){;}

    3.5 程序举例

  例3.2 下程序由终端输入两个整数给变量x和y;然后输出x和y;在交换中的值后,再输出x和y。

验证两个变量中的数是否正确地进行了交换。

    #include

    Main()

    { int x,y,t;

     printf(“Enter x&y:

\n”);         //输入提示

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

     printf(“x=%d y=%d\n”,x,y);

     t=x;x=y;y=t;                      //交换

     printf(“x=%d y=%d\n”,x,y);

    }

    以下是程序运行情况:

    Enter x&y:

    (由第4行的printf输出)

    123 456    (从键盘输入两个整数,代表按Enter键)

    x=123 y=456    (由第6行的printf输出)

    x=456 y=123    (由第8行的printf输出)

    例3.3 输入一个double类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入处理,然后输出此数,以便验证处理是否正确。

    main()    

  {   double x;    

      printf("Enter x:

\n");

        seanf("%lf",&x);

        printf("

(1)x=%f\n",x);    

      x=x*100;

        x=x+0.5

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

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

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

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