版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4顺序结构程序设计第章从第2章中我们了解到,无论多么复杂的程序,都可分解为顺序、选择、循环这三种基本结构,而顺序结构是三种结构中最基本、最简单的结构,它按照语句的先后顺序依次执行。此外,很多程序运行时都需要输入和输出数据,此时就要用到C语言提供的输入语句和输出语句了。本章首先介绍了C语言中语句的类型,然后介绍了4种常用的输入输出函数,最后给出了三个例子,让读者学会用简单的C语句进行顺序结构程序设计。学习目标了解C语句的概念与类型掌握格式输入输出函数的使用方法掌握字符输入输出函数的使用方法掌握编写简单顺序结构程序的方法C语句概述4.1格式输入输出4.2字符输入输出4.3应用举例4.4常见错误分析4.5目录CONTENTSPART4.1C语句概述C语言中的语句是用来向计算机系统发出操作指令的,所以说,语句是用来完成一定操作任务的。一个实际的程序应该包含若干条语句。4.1C语句概述
提示严格来讲,程序中声明部分的内容不应称为语句。例如,“inta;”不是一条C语句,因为它不产生机器操作,而只是对变量的定义。但是,为了方便讲解,我们对两者并未进行严格区分。总体而言,C语句可以分为以下五类。4.1C语句概述表达式语句是由一个表达式加上分号组成。其一般形式为:表达式;执行表达式语句就是计算表达式的值。例如,以下为赋值语句:x=y+z;a=520;又如:y+z;这是一条加法运算语句,但计算结果不能保留,无实际意义。14.1C语句概述函数调用语句由一个函数调用加上分号组成。其一般形式为:函数名(实际参数列表);执行函数调用语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,求取函数值(详见第8章)。例如,调用printf函数,输出字符串。printf("Hello!"); /*调用名为printf的函数*/24.1C语句概述控制语句用于控制程序的执行流程,它们由特定的语句定义符组成。C语言有九种控制语句,可分为以下三类:(1)条件判断语句:if-else语句、switch-case语句。(2)循环执行语句:while语句、for语句、do-while语句。(3)转向语句:break语句、goto语句、continue语句、return语句。例如,if-else语句具体可写成:if(x>y) printf("x\n");else printf("y\n");其中x>y是一个“判别条件”,printf("x\n");和printf("y\n");是语句,这两条语句内嵌在if-else语句中,其作用是:先判断“x>y”是否成立,如果成立,输出x,否则输出y。34.1C语句概述把多条语句用大括号{}括起来组成的一个语句称复合语句。在程序中可把复合语句看成是单条语句,例如:{ x=y+z; a=b+c; printf("%d%d",x,a);}4
提示复合语句内的各条语句都必须以分号结尾,在大括号“}”外不能加分号。4.1C语句概述只有分号组成的语句称为空语句。空语句是什么也不执行的语句。在程序中,空语句可用来作空循环体。例如:while(getchar()!='\n');本语句的功能是,只要从键盘输入的字符不是回车则重新输入。这里的循环体为空语句。5PART4.2格式输入输出4.2格式输入输出C语言本身没有提供输入输出语句,输入和输出操作由C函数库中的函数来实现。在使用系统库函数时,要使用预编译命令“#include”将有关的“头文件”包含进来。本节将介绍最常用的标准输入输出函数——格式输入输出函数,这些函数包含在“stdio.h”文件中,故在程序开头应该添加预编译命令:#include<stdio.h>或#include"stdio.h"
名师点睛在初学本节内容时,读者不必花许多精力去探究每个细节,重点在掌握最常用的一些规则。其他部分可在需要时随时查阅。学习这部分内容时最好边看书边上机练习,通过编写和调试程序逐步深入地掌握输入输出的应用。4.2格式输入输出在前面各章节中已多次用到了printf函数(格式输出函数),它的作用是将指定的数据按指定的格式输出到显示器上。4.2.1格式输出——printf函数格式输出函数printf,其一般格式为:printf("格式控制",输出项列表);例如:printf("a=%d,b=%f",a,b);14.2格式输入输出括号内包括两部分内容:(1)“格式控制”是用双撇号括起来的一个字符串,称为“转换控制字符串”。它包括两个信息:①格式声明。格式声明由“%”和格式字符组成,如%d、%f等。它的作用是以指定的格式输出数据。②普通字符。普通字符即需要原样输出的字符,例如,上面printf函数双撇号内的“a=”、“b=”及中间的逗号都是普通字符,会原样输出到屏幕上。(2)“输出项列表”是程序需要输出的一些数据,可以是常量、变量或表达式。输出项列表中给出了各个输出项,要求格式声明和各输出项在数量和类型上应该一一对应。例如,以下的printf函数中,第一个“%d”与变量a对应,第二个“%c”与变量b对应,第三个“%d”与表达式a+b对应。4.2.1格式输出——printf函数4.2格式输入输出4.2.1格式输出——printf函数下面,我们重点介绍一下格式声明这部分内容。格式声明一般形式为:%[标志][0][输出最小宽度][.精度][长度]格式字符其中方括号[]中的项为可选项。也可以表示为:%[±][0][m][.n][l或h]格式字符24.2格式输入输出4.2.1格式输出——printf函数各项的意义介绍如下:标志字符为“-”或“+”,指定输出数据的对齐方式:指定“+”时,输出右对齐;指定“-”时,输出左对齐;不指定标志时缺省为“+”,默认右对齐。标志1用十进制整数m来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出;若实际位数少于定义的宽度,则补空格或0(如在m前有数字0,则补0)。输出最小宽度2精度格式符以“.”开头,后跟十进制整数n。意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。4.2格式输入输出4.2.1格式输出——printf函数3精度长度格式符有h和l两种,h表示按短整型输出,l表示按长整型输出。4长度4.2格式输入输出4.2.1格式输出——printf函数格式字符用来表示输出数据的类型,各种格式字符及其功能说明如表所示。5格式字符格式字符功能说明d以十进制形式输出带符号整数(正数不输出符号)o以八进制形式输出无符号整数(不输出前缀0)x,X以十六进制形式输出无符号整数(不输出前缀0x)。x表示以小写字母输出十六进制数的a~f,X表示以大写字母输出十六进制数的A~Fu以十进制形式输出无符号整数f以小数形式输出单、双精度实数,隐含输出6位小数e,E以指数形式输出单、双精度实数。用e时,指数以“e”表示(如2.3e+003),用E时指数以“E”表示(如2.3E+003)g,G以%f或%e中较短的输出宽度输出单、双精度实数,不输出无意义的0。用G时,若以指数形式输出,指数用大写表示c输出单个字符s输出字符串4.2格式输入输出4.2.1格式输出——printf函数使用格式输出函数printf输出不同类型变量。#include<stdio.h>intmain(){ inta=15; /*定义整型变量a并赋值*/ floatb=12.3456; /*定义单精度型变量b并赋值*/ doublec=12345678.1234567; /*定义双精度型变量c并赋值*/ chard='p'; /*定义字符型变量d并赋值*/ printf("十进制a=%d,八进制a=%o,十六进制a=%x\n",a,a,a);/*输出变量a的十进制、八进制和十六进制形式*/ printf("b=%f\n",b); /*输出变量b*/ printf("c=%f,c=%e\n",c,c); /*输出变量c的小数形式和指数形式*/ printf("d=%c\n",d); /*输出字符变量d*/ printf("%s\n","IloveC"); /*输出字符串*/ return0; /*函数返回值0*/}4.2格式输入输出4.2.1格式输出——printf函数程序运行结果如图所示。4.2格式输入输出4.2.1格式输出——printf函数在程序中定义的整型变量a,输出时可以用不同的格式字符输出a的十进制数(%d)、八进制数(%o)和十六进制数(%x)。输出单精度和双精度小数时都可以用“%f”,若想以指数形式输出单精度型和双精度型数,可以用“%e”。此外,可以用“%c”输出单个字符,用“%s”输出字符串。需要注意的是,输出字符串时,字符串需要用双撇号括起来。4.2格式输入输出4.2.1格式输出——printf函数在printf函数中使用附加符号。#include<stdio.h>intmain(){ inta=15; /*定义整型变量a并赋值*/ doubleb=12345678.1234567; /*定义双精度型变量b并赋值*/ printf("a=%5d,a=%-5d,a=%05d\n",a,a,a); /*使用m控制输出位数,用-左对齐, 空位补0*/ printf("b=%f,b=%lf,b=%8.3f\n",b,b,b); /*输出b,用m.n控制输出的长度和 小数点位数*/ printf("%15s\n","IloveC"); /*使用m控制输出字符串长度*/ printf("%-15.5s\n","IloveC"); /*使用-m.n进行左对齐、限制字符串 长度和字符位数*/ return0; /*函数返回值0*/}4.2格式输入输出4.2.1格式输出——printf函数程序运行结果如图所示。4.2格式输入输出4.2.1格式输出——printf函数输出变量a时,“%5d”表示输出宽度为5,而a值为15,只有两位,故补三个空格;“%-5d”表示输出宽度为5并且左对齐,因此后补三个空格;“%05d”表示输出宽度为5并用“0”来补空位。输出变量b时,“%f”和“%lf”格式的输出相同,说明符号“l”对“f”类型无影响。“%8.3f”表示输出宽度为8,精度为3,由于实际长度超过8位,故应按实际位数输出,小数位数超过3位部分被截去。输出字符串时,“%15s”表示输出字符串宽度为15,如果字符串本身长度不足15,则用空格左补齐,可以看到“IloveC”前存在7个空格。“%-15.5s”表示输出宽度虽为15,但这里指定了精度“.5”,也就是说指定了输出字符的个数为5,并且用“-”指定了左对齐,所以输出5个字符“Ilov”,后面还有10个空格。4.2格式输入输出格式输入函数scanf的作用是将数据按规定的格式从键盘上读入到指定变量中。4.2.2格式输入——scanf函数格式输入函数scanf的一般格式为:scanf("格式控制",输入项地址列表);例如:scanf("a=%d,b=%f",&a,&b);14.2格式输入输出括号内包括两部分内容:4.2.2格式输入——scanf函数(1)“格式控制”与printf函数类似,也包含两部分内容:格式声明与普通字符。格式声明用于规定输入的格式(如%d、%f等),如输入数据的类型、长度等;普通字符是需按原样输入的字符,如前面的“a=”、“b=”及中间的逗号。(2)输入项地址列表,由需要输入变量的地址组成。变量的地址需用取地址运算符“&”得到。多个输入项之间用逗号隔开,同样要求格式声明和各输入项在数量和类型上一一对应。4.2格式输入输出4.2.2格式输入——scanf函数scanf函数中的格式声明与printf函数中的格式声明类似,以“%”开始,以一个格式字符结束,中间可以插入附加的符号。其形式为:%[m][l或h]格式字符其中方括号中为可选项,可以没有,但格式字符不能缺少。24.2格式输入输出4.2.2格式输入——scanf函数1格式字符表中列出了scanf函数中常用的格式字符,它们的用法和printf函数中的用法类似。格式字符功能说明d用来输入十进制带符号整数o用来输入无符号的八进制整数x,X用来输入无符号的十六进制整数(大小写作用相同)4.2格式输入输出4.2.2格式输入——scanf函数格式字符功能说明u用来输入无符号的十进制整数f用来输入实数,可以用小数或指数形式输入e,E,g,G与f作用相同,e和f、g可以相互替换(大小写作用相同)c用来输入单个字符s用来输入字符串4.2格式输入输出4.2.2格式输入——scanf函数2长度l或hl表示输入长整型或双精度型数据,h表示输入短整型数据。例如:%ld、%lo、%lx表示输入数据为长整型(十进制、八进制、十六进制);%lf、%le表示输入数据为双精度型(小数形式、指数形式);%hd、%ho、%hx表示输入数据为短整型。3数据宽度mm为十进制整数,用于指定输入数据的宽度(即数字个数)。例如:scanf("%4d",&a);如果输入:123456↙则只读入4位给变量a,即a为1234,后面的5、6被舍弃。如输入小于4位,则不影响。对指定了宽度的格式输入,数据之间可以无分隔符,将根据各自宽度来读入。例如:scanf("%3d%3d",&a,&b);输入:123456↙则a等于123,b等于456。4.2格式输入输出4.2.2格式输入——scanf函数
提示对于浮点型数据,数据宽度为数据的整体宽度,包括小数点在内,即数据宽度m=整数位数+1(小数点)+小数位数。格式输入函数只能指定数据整体宽度,无法指定小数位数,这是与格式输出函数printf不同。例如:scanf("%3f%3f",&a,&b);输入:1.23.4↙则a等于1.200000,b等于3.400000,如输入:1234.5↙则a等于123.000000,b等于4.500000,如输入:1.234.5↙则a等于1.200000,b等于34.000000。4.2格式输入输出4.2.2格式输入——scanf函数利用scanf函数从键盘读入数据时,需注意:(1)多个数据间可用空格键、回车键或【Tab】键进行分隔,最后以回车键结束输入。例如:scanf("%d%d",&a,&b);如想令a为12,b为34,正确的输入方式为:1234↙或:12↙34↙或:12<TAB>34↙以上三种方式皆可。3
提示对于整型、浮点型变量来说,数据之间必须用分隔符分开,否则可能存在分辨错误。例如,如果上面的输入为:1234↙由于此时未加分隔符,则a将读入1234,b没有输入,出现错误。4.2格式输入输出4.2.2格式输入——scanf函数一般来讲,由于每个字符型变量对应一个字符,不存在二义性,因此字符的输入除非格式符中有空格或者其他分隔符,否则不可以用分隔符。例如:scanf("%c%c",&a,&b);可输入:AB↙如输入(A和B之间有空格):AB↙则相当于a读入了字符“A”,而b读入了“空格”,意义完全不一样了。如在两个格式符中加入空格,即改为:scanf("%c%c",&a,&b);应输入(A和B之间有空格):AB↙4.2格式输入输出4.2.2格式输入——scanf函数(2)输入数据个数与顺序要与scanf函数规定的一致。(3)如果“格式控制”中有普通字符,就必须按原样输入,否则可能发生严重错误。如前面的:scanf("a=%d,b=%f",&a,&b);如想令a为3,b为4,则必须完整输入:a=3,b=4↙其中的“a=”、“b=”及逗号都必须原样输入,否则会出错。如果scanf函数为:scanf("a=%fb=%fc=%f",&a,&b,&c);由于在两个%f间有两个空格,因此在输入时,两个数据间必须有两个或更多的空格符号。例如:a=1b=2c=3↙PART4.3字符输入输出除了可以用scanf函数和printf函数输入输出字符外,C函数库还提供了一些专门用于输入输出字符的函数,下面我们将进行详细介绍。4.3字符输入输出4.3.1字符输出——putchar函数字符输出函数putchar的功能是向输出设备输出一个字符,其一般格式为:putchar(c);c为欲输出的字符常量或变量,亦可为整型常量或变量(ASCII码)。输出ABC三个字符。输出三个字符,可用三次putchar函数进行输出,这里我们分别用字符变量、整型变量和字符常量作为putchar的参数来进行输出。4.3字符输入输出4.3.1字符输出——putchar函数#include<stdio.h>intmain(){ chara='A'; /*定义字符型变量a并赋初值'A'*/ intb=66; /*定义整型变量b并赋初值66*/ putchar(a); /*输出变量a的值*/ putchar(b); /*输出变量b的值*/ putchar('C'); /*输出字符'C'*/ putchar('\n'); /*输出换行符*/ return0; /*函数返回值0*/}4.3字符输入输出4.3.1字符输出——putchar函数程序运行结果如图所示。
提示可以用putchar函数输出转义字符,例如:putchar('\n'); /*输出换行符*/putchar('\101'); /*输出字符A,因为八进制的101等于十进制的65*/putchar('\''); /*输出单撇号*/4.3字符输入输出4.3.2字符输入——getchar函数字符输入函数getchar的功能是从输入设备上读入一个字符,其一般格式为:getchar();该函数的返回值为所读入的字符,所以一般与赋值语句联合使用,将读取的字符赋给变量,例如:charc; /*定义字符变量c*/c=getchar(); /*从键盘读入一个字符并赋值给变量c*/
提示getchar函数只读取单个字符,如果输入多于一个字符,则只读取第一个字符。4.3字符输入输出4.3.2字符输入——getchar函数从键盘输入ABC三个字符,然后把他们输出到屏幕。用三个getchar函数先后从键盘向计算机输入ABC这三个字符赋给变量a、b和c,然后用putchar输出。4.3字符输入输出4.3.2字符输入——getchar函数#include<stdio.h>intmain(){ chara,b,c; /*定义字符型变量a,b,c*/ a=getchar(); /*输入一个字符给变量a*/ b=getchar(); /*输入一个字符给变量b*/ c=getchar(); /*输入一个字符给变量c*/ putchar(a); /*输出变量a的值*/ putchar(b); /*输出变量b的值*/ putchar(c); /*输出变量c的值*/ putchar('\n'); /*输出换行符*/ return0; /*函数返回值0*/}4.3字符输入输出4.3.2字符输入——getchar函数程序运行结果如图所示。4.3字符输入输出4.3.2字符输入——getchar函数在连续输入ABC并按回车键后,字符才送到计算机中,然后输出ABC三个字符。如果在程序运行时,在输入一个字符后马上按回车键,将会得到图所示结果。这是因为,第一行输入的不是一个字符A,而是两个字符:A和换行符,其中A赋给了变量a,换行符赋给了变量b;第二行接着输入B赋给了变量c。因此,在用putchar函数输出变量a,b,c的值时,就输出了字符A、换行符和字符B,最后执行putchar('\n');进行换行。PART4.4应用举例通过这几章的学习,我们已经有了初步编写程序的能力,综合前面的知识,我们再介绍几个顺序结构的应用程序。4.4应用举例4.4.1输出字符表情编写程序,要求输出如图所示的小兔子图案。本题可以利用printf函数将双撇号之间的字符内容原样显示出来,但需要注意的是,在C语言中,有些字符不能直接输出(如“\”、“"”、“'”等),需要用“\”进行转义。4.4应用举例4.4.1输出字符表情#include<stdio.h>intmain(){ printf("╔═════════════╗\n"); /*输出边框*/ printf("║(\\(\\║\n"); /*用“\\”输出“\”*/ printf("║(-.-)║\n"); /*输出字符*/ printf("║。_(”)║\n"); /*这里用了中文双引号*/ printf("╚═════════════╝\n"); /*输出边框*/ return0; /*函数返回值0*/}4.4应用举例4.4.1输出字符表情
小技巧程序中表示边框的字符(如“╔”、“╗”、“═”、“║”等),可在输入法中的“特殊字符”>“制表符”集合中找到。程序运行结果如图所示。4.4应用举例4.4.2大小写字母转换编写程序,实现从键盘输入一个小写字母,在显示屏上显示对应的大写字母。用getchar函数(或用scanf函数)从键盘读入一个小写字母,然后利用大小写字母ASCII码数值相差32的规则,将它转换为大写字母,最后用putchar函数(或printf函数)输出该大写字母。4.4应用举例4.4.2大小写字母转换#include<stdio.h>intmain(){ chara,b; /*定义字符变量a和b*/ a=getchar(); /*输入字符变量a的值,等同于scanf("%c",&a);*/ b=a-32; /*求大写字母的ASCII码*/ putchar(b); /*输出b的值,等同于printf("%c",b);*/ putchar('\n'); /*输出回车符*/ return0; /*函数返回值0*/}4.4应用举例4.4.2大小写字母转换程序运行结果如图所示,输入一个小写字母f,输出其大写形式F。4.4应用举例4.4.3求三角形的面积编写程序,要求输入三角形的三条边(假设给定的三条边符合三角形的条件:任意两边之和大于第三边),计算三角形的面积并输出。解此题的关键是要找到求三角形面积的公式,其中。4.4应用举例4.4.3求三角形的面积intmain(){ floata,b,c,s,area; /*定义变量*/ printf("请输入三角形三条边:\n"); /*打印提示信息*/ scanf("a=%f,b=%f,c=%f",&a,&b,&c); /*分别输入三条边长*/ s=1.0/2*(a+b+c); /*计算s的值*/ area=sqrt(s*(s-a)*(s-b)*(s-c)); /*计算三角形面积*/ printf("area=%.4f\n",area); /*输出结果*/ return0; /*函数返回值0*/}4.4应用举例4.4.3求三角形的面积程序运行结果如图所示,输入“a=3,b=4,c=5”并回车,得到结果“area=6.000”。4.4应用举例4.4.3求三角形的面积程序执行的时候首先输出一句提示信息“请输入三角形三条边:”,然后需要用户输入数据。用scanf函数输入数据时,在“格式控制”中的普通字符需要原样输入。第8行中计算s值时,用了“1.0/2*(a+b+c)”,而不是“1/2*(a+b+c)”,这是因为“/”运算中当两个都是整数时,即为整除,所以“1/2”的结果为0。第9行中,sqrt函数的功能是求平方根。由于要调用数学函数库中的函数,因此,必须在程序开头加一条#include指令,把头文件“math.h”包含到程序中来。最后,用printf函数输出结果时,用了“%.4f”来限制输出结果保留到小数点后4位。
拓展阅读C语言提供了丰富的数学函数,如求绝对值函数abs()、常用对数函数log10()、自然对数函数log()、指数函数exp()、次方函数pow()等,具体说明详见附录4。PART4.5常见错误分析4.5常见错误分析printf函数的一般格式为:printf("格式控制",输出项列表);其中需要注意的是,“格式控制”需要用双撇号括起来,多个输出项之间需要用逗号隔开,并且要求各输出项和格式声明在数量和类型上一一对应。例如:#include<stdio.h>intmain(){ inta=10; printf("a=%d\n,a); /*少了一个双撇号*/ return0;}14.5常见错误分析编译错误信息如图所示。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 48184-2026变形铝合金铸锭显微疏松测定方法
- 湖南省湘潭市2026-2027学年高二上学期第一次月考化学自测卷(范围:人教版必修一、必修二、选择性必修一第1-2单元)(解析版)
- 江苏省镇江市2027届高三上学期期初质量监测生物试卷(含答案)
- 河北省张家口市桥西区2025-2026学年七年级上学期11月期中考试英语试卷(含答案)
- 广东广州市海珠区2027届高三上学期综合练习(一)数学试卷(含简略答案)
- 黑色素瘤免疫治疗进展
- 脊柱裂的健康宣教
- 公司财务年终工作总结范文2026
- 2026新学期医护人员冠心病防治知识课件
- 数智化时代的医学影像学推动普通外科高质量发展
- 2026年pep人教版四年级英语上册全册教案
- 迟子建《白雪的墓园》阅读答案
- 急性胰腺炎诊疗规范(2026年版)
- 2025年神介学苑试题答案
- 房屋拆除及垃圾清理方案
- 2025年华为制造部在线笔试及答案
- 2026年大学生网络安全知识竞赛题库及答案
- 2025年长沙商贸旅游职业技术学院单招职业技能测试题库附答案解析
- GMP数据完整性课件
- 机场网络安全培训课件
- 消控室值班记录表、消防设施巡查记录表
评论
0/150
提交评论