第4章 最简单的C程序设计顺序程序设计_第1页
第4章 最简单的C程序设计顺序程序设计_第2页
第4章 最简单的C程序设计顺序程序设计_第3页
第4章 最简单的C程序设计顺序程序设计_第4页
第4章 最简单的C程序设计顺序程序设计_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1、第第4 4章章 最简单的最简单的C C程序设计程序设计顺序程序设计顺序程序设计 4.1 C4.1 C语句概述语句概述 4.1.1 C4.1.1 C语言语句分类语言语句分类: :1 、操作运算语句:用于描述计算机要执行的操作运算(如算术运算、赋值、输出等),由于C语言的操作运算用表达式进行,这类语句又叫表达式语句。2、流程控制语句:控制操作运算的执行顺序(第5、6章介绍)。(1)形成流程控制结构的语句a、选择结构控制语句:if语句、switch语句b、循环结构控制语句:while语句、dowhile语句、for语句(2)流程转向语句a、限定转向语句:break语句、continue语句、retu

2、rn语句b、自由转向语句:goto语句4.1.2 C4.1.2 C语言语句一览表语言语句一览表: : 赋值表达式语句 简单表达式语句 函数调用语句 表达式语句 空语句 逗号表达式(复合表达式)语句 单分支结构:if语句 选择结构 双分支结构:ifelse语句 基本语句 形成流程 控制语句 else if嵌套语句 控制结构 多分支结构 switch语句C 的语句 while语句语 循环结构 dowhile语句言 流程控 控制语句 for语句语 制语句 break语句句 限定转 continue语句 流程转 向语句 return语句 向语句 自由转向语句:goto语句 复合语句(就是用 把一些语句

3、括起来)4.1.3 表达式语句1、赋值语句(1)形成:将赋值表达式加上“;”号就构成了赋值语句;(2)由复合赋值运算符或自增、自减运算符组成的表达式也是赋值表达式。例如有如下一些赋值类表达式语句:a=b+c; a+=b; i+; -j; 等等。2、函数调用语句(由于表达式中可包含函数调用,单纯函数调用是表达式特例)形成:函数调用加“;”号,如scanf(); printf(); 等等。 3、空语句:没有内容的语句,只有一个“;”。例如:; /* 空语句 */ 作用:空语句不进行任何操作。是程序员为今后增加语句保留位置做的记号。4、逗号表达式语句:由逗号表达式加“;”组成,如: i=3,i+,+

4、i,i+5;其实,在C语言中,所有表达式加“;”都构成表达式语句,只是有些表达式语句(如3;或者a+b*c;)没有什么实际意义而已。4.1.44.1.4复合语句复合语句(语句块、分程序)1、构成:在函数的执行部分用一对花括号括起若干语句。如: a+; b*=a; printf(a=%d,b=%dn,a,b);注意:“”之后没有“;”!2、作用 (1)当作一条语句使用,一般用在只能使用一条语句,却又必须使用多条语句的地方。例如作为选择结构的一个分支或作为循环结构的循环体。 (2)当作函数中的一个独立部分,此时复合语句中除了有可执行语句外,在可执行语句的前面还可以有说明部分语句(如定义变量等),因

5、此叫做“分程序”。例如:main( )int a=2; int b; b=3; printf(“%dn”,a+b); 分程序注意:复合语句(分程序)中定义的变量只能在分程序中使用。4.2 顺序结构程序设计 1、顺序结构的组成 (1) 表达式语句 (2) 复合语句2、顺序结构与选择、循环结构的关系:可相互嵌套。 4.3 4.3 数据输入和输出及其在数据输入和输出及其在C C语言中的实现语言中的实现1、C语言输入和输出都是通过系统的库函数来完成的。2、C输入、输出库函数:(1)输入、输出字符函数:getchar()和putchar()(2)格式化输入、输出函数:scanf()和printf()(3

6、)输入、输出字符串函数:gets()和puts()注:这些库函数均是通过标准的输入和输出设备(键盘和显示器)输入和输出的。都包含在头文件stdio.h中,故在源文件开头需要预编译命令:#include “stdio.h”或#include。4.4 4.4 字符数据的输入输出函数字符数据的输入输出函数4.4.14.4.1字符输出函数字符输出函数putcharputchar( )( )1、调用格式:putchar(ch); /*ch是字符变量或字符常量*/2、作用:将字符ch输出到屏幕上。如:char c1=X; putchar(c1); putchar(Y); 输出XY。4.4.2 4.4.2

