顺序结构

文档属性

名称 顺序结构
格式 zip
文件大小 21.9KB
资源类型 教案
版本资源 通用版
科目 信息技术(信息科技)
更新时间 2010-09-16 19:33:00

图片预览

文档简介

(共36张PPT)
C语言程序设计
第2章 顺序结构
本章要点:
第一节 语句
第二节 数据输出
第三节 数据输入
第一节 语句
一、表达式语句
在赋值表达式的尾部加上一个“;”号,就构成了表达式语句,也称为赋值语句。以下是几点说明:
1.赋值语句必须在最后出现分号,分号是语句中必不可少的部分,如“x+=10”是表达式,“x+=10;”是赋值语句。
2.任何赋值表达式都可以加上分号而称为赋值语句。
3.赋值语句是一种可执行语句,应当出现在函数的可执行部分。
※重点提示:分号是赋值语句中必不可少的部分,若没有分号,则只是一个赋值表达式而已。
二、空语句
只有一个分号构成的语句称为“空语句”。
如{;}就是一个空语句。
空语句在执行时不产生任何动作,但并不表示空语句没有用途。一般空语句可以用在循环体内对程序起“延时”作用。如:
{for(i=1;i<=100;i++) ; }
※重点提示:复合语句中最后一个语句的最后一个分号不能忽略。
三、复合语句
  在C语言中,可以用一对大括号“{}”把一些语句括起来构成复合语句,又称分程序。复合语句的形式如下:
  { 语句1;语句2;…;语句n;}
1.在复合语句内,不仅可以有执行语句,还可以有定义部分,定义部分应出现在可执行语句的前面。
2.复合语句中最后一个语句的最后一个分号不能忽略。
3.复合语句可以嵌套。即复合语句内部还可以包含其他复合语句。
四、顺序结构
一个程序中的语句将按照它们在程序中出现的顺序逐条执行,由这样的语句构成的程序结构称为顺序结构。
第二节 数据输出
一、 printf函数的一般调用形式
 printf函数是标准输出函数,功能是在终端设备上按指定格式进行输出。
  printf()函数的一般形式为:
  printf(“格式控制”,输出项序列)
 例如:printf(”a=%d,b=%c”,a,b)中,”a=%d,b=%c”称为格式控制字符串,a,b是输出项序列中的输出项,都是printf函数的参数
说明:
(1)输出控制是由双引号括起来的格式转换控制信息。
分为两种信息:1.用于说明的信息,计算机会原样输出;2.带有%的格式转换说明,用于指定输出数据的格式。
例如,printf(“a=%d,b=%d”,2,3);
(2) 输出数据列表包括需要输出的一些数据。
注意输出数据格式应该一致。
例如,printf(“%d,%f”,3.89,6);
(3)在输出控制中,格式说明的个数应该与输出项的个数相同。
注意:如果格式说明的个数少于输出项的个数,多余的输出项不予输出;
如果格式说明的个数多于输出项的个数,则对多余的格式说明将输出不定值。
例如,printf(“%d,%d”,2,3,4);
二、 printf函数中常用的格式说明
 “格式控制”部分是用双引号括起来的字符串,也称“转换控制字符串”,它包括三种信息:格式说明符、转义字符和普通字符。
1.格式字符
  格式说明符由%和格式字符组成,如%d、%f等。作用是转换输出数据的格式。对于不同类型的数据用不同的格式字符。下面详细介绍几种常用的格式字符。
① d格式字符。用来输出十进制整数。其用法如下:
(a)%d,按型数据的实际长度输出。
 例如:
 printf("%d,\n",x);
 如果x=789,则输出结果为:
 789
(b)%1d,输出长整型数据。例如:
  printf("%1d,\n",a);
 如果a被定义为:
  long int a=56789;
 则输出结果为:
  56789
  如果用%d格式输出,就会出错,因为整型数据的范围是-32768~32767。对超出此范围的long型数据应当用%1d格式输出。
(c)%-md,m是指定的输出字符宽度。如果数据的位数小于m,则输出共占m位,数据左靠齐,右边补空格,若省略“-”号,则右靠齐,左边补空格;如果数据的位数大于m,则按实际位数输出。例如:
  printf("%5d,%5d\n",a,b);
  如果a=7788,b=56789,则输出结果为: 7788,56789
