《最简单的C程序设计.ppt》由会员分享,可在线阅读,更多相关《最简单的C程序设计.ppt(66页珍藏版)》请在三一办公上搜索。
1、第四章 最简单的C程序设计顺序程序设计,C语句概述赋值语句数据输入输出的概念及在c语言中的实现字符数据的输入输出格式输入与输出顺序结构程序设计举例,回顾,常量在程序中不能被更改,而变量在程序中可以被更改C语言中的基本数据类型包括整型、单精度浮点型、双精度浮点型和字符型整型分为短整型、整型、长整型,每种整型又可分为有符号型和无符号型单精度浮点型和双精度浮点型变量可以存储实数字符型变量可以存储单个字符,其值是该字符的ASCII 码算术运算符提供运算功能,包括+、-、*、/、%、+、-,目标,掌握字符数据输入输出函数用法熟练使用printf和scanf函数理解顺序结构程序的设计思路,4.1 C语句概
2、述,程序的结构,返回,C语句可分为以下五类:控制语句函数调用语句表达式语句空语句复合语句,1、控制语句有9种:if()else 条件语句for()循环语句while()循环语句dowhile()循环语句continue 结束本次循环语句break 终止执行switch或循环语句switch 多分支选择语句goto 转向语句return 从函数返回语句其中,()表示是条件,表示内嵌的语句。,2、函数调用语句:由函数名、实际参数加上分号“;”组成。其一般形式为:函数名(实际参数表);例如:printf(C Program);调用库函数,输出字符串。,3、表达式语句:表达式语句由表达式加上分号“;”
3、组成。其一般形式为:表达式;例如a=3 是一个赋值表达式a=3;是一个赋值语句,4、空语句:只有分号“;”组成的语句称为空语句。5、复合语句:把多个语句用括号括起来组成的一个语句称复合语句。例如:x=y+z;a=b+c;printf(“%d%d”,x,a);是一条复合语句。,4.2 赋值语句,赋值语句是程序中使用最多的语句之一。,赋值语句是由赋值表达式再加上分号构成的表达式语句。,其一般形式为:变量=表达式;,返回,在赋值语句的使用中需要注意以下几点:由于在赋值符“=”右边的表达式也可以又是一个赋值表达式,因此,下述形式 变量=(变量=表达式);是成立的,从而形成嵌套的情形。其展开之后的一般形
4、式为:变量=变量=表达式;例如:a=b=c=d=e=5;结果是a、b、c、d、e的值均为5。,注意在变量说明中给变量赋初值和赋值语句的区别。例如:int a=5,b,c;,是,不能是;,给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。,在变量说明中,不允许连续给多个变量赋初值。如下述说明是错误的:int a=b=c=5;必须写为 int a=5,b=5,c=5;而赋值语句允许连续赋值。a=b=c=5;是允许的。,注意赋值表达式和赋值语句的区别。下述语句是合法的:if(x=y+5)0)z=x;语句的功能是,若表达式x=y+5大于
5、0则z=x。下述语句是非法的:if(x=y+5;)0)z=x;因为x=y+5;是语句,不能出现在表达式中。,赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。,4.3 数据输入输出的概念及在C语言中的实现,所谓输入输出是以计算机为主体而言的。本章介绍的是向标准输出设备显示器输出数据的语句。在语言中,所有的数据输入输出都是由库函数完成的。因此都是函数语句。,返回,在使用语言库函数时,要用预编译命令#include 将有关“头文件”包括到源文件中。使用标准输入输出库函数时要用到“stdio.h”文件,因此源文件开头应有以下预编译命令:#include 或#includ
6、e”stdio.h”stdio是standard input&outupt的意思。,考虑到printf和scanf函数使用频繁,系统允许在使用这两个函数时可不加:#include 或#include”stdio.h”,4.4 字符数据的输入输出,4.4.1 putchar 函数(字符输出函数)其一般形式为:putchar(字符变量),putchar 函数是字符输出函数,其功能是在显示器上输出单个字符。,返回,例如:putchar(A);(输出大写字母A)putchar(x);(输出字符变量x的值)putchar(101);(也是输出字符A)putchar(n);(换行)使用本函数前必须要用文件
7、包含命令:#include或#include“stdio.h”,例4.1 输出单个字符。,结果:Boy,#include main()char a=B,b=o,c=y;putchar(a);putchar(b);putchar(c);,例4.1输出单个字符。,结果:Boy,#include main()char a=B,b=o,c=y;putchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);,4.4.2 getchar函数(字符输入函数)getchar函数的功能是从键盘上输入一个字符。其一般形式为:getchar();
8、,通常把输入的字符赋予一个字符变量,构成赋值语句,如:char c;c=getchar();,例4.2 输入单个字符。,#include void main()char c;printf(input a charactern);c=getchar();putchar(c);,程序最后两行可用下面两行的任意一行代替,结果相同:putchar(getchar();printf(“%c”,getchar();,使用getchar函数还应注意几个问题:getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。使用本函数前必须包含文件“stdio.h”。,#incl
9、ude void main()char a,b;printf(请输入两个字符:n);a=getchar();fflush(stdin);b=getchar();fflush(stdin);putchar(a);putchar(b);putchar(n);,getchar()和putchar()示例,O,K,输出:请输入两个字符:OKOKPress any key to continue_,4.5 格式输入与输出,4.5.1 printf函数(格式输出函数)printf函数的作用是按用户指定的格式,输出若干任意类型的数据。,返回,1、printf函数调用的一般形式 printf(“格式控制字符串
10、”,输出表列)其中“格式控制字符串”用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。,格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如:“%d”表示按十进制整型输出;“%ld”表示按十进制长整型输出;“%c”表示按字符型输出等。非格式字符串在输出时原样照印,在显示中起提示作用。,2、格式字符(1)d格式符。用来输出十进制整数。有几种用法:%d,按整型数据的实际长度输出。%md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补空格,若大于m,则按实际位数输出。如:a=123;d=12345printf(“%4d,%
11、4d”,a,b);结果:123,12345,%ld,输出长整型数据。如long a=135790;printf(“%ld”,a);(2)o或lo或mo格式符,以八进制形式输出整数。(3)x或lx或mx格式符,以八进制形式输出整数。(4)u格式符,用来输出unsigned型数。,(5)c格式符,用来输出一个字符。如:char c=a;printf(“%c”,c);输出:a也可以指定输出宽度,如:printf(“%3c”,c);输出:a,(6)s格式符,用来输出一个字符串。有几种用法:%s,例如:printf(“%s”,”CHINA”);输出CHINA%ms,输出的字符串占m列,如字符串长度大于m
12、,则按字符串实际长度输出;若字符串长度小于m,则左补空格。%-ms,同上,右补空格。,%mns,输出占m列,但只取字符串中左端n个字符,左补空格。%-mns,输出占m列,但只取字符串中左端n个字符,右补空格。例4.5 字符串的输出。,main()printf(“%3s,%7.2s,%.4s,%-5.3s,n”,”CHINA”,”CHINA”,”CHINA”,”CHINA”);,结果为:CHINA,CH,CHIN,CHI,(7)f格式符,用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:%f,不指定字段宽度,由系统自动指定,使整数部分全部如数输出,并输出6位小数。例4.6 输出实数
13、时的有效位数。,x,y整数部分6位,main()float x=111111.111,y=222222.222;printf(“%f”,x+y);,结果:333333.328125单精度只有7位有效数字。,例4.7 输出双精度数时的有效位。main()double x,y;x=1111111111111.111111111;y=2222222222222.222222222;printf(“%f”,x+y);结果为:3333333333333.333010双精度只有16位有效数字。,整数部分13位,main()float f=123.456;printf(“%f%10f%10.2f%.2f%-
14、10.2fn”,f,f,f,f,f);,%mnf 指定输出的数据占m列,其中有n位小数。如果数值长度小于m位,则左端补空格。%-mnf 同上,右端补空格。例4.8 输出实数时指定小数位数。,结果:123.456001 123.456001 123.46 123.46 123.46,(9)g格式符,用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的0。f=123.456printf(“%f%e%g”,f,f,f);结果:,123.456001 1.23456e+02 123.456001,在使用printf函数时,还有几点要说明:(1)除了X,E
15、,G外,其他格式符必须用小写字母。(2)可以在printf函数中的“格式控制”字符串内包括“转移字符”,如n,t,r等。(3)上面介绍的“d,o,x,u,c,s,f,e,g”等字符,用在“%”后面是格式符,不在“%”后面就是普通字符。例如:printf(“c=%cf=%fs=%s”,c,f,s);,普通字符,()如果想输出字符“”,则在“格式控制”字符串中用“”表示。如:printf(“%f%”,1.0/3);输出:0.333333%,4.5.2 scanf函数(格式输入函数)1、一般形式 scanf(“格式控制字符串”,地址表列);其中,格式控制字符串的作用与printf函数相同,但不能显示
16、非格式字符串,也就是不能显示提示字符串。地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。例如:&a,&b 分别表示变量a和变量b 的地址。,例4.9用scanf函数输入数据。,运行:345 a=3,b=4,c=5,main()int a,b,c;printf(input a,b,cn);scanf(%d%d%d,输入分隔符的指定一般以空格、TAB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符间字符,运行:3,4,5a=3,b=4,c=5,main()int a,b,c;printf(input a,b,cn);scanf(%d,%d,%d,2、格式说明,说明:(1
17、)对unsigned型变量所需的数据,可以用%u,%d,%o,%x格式输入。(2)用十进制整数指定输入的宽度(即字符数),系统自动按它截取所需数据。如:scanf(%5d,输入:12345678 将把1234赋予a,而把5678赋予b。,(3)在%后面加一个“*”符,表示该输入项,读入后不赋予相应的变量,即跳过该输入值。如:scanf(%d%*d%d,当输入为:1 2 3时,把1赋予a,2被跳过,3赋予b。(4)长度:长度格式符为l和h,l表示输入长整型数据(如%ld)和双精度浮点数(如%lf)。h表示输入短整型数据。,(5)scanf函数中没有精度控制,如:scanf(%5.2f,是非法的。
18、不能企图用此语句输入小数为2位的实数。,3、使用scanf函数时应注意的问题(1)scanf中要求给出变量地址,如给出变量名则会出错。如 scanf(“%d”,a);是非法的,应改为scnaf(“%d”,输入时:3,4,34 3:4 都不对。scanf(“%d%d”,输入时,两个数据之间应空2个或更多的空格:1034 1034,scanf(“%d:%d:%d”,输入时:a,b,c=12,24,36,(3)在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。例如:scanf(%c%c%c,输入为:def则把d赋予a,赋予b,e赋予c。只有当输入为:def时,才能把d赋
19、于a,e赋予b,f赋予c。,(4)在输入数据时,遇到以下情况时该数据认为结束:遇空格,TAB或回车作间隔。按指定宽度结束,如“%3d”,只取3列。遇非法输入。scanf(“%d%c%f”,若输入:1234a123o.26 a b c,格式输入输出的规定比较烦琐,但又是最基本的。学习时不必花很多的时间去死记硬背、死扣细节,重点掌握常用的一些规定,如“%d”,”%f”,”%c”的使用方法,通过多上机、多调试程序来逐步深入、自然地掌握格式输入输出的应用。,4.6 顺序结构程序设计举例,学习了赋值、输入和输出语句,我们就可以编写简单的顺序结构程序了。,返回,例4.10输入三角形的三边长,求三角形面积。
20、已知三角形的三边长a,b,c,则该三角形的面积公式为:其中s=(a+b+c)/2源程序如下:,#include main()float a,b,c,s,area;scanf(“%f,%f,%f”,#include#include main()float a,b,c,s,area;scanf(%f,%f,%f,例4.10输入三角形的三边长,求三角形面积。,输入:3,4,6 输出:a=3.00,b=4.00,c=6.00 s=6.50 area=5.33,例4.11 从键盘输入大写字母,用小写字母输出。,#include stdio.hmain()char c1,c2;c1=getchar();p
21、rintf(%c,%dn,c1,c1);c2=c1+32;printf(%c,%dn,c2,c2);,输入:A 输出:A,65 a,97,例4.12求ax2+bx+c=0方程的根,a,b,c由键盘输入,设b2-4ac0。求根公式为:,#include#include main()float a,b,c,disc,x1,x2,p,q;scanf(a=%f,b=%f,c=%f,总结,printf()和 scanf()函数属于格式输入输出函数getchar()和 putchar()函数用来输入输出单个字符的函数理解顺序结构程序的编程思路,习题:,1.a=1234,b=12,c=34,则执行“prin
22、tf(“|%3d%3d%-3d|n”,a,b,c);”后的输出是?。,|12341234|,1.a=1234,b=12,c=34,则执行“printf(“%3d%3d%-3dn”,a,b,c);”后的输出是?。,12341234,1.a=1234,b=12,c=34,则执行“printf(“|%3d%3d%-3dn|”,a,b,c);”后的输出是?。,|12341234|,2.以下程序输出的结果是?。main()int a1=1,a2=0,a3=2;printf(%d,%d,%d,a1,a1+a2+a3,a3-a1);,1,3,1,习题:,4.设有“int a=255,b=8;”则“printf(“%x,%on”,a,b);”输出的是?。,ff,10,习题:,5.已定义变量如下:int a1,a2;char c1,c2;若要求输入a1,a2,c1和c2的值,正确的输入函数调用语句是:?。,scanf(%d,%d,%c,%c,main()int a1,a2;char c1,c2;scanf(%d,%d,%c,%c,习题:,6.输入一个非负数,计算以这个数为半径的圆周长和面积。,习题:,