7、字符输入函数字符输入函数getchargetchar( )( )1、调用的一般格式:ch=getchar( ); /*ch是字符变量*/2、作用:通过键盘输入字符,存入缓冲区,给变量赋值。读入的字符包括各种字符(含空格、Tab和回车等,因此注意输入时不要随意输入空格,并注意回车的处理,否则变量得不到正确的字符)。注意:如果在一个函数中要调用如果在一个函数中要调用putcharputchar( )( )和和getchargetchar( )( ),应该在该函数的前面(或文本开,应该在该函数的前面(或文本开头)加上头)加上“包含命令包含命令”:#includestdio.h#include #in

8、clude main() int c; printf(Enter a character:); c=getchar(); printf(%c-hex%xn,c,c);运行结果:Enter a character:AA-hex414.5 4.5 格式输入与输出格式输入与输出4.5.14.5.1格式输出函数格式输出函数printfprintf()()1、一般调用格式:printf(格式控制字符串,输出项1,输出项2,)(1)“格式控制字符串”包括:a、格式说明:以%开头、格式字符(P32表3-2)结束,控制输出项的输出格式 。b、普通字符:ASCII码字符、汉字,原样输出。如a=、最大值=等。c、

9、转义字符,如 n 回车换行、t 控制到下一个制表站等。(2)输出项:可以是常量、变量、函数调用和表达式。2、格式说明(1)完整的格式说明 % + 0 # 整数1.整数2 l或h 格式字符 指定输出数据类型 格式终止符 长度修正:l:对整型指long 对实型指double h:指短整型 整数1:域宽(输出总字符数)适用各种类型 整数2:对实数为小数位数 对整数为数字个数: 大于实际个数前面补0 小于实际个数按实际个数输出 对字符串为输出字符的个数 对格式字符o(八进制)数字前加0 对格式字符x或X(十六进制)数字前加0 x或0X 对数值输出,右对齐时左空位补0(缺省补空格) 对数值输出,总输出符

10、号(+号或号) 缺省只输出号 左对齐输出,缺省按域宽右对齐输出 格式起始符(2)补充说明a、实数的精度(有效数字)由输出项类型控制(float 7位double 16位),对float型输出项用%lf格式不能增加精度; 输出实数的小数位数由“整数2”控制,增大“整数2”不能增加精度。 b、“整数1”表示域宽,“整数2”作用见上图两者均缺省情况下:对整数和字符串按实际字符数输出; 对实数(float和double):小数型:整数部分原样输出,默认输出6位小数,多余小数四舍五入处理。指数型:正数默认输出1位非0整数(负数有负号)、小数点、6位小数、5位指数(e或E、+或号及3位指数)共13个字符(

11、负数14个字符)。(vc环境,tc环境与上不同)指定域宽不足,按需增加域宽。指定域宽富余: 缺省右对齐: 无0控制:前加空格; 有0控制:数值型前加0填齐; 其它类型前加空格。 有控制左对齐,按域宽后面加空格。例 int a=1234; float f=123.456; float b=54.35678432 char ch=a; printf(“%d,%f,%e”,a,f,b); printf(“%8d,%2dn”,a,a); printf(“%8f,%8.1f,%.2f,%.2e,%.8en”,f,f,f,f,f); printf(“%3cn”,ch);例 m.n(注:VC+ 中%m.ne

12、 n指数值部分小数的位数)运行 1234,123.456000,5.435684e+001结果: -1234,1234 123.456000,-123.5,123.46,1.23e+002,1.23456000e+002 -a例 static char a=“Hello,world!” printf(“%sn%15sn%10.5sn%2.5sn%.3sn”,a,a,a,a,a);运行结果:Hello,world! -Hello,world! -Hello Hello Hel 例 int a=1234; float f=123.456; static char c=“Hello,world!”;