② f格式字符。用来输出实数(包括单精度、双精度),以小数形式输出。其用法如下:
(a)%f,实数的整数部分全部输出,小数部分保留六位。需要指出的是,并非全部数字都是有效数字。单精度实数的有效位数一般是7位,双精度实数的有效位数一般是16位。
(b)%mf,输出的实数共占m位,小数部分保留六位。
(c)%.nf,输出的实数,总宽度按实际宽度,小数部分占n位。
(d)%-m.nf,输出的实数包括小数点在内共占m位,其中小数部分占n位。如果数据的实际宽度小于m,则左靠齐,右边补空格,省略“-”时,右靠齐,左边补空格。
 如:main()
{ float a=123.45;
printf(“%f,%11f,%.2f,%-10.3f\n”,a,a,a,a); }
 程序运行结果为:
 123.449997, 123.449997,123.45,123.450
  说明:a的值应该是123.45,但输出的结果却是123.449997,这是由于实数在内存中的存储误差引起的。
③ c格式字符。用来输出一个字符。例如:
char ch= 'a';
printf("%c",ch);
则输出一个字符‘a’。也可以指定输出字符的宽度,如:
printf("%2c",ch);
则输出‘a’,即ch变量输出占2列,第一列补空格。
④ s格式字符。用来输出一个字符串。其用法如下:
(a)%s,按原样输出一个字符串。例如:
printf("%s", "Happy New Year!");
则输出字符串:
Happy New Year!
(b)%-ms,与整数输出格式“%-md”类似。
(c)%m.ns,输出占m列,但只取字符串中左边n个字符。这n个字符输出在m列的右边,左边补空格。
(d)%-m.ns,n个字符输出在m列范围的左边,右边补空格。若n>m,则m自动取n值,即保证n个字符正常输出。
如:字符串输出示例
main()
{ 
printf(“%3s,%6.3s,%.2s,%-5.4s\n”,“Hello”,“Hello”,“Hello”,“Hello”); }
程序运行结果为:
Hello, Hel,He,Hell
表2.1 输出格式字符及其功能说明
格式字符 说 明
c 输出一个字符
d或i 输出带符号的十进制整数
o 以八进制无符号形式输出整形数(不带前导0)
x或X 以十六进制无符号形式输出整形数(不带前导),x输出小写字母,X输出大写字母
u 按无符号的十进制形式输出整型数
f 以带小数点的形式输出单精度和双精度数
E或e 以[-]m.dde(或E)±xx的指数形式输出浮点数。d的个数由精度指定,精度为0时小数部分不输出
G或g 由系统决定采用%f格式还是采用%e格式,以使输出宽度最小
s 输出字符串中的字符,直到遇到“\0”。或者输出由精度指定的字符数
p 输出变量的内存地址
% 打印一个%
2.附加格式字符
在%和上述格式字符之间可以插入以下几种附加符号,如下所示。
表3.2 输出常用附加格式字符
附加字符 功能说明
m(m为一正整数) 规定输出数据的最小宽度为m位
.n(n为一正整数) 对实数,表示输出的实数保留n位小数,对字符串,表示截取字符串的前n个字符
- 使输出的数据在域内向左靠齐,省略“-”时,向右靠齐
3.长度修饰符
  长度修饰符加在%和格式字符之间,对于长整型一定要加l(long),h可用于短整型(short)或无符号短整形数的输出。如printf(“%ld,\n”,a);
4.转义字符
  可以在printf函数中的“格式控制”部分使用“转义字符”,如“\n”、“\b”、“\f”、“\t”、“\r”、“\344”等。
※重点提示:如果想输出字符“%”,则应该在“格式控制”字符串中用连续两个%表示。
三、 调用printf函数时的注意事项
1.在格式控制字符串中,格式说明与输出项从左到右在类型上必须一一对应匹配。
 例如:
  printf("x=%f,c=%d",x,c);
 中的x与%f对应,c与%d对应。
2.在格式控制串中,格式说明与输出项的个数应相同,若格式说明少于输出项,则多余的输出项不输出,相反,对于多余的格式将输出不定值。
3.在格式控制串中,可以包含任意的合法字符(包括转义字符)。
4.输出项序列中可以是变量、常量或表达式。如果输出项是表达式时,则printf函数将先对其进行运算,然后输出它的运算结果。如:
 main()
 {
printf("x=%f",3*4.8+9/4-sqrt(2.0));
  }
 输出结果为:
  x=32784.400000
