第4章 顺序结构程序设计
进行计算机程序设计时,通常采用三种不同的程序结构,即顺序结构、选择结构和循环结构。其中顺序结构是一种最基本、最简单的程序结构。本章介绍C语言的各类语句,包括控制语句、表达式语句等;格式输入函数printf和格式输入函数scanf等函数的一般形式和格式说明;算法及常用的算法表示方法。
4.1 C语言语句
4.1.1 控制语句
完成一定功能的语句称为控制语句。C语言有9种控制语句,参见表4-1。
表4-1 C语言的控制语句
语句 if( )~else~ for( )~ while( )~ do ~while( ) continue break switch goto return 条件语句 循环语句 循环语句 循环语句 结束本次循环语句 中止执行switc或循环语句 多分支选择语句 转向语句 从函数返回语句 名称 上面9种语句的括号()表示其中是一个条件,~表示内嵌的语句。
4.1.2 表达式语句
由一个表达式构成一个语句,称为表达式语句。表达式语句由表达式加上分号“;”组成。一般形式为:
表达式;
表达式语句可分为赋值语句、函数调用语句、空语句三种基本类型。 1.赋值语句
赋值语句由赋值表达式后跟一个分号组成。 例如:a=3; 是一个赋值语句。 2.函数调用语句
函数调用语句由函数调用表达式后跟一个分号组成。
1
例如:printf(“This is a C statement.”);是由标准输出函数printf构成的函数调用语句。
3.空语句
空语句是只有一个分号而没有表达式的语句。其形式为: ;
它不产生任何操作运算,只用为形式上的语句,被填充到控制结构中。
4.1.3特殊语句
C语言中还包括一些其他语句,如复合语句等。
把多个语句用花括号{}括起来组成的语句称复合语句。在程序中可以把复合语句看成是一条语句,而不是多条语句。
例如: {x=y+z; a=b+c;
printf(“%d %d”,x,a); }
是一条复合语句,复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不能加分号。注意,在C语言的语法中,只要出现语句的地方均可以出现复合语句。
4.2 printf函数
与其他高级语言不同的是,C语言没有提供专门的输入输出语句,所有的输入输出都是通过调用标准库函数中的输入输出函数来实现的。本节介绍向标准输出设备输出数据的printf函数。
printf函数称为格式输出函数,其功能是按用户指定的格式,把指定的数据输出到标准输出设备上。
4.2.1 printf函数的一般形式
printf函数是一个标准库函数,它的函数原型包含在标准输入输出头文件“stdio.h”中,printf函数的一般形式为:
printf(”格式控制”,输出表列) 如:printf(“hello”);
printf(“The area is :%f”,area);
4.2.2转义字符的使用
C语言中允许使用一种特殊形式的字符常量,就以一个“\\”开头的字符序列,称为转义字符。常用的转义字符参见表4-2。
2
表4-2 转义字符
字符形式 \\n \\t 含 义 换行,将当前位置移到下一行开头 横向跳格(即跳到下一个输出区,一个输出区占8列) \\b \\r \\f \\\\ \\’ \\” \\ddd \\xhh 退格,将当前位置移到前一列 Enter,将当前位置移到本行开头 换页,将当前位置多到下页开头 反斜杠字符“、” 单引号字符 双引号字符 1到3位8进制数所代表的字符 1到2位16进制数所代表的字符 8 13 12 92 39 34 ASCII代码 10 9 【例4-1】 转义字符的使用
main( ) {char a,b,c; a=’n’; b=’e’;
c=’\\167’; /* 8进制数167代表的字符w */ printf(“%c%c%c\\n”,a,b,c); /* 以字符格式输出 */
printf(“%c\\t%c\\t%c\\n”,a,b,c); /* 每输出一个字符跳到下一输出区 */ printf(“%c\\n%c\\n%c\\n”,a,b,c); /* 每输出一个字符后换行 */ }
运行结果如下:
new
n□□□□□□□e□□□□□□□w “□”代表空格,下同 n e w
4.2.3 printf函数的调用
printf函数是格式输出函数,其功能是按照指定的格式来控制输出参数在标准输出设备上输出。格式控制用于指定输出参数的输出格式,格式控制由两部分组成:格式说明和普通字符。普通字符(包括转义字符)将被简单地复制显示(或执行)。一个格式说明项将引起输出参数项的转换与显示。
例如,以下程序
main( )
3
{int a=3,b=4;
printf(“a=%d□b=%d\\n”,a,b); }
在上面printf语句中,“%d”是格式说明(格式说明总是以“%”开头),“a=”、“□”、“b=”为普通字符,按原样输出,“\\n”为转义字符,即Enter换行,使下次输出在下一行的开始处。上例的输出结果为:
a=3□b=4 【例4-2】 示例程序
main( )
{char ch1=’a’,ch2=’b’;
printf(“ch1=%c,ch2=%c\\n”,ch1,ch2); printf(“ch1=%d,ch2=%d\\n”,ch1,ch2); }
程序运行结果为:
ch1=a,ch2=b ch1=97,ch2=98
在Turbo C中,printf函数输出表列中的求值顺序是从右到左进行的。
4.2.4 格式字符串
在Turbo C中printf函数格式字符串一般形式为:
% ↓ [开始符]
?
↓
m ↓
.
n ↓ [精度指示符]
h/l ↓ [长度修正符]
格式字符 ↓
[格式转换字符]
[标志字符] [宽度指示符]
说明:
⑴格式字符:格式字符用来表示输出数据的类型,在格式控制字符串不能略,其常用符号和含义参见表4-3。
表4-3 printf格式字符
格式字符 d,i o x,X 说明 以带符号的十进制形式输出整数(正数不输出符号) 以八进制无符号形式输出整数(不输出前导符0) 以十六进制无符号形式输出整数(不输出前导符0x),用x则输出十六进制数的a~f时以小写形式输出;用X时,则以大写字母输出 u c s f e,E 以无符号十进制形式输出整数 以字符形式输出,只输出一个字符 输出字符串 以小数形式输出单、双精度数,隐含输出6位小数。 以指数“e”或“E”形式输出实数。(如1.2e+02或1.2E+02) 4
g,G 选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0。用G时,若以指数形式输出,则指数以大写表示 ⑵标志字符:标志字符包括-、+、#三种,具体含义参见表4-4。
表4-4 printf标志字符
字符 - = # 意义 输出结果左对齐,右边填空格;缺省则输出结果右对齐,左边填空格或零 输出值为正时冠以“+”号,为负时冠以“-”号 八进制输出时加前缀0;十六进制输出时加前缀0x 例如,以下语句输出六位十进制整数:
printf(“m\\n”,111); printf(“%-6d\\n”,111);
输出结果为:
□□□111 (输出右对齐,左边填空格) 111□□□ (输出左对齐,右边填空格)
例如,语句printf(“%+d,%+d\\n”,111,-111); 输出结果为:
+111,-111
输出八进制或十六进制时,可以使用以下形式:
printf(“%#o,%#x\\n”,10,16);
输出结果为:
012,0x10
⑶宽度指标符:用来设置输出数据项的最小宽度,通常用十进制整数来表示输出的位数。如果输出数据项所需实际位数多于指定宽度,则按实际位数输出,如果实际位数少于指定的宽度则用空格填补。示例如表4-5所示。
表4-5 示例程序
输出语句 printf(“%d\\n”,888); printf(“m\\n”,888); printf(“%f\\n”,888.88); printf(“f\\n”,888.88); printf(“%g\\n”,888.88); printf(“%8g\\n”,888.88); 输出结果 888(按实际需要宽度输出) □□□888(输出右对齐,左边填空格) 888.880000(按实际需要宽度输出) □□888.880000(输出右对齐,左边填空格) 888.88(%f格式比采用%e格式输出宽度小) □□888.88(输出右对齐,左边填空格) ⑷精度指示符:以“.”开头,用十进制整数指精度。对于float或double类型的浮点数可以用“m.n”的形式在指定宽度的同时来指定其精度。其中,“m”用以指定输出数据所占总的宽度,“n”称为精度。示例如表4-6所示。
表4-6 示例程序
5
第4章顺序结构程序设计(精)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)