13、 printf(“%8d,%-8dn”,a,a); printf(“%10.2f,%-10.1fn”,f,f); printf(“%10.5s,%-10.3sn”,c,c);运行结果: -1234,1234- -123.46,123.5- -Hello,Hel- 例 -例 int a=1234; float f=123.456; printf(“%08dn”,a); printf(“%010.2fn”,f); printf(“%+08dn”,a); printf(“%+010.2fn”,f); 例 0 、+例 int a=123; printf(“%o,%#6o,%X,%#6Xn”,a,a,a

14、,a); 例 #/00001234/0000123.46/+0001234/+000123.46/173,-0173,7B,-0X7B3、输出:从右向左计算输出项后,按格式说明的顺序、类型和要求对应输出。(1)格式说明和输出项的个数应相同,如不匹配系统并不报错,将不能正确输出。 a、格式说明的个数少于输出项的个数,多余的输出项将不输出; b、格式说明的个数多于输出项的个数,多余的格式说明将输出随机的值。(2)在“格式控制字符串”中可用%输出一个%。4.5.2格式输入函数scanf()1、一般调用形式: scanf(格式控制字符串,地址1,地址2,)(1)“格式控制字符串”包括:a、格式说明:控

15、制输入项的类型等。b、数据分隔符,如“,”、空格等。用了分隔符在输入时就必须用该字符分隔数据,否则出错;可以不用数据分隔符,此时在输入数值数据时必须用空格(Tab键或回车)分隔数据,输入字符数据不能用空格(Tab键或回车)!(2)变量“地址”形式为:&变量名(3)scanf函数的作用:通过键盘输入数据到缓冲区,按照各格式说明取得数据存放到对应的内存地址中。例如有程序段:int a,b;scanf(%d%d,&a,&b);执行的结果是:通过键盘输入2个十进制有符号整数,例如:123 -456分别送到变量a、b的内存地址中去。2、格式控制字符串(1)输入一个数据的较完整的格

16、式说明: % * 整数 l或h 格式字符 指定输入数据类型(P37表3-3) 格式终止符(一般只能用小写) 长度修正:l:对整型指long (l必须增加) 对实型指double(l必须增加) h:指短整型(l必须增加) 输入域宽说明(注意:无小数位数) 赋值抑制符,跳过对应本项输入的数据 格式说明起始符例 int k;float f; scanf(“%3d%*4d%f”,&k,&f); 输入 12345678765.43 则123k, 8765.43f例 char c1,c2; scanf(“%3c%2c”,&c1,&c2); 输入 abcde 则ac1, d

17、c2(2)注意事项a、在格式控制字符串中,格式说明的类型与输入项的类型应一 一对应匹配。如果类型不匹配,系统并不报错,但得不到正确的数据。b、在格式控制字符串中,格式说明的个数应与 输入项的个数相同。 若格式说明的个数少于输入项的个数,按格式说明的个数输入前面的输入项,多余的输入项没有输入数据; 若格式说明的个数多于输入项的个数,按格式说明的个数输入完后结束输入,多余的数据留给下次输入用。3、分隔输入数据的方法: a、按格式字符取得数据,当遇到类型不符的 输入时,认为一数据项结束。例、main( )int a;char b;float c;printf(input a b c:);scanf(

18、%d%c%f,&a,&b,&c);printf(na=%d,b=%c,c=%f,a,b,c);运行时输入及结果为:input a b c:1234r1234.567输 出:a=1234, b=r, c=1234.567017b、当格式说明中有域宽时,按域宽分隔出数据项。例、main( )int a; float b,c;scanf(%2d%3f%4f,&a,&b,&c);printf(a=%d,b=%f,c=%fn ,a,b,c);运行时输入:123456.78987654321输 出:a=12, b=345.000000, c=6.780000

19、c、用分隔符分隔数据在格式控制字符串中没有分隔符,输入时可用空格、Tab键、回车键分隔数据(均为默认分隔符,无须在格式控制字符串中加入);注意:字符型数据。 在格式控制字符串中有分隔符(如逗号等),输入时要原样输入,如果输错,将不能得到正确的数据。例 scanf(“%d,%d”,&a,&b) 输入 3,4 则3a, 4 b例 scanf(“%d%o%x”,&a,&b,&c); printf(“a=%d,b=%d,c=%dn”,a,b,c); 输入 123 123 123 输出 a=123,b=83,c=291例 scanf(“a=%d,b=%d,c=%d

20、”,&a,&b,&c); 输入 a=12,b=24,c=36 综合应用实例综合应用实例:例 从键盘输入大写字母,用小写字母输出#include stdio.hmain() char c1,c2; c1=getchar(); printf(%c,%dn,c1,c1); c2=c1+32; printf(%c,%dn,c2,c2);输入:A 输出:A,65 a,97例 交换x、y的值main()int x,y,t; printf(“Enter x&y:n”); scanf(“%d %d”,&x,&y); printf(“x=%d y=%dn”,x,y