5.printf函数允许没有输出项序列部分。它表示输出一个字符串。此时printf函数成为如下格式:
  printf("输出字符串");
 例如:
  printf("Please input a number:");
 则输出:
  Please input a number:
6.printf函数的返回值通常是本次调用中输出字符的个数。
※重点提示:格式说明与输出项从左到右在类型上、个数上都必须一一对应匹配。
第三节 数据输入
一、scanf函数的一般调用格式
 scanf()函数的一般形式为:
 scanf(“格式控制”,输入项表)
  “格式控制”的含义同printf函数;“输入项地址序列”是由若干个变量地址(变量前加&号)组成的序列,各地址按排次序依次接收转换格式后的读入数据。
例如:
 main()
 { int a,b;
scanf("%d%d",&a,&b);
printf("%d,%d\n",a,b);
 }
 程序运行结果为:
 123 456<回车>
 123,456
 ※重点提示:输入项地址序列中的变量前需要加取地址符号”&”。
二、scanf函数中常用的格式说明
  在格式控制部分一般只包含“格式说明符”这一项内容。和printf函数中的格式说明符相似,以%开始,以一个格式字符结束,中间可以插入附加的字符。
1.scanf常用的格式字符。表3.3列出scanf函数常用的格式字符及其功能说明。
表2.3 scanf格式字符
格式字符 功能说明
d 以带符号的十进制形式输入整数正数
u 以无符号十进制形式输入整数
o 以八进制无符号形式输入整数
x 以十六进制无符号形式输入整数
f 以小数形式或指数形式输入实数
c 输入单一字符
s 输入一个字符串
2.附加格式字符。表3.3列出scanf函数的附加格式字符及其功能说明。
表2.4 scanf常用附加字符
格式字符 功能说明
l 用于输入长整型数据(用%ld,%lo,%lx)以及double型数据(用%lf或%le)
h 用于输入短整型数据(用%hd,%ho,%hx)
m(m表示一个正整数) 用于指定输入数据所占宽度(列数)为m
* 表示该输入项在读入后不赋给相应的变量
3.几点说明
(1)可以指定输入数据所占列数,系统自动按它截取所需数据。
(2)标准C在scanf()函数中不使用%u说明符,对unsigned型数据,以%d,%o,%x输入。
(3)在输入时若想跳过某个数据,可在%后加一个相应的“*”。
(4)输入数据时不能规定精度,如scanf(“%5.2d”,&x)是不合法的。
※重点提示:scanf函数输入的数据不能规定精度。
三、通过scanf函数从键盘输入数据
  通过scanf函数从键盘输入数据时,需要注意以下几点:
1.scanf函数中的输入项必须是“地址量”,它可以是一个变量的地址,也可以是数组的首地址,但不能是变量名。例如,如果定义了a,b为整型变量,则
  scanf(“%d,%d”,a,b);
  是不合法的,应将“a,b”改为“&a,&b”。请读者予以注意,这是初学者易出错的地方。
2.输入数据时,各个数据之间可以用空格“[”或Tab键或回车键作为间隔符。
3.除了空格、Tab键和回车键外,用户还可以自己指定其他字符作为输入间隔。需要注意的是,如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。
例如,对应语句:scanf(“%d,%d,%d”,&a,&b);
 输入方式应为:1,3<回车>
注意1后面是逗号,它与scanf函数中的“格式控制”中的逗号对应,若输入时不用逗号,而用空格或回车键等字符就不对。
4.特别需要注意的是,在使用格式说明符%c输入一个字符时,凡是从键盘输入的字符,包括空格、回车等均被作为有效字符接收。
例如对语句:scanf(“%c%c”,&c1,&c2);
  若输入:a b<回车>
 原意图是把字符'a'赋给c1,'b'赋给c2,而结果却是把[赋给了c2。因为%c只要求读入一个字符,后面不需要用空格作为两个字符间隔,因此[作为下一个字符赋给c2。
5.在输入数据时,遇以下情况时该数据认为结束:
① 遇空格、Tab键,或回车键。
② 按指定的宽度结束,如“%4d”,只取4列。
③ 遇非法输入。
※重点提示:scanf函数中的输入项必须是“地址量”,它可以是一个变量的地址,也可以是数组的首地址,但不能是变量名。
同课章节目录