21、); t=x;x=y;y=t; printf(“x=%d y=%dn”,x,y);【例【例3-18】分析下面程序的运行结果分析下面程序的运行结果(P45)#include main() int x=1,y=5; printf(x=%d,y=%d,x,y); 【例【例3-19】 分析下面程序的运行结果分析下面程序的运行结果(P45)#include main() int a,b; a=0 x41; /* 65 */ b=+a; /* 66 */ printf(%d,%dn,a-,-b); printf(%c,%cn,+a,b+); 实验三实验三1、使用函数getchar()与putchar()编

22、写将B,e,i,j,i,n,g以单个字符赋给变量后显示beijing的程序2、使用函数printf()编制程序显示下面图形 a b b b c c c c c3、用下面的scanf函数输入数据,使a=10,b=20, c1=A,c2=a,x=1.5,y=-3.75,z=67.8,请问在键盘上如何输入数据?并用printf函数将各个变量输出 scanf(“%5d%5d%c%c%f%f%*f%f”,&a,&b,&c1,&c2, &x,&y,&z);习题课1、 scanf(“%c%c%c”,&c1,&c2,&c3); 若

23、输入abc 则ac1, c2, b c32、 int x; char ch; scanf(“%d”,&x); scanf(“%c”,&ch); printf(“x=%d,ch=%dn”,x,ch);执行:123输出:x=123,ch=103、已知 int k1,k2,k3,k4,为使k1=10,k3=10且k2=20,k4=20,则对应下列scanf函数调用语句的正确输入方式是( ) scanf(“%d%d”,&k1,&k2); scanf(“%d,%d”,&k3,&k4);A.1020 B.10_20 1020 10_20 C.10,20 D.

24、10_20 10,20 10,204、 已知 char ch; int k; 为了使ch=c,k=555,正确的scanf函数调用语句和相应的数据输入是( )A.scanf(“%3c%3d”,&ch,&k); abc_555B.scanf(“%3c%*d%3d”,&ch,&k); cba_555_123C.scanf(“ch=%3c%*dk=%3d”,&ch,&k); ch=cba_123_k=555D.scanf(“%*d%d%c”,&k,&ch); 12_555_c 5、已有如下定义和输入语句,若要求a1,a2,c1,c2的值

25、分别为10,20,A,B,当从第一列开始输入数据时,正确的数据输入方式是( )int a1,a2; char c1,c2;scanf(“%d%d”,&a1,&a2);scanf(“%c%c”,&c1,&c2);A. 1020AB B. 10-20B. ABC. C. 10-20-AB D. 10-20AB6、根据定义和数据的输入方式,输入语句的正确形式为()已有定义:float f1,f2;数据的输入方式:4.52 3.5A. scanf(“%f, %f”,&f1,&f2);B. B. scanf(“%f%f”,&f1,&f2);

26、C. C. scanf(“%3.2f-%2.1f”,&f1,&f2);D. D.scanf(“%3.2f%2.1f”,&f1,&f2);7、执行以下程序时,若从第一列开始输入数据,为使变量a=3,b=7,x=8.5,y=71.82,c1=A,c2=a,正确的数据输入形式是:main()int a,b; float x,y; char c1,c2; scanf(“a=%d-b=%d”,&a,&b); scanf(“x=%f-y=%f”,&x,&y); scanf(“c1=%c-c2=%c”,&c1,&c2); printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c”, a,b,x,y,c1,c2); 8、以下程序不用第三个变量,实现将两个数进行对调的操作,请填空 #include main()int a,b; scanf(“%d%d”,&a,&b); printf(“a=%d b=%dn”,a,b); a=_;b=_;a=_; printf(“a=%db=%dn

温馨提示

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

评论

0/150

提交评论