1、第四章 最简单的C程序设计,4.1 C语句概述 4.2 赋值语句 4.3 数据输入输出的概念及在c语言中的实现 4.4 字符数据的输入输出 4.5 格式输入与输出 4.6 顺序结构程序设计举例,【教学目的与要求】了解C语句的全貌和程序的三种基本结构,深刻理解赋值语句和复合语句在程序设计中的作用和意义;掌握数据输入与输出格式。【教学重点与难点】C 语言的赋值语句、数据的输入输出及输入输出中常用的控制格式。,C语句可以分为以下五类:1控制语句,完成一定的控制功能,C只有9种控制语句,它们是if( )else (条件语句)for ( ) (循环语句)while( ) (循环语句)dowhile (
2、) (循环语句)continue (结束本次循环语句)break (中止执行switch或循环语句)switch (多分支选择语句)goto (转向语句)return (从函数返回语句) 其中,( )表示条件,表示内嵌的语句, 4.1 C语句概述,3表达式语句。由一个表达式加一个分号构成。最典型的是由赋值表达式构成一个赋值语句。a=3 是一个赋值表达式,而 a=3; 是一个赋值语句。一个表达式的最后加一个分号就成了一个语句。一个语句必须在最后出现分号,分号是语句中不可缺少的一部分。,2函数调用语句。由一个函数调用加一个分号构成一个语句,例如:printf(“this is a C statem
3、ent”);c=max(a,b);, 4.1 C语句概述,例如:i=i+1 (是表达式,不是语句)i=i+1; (是语句),4空语句:; 即只有一个分号的语句,它什么也不做。, 4.1 C语句概述,5复合语句。用 把一些语句括起来成为一个复合语句。,如: z=x+y;t=z100;printf(“%f“,t);,注意:复合语句中最后一个语句中最后的分号不能忽略不写。C语言允许一行写几个语句,也允许一个语句拆开写在几行上,书写格式无固定要求。,如:a=3;b=7;c=a;if(ab)printf(“%dn“,a);,赋值语句是由赋值表达式加上一个分号构成。 C语言中的赋值号“=”作为赋值运算符;
4、if(a=b)0) t=a;if(a=b;)0) t=a;, 4.2 赋值语句,比较,C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。在C的标准函数库中(stdio.h)提供了一些输入输出函数,例如,printf函数和scanf函数。它们不是C语言的“输入输出语句”。,4.3(3.2) 数据输入输出的概念,输入输出函数的原型在头文件stdio.h中定义,使用输入输出函数时,应在源程序的开头使用如下语句: #include “stdio.h“ 或 #include 其中,stdio.h是standard input & output的缩写,它包含了与标准IO库有关的变量定义和宏定义
5、。,4.4.1 putchar函数(字符输出函数) 向终端输出一个字符。一般形式是putchar(c); 输出字符变量c的值。c可以是字符型变量或整型变量。,例 include “stdio.h”void main( )char a,b,c;a=B; b=O; c=Y;putchar(a); putchar(b); putchar(c);,4.4 (3.2.1-3.2.2)字符数据的输入输出,运行结果:BOY,putchar( )函数也可以输出控制字符及转义字符,如,putchar(n),输出一个换行符,putchar(101),输出字符A,1getchar()函数的格式:getchar( )
6、; 2getchar()函数的作用:从系统隐含的输入设备(如键盘)输入一个字符。getchar()函数只能用于单个字符的输入,一次输入一个字符。,4.4.2 getchar()函数, 4.4字符数据的输入输出,例4.2说明getchar()函数的格式和作用,/*功能:说明getchar()函数的格式和作用。*/ #include “stdio.h“ /*文件包含*/ void main( ) char ch;printf(“Please input two character: “);ch=getchar(); /*输入1个字符并赋给ch */putchar(ch); putchar(n);p
7、utchar(getchar(); /*输入一个字符并输出*/putchar(n); ,分析程序运行情况: (1)ab (2)a b,4.5 格式输入与输出,4.5.1 (3.2.3) printf函数(格式输出函数)作用:向终端(或系统隐含指定的输出设备)输出若干个任意类型的数据(putchar只能输出字符,而且只能是一个字符,而printf可以输出多个数据,且为任意类型)。,格式控制串:包含两种信息 格式说明:由%和格式字符组成,用于指定输出格式 普通字符:原样输出 输出表列:要输出的数据(可以没有,多个时以“,”分隔),格式:printf(“格式控制串”,输出表列) 功能:按指定格式向显
8、示器输出数据,4.5 格式输入与输出,int a=3,b=4; printf(“%d %d”,a,b);printf(“a=%d b=%d”,a,b);,int a=567;printf ( “%d”,a);,int a=255;printf(“%x”,a);,int a=65;printf(“%o”,a);,int a=567;printf(“%u”,a);,char a=65;printf(“%c”,a);,printf(“%s”,“ABC”);,float a=567.789;printf(“%e”,a);,float a=567.789;printf(“%f”,a);,float a=
9、567.789;printf(“%g”,a);,printf(“%”);,567,ff,101,567,A,ABC,5.677890e+02,567.789000,567.789,%,格式字符:,d和i等价。注意:不能用大写D或I,printf(“%X“,a); 结果是FF,附加格式说明符,例、(表示空格) int i = 123; long j = 123456; printf(“%d,%5d,%05d,%ld“,i ,i , i, j);,输出结果,%md,m指定输出数据域宽,数据长度m,左补空格;否则按实际输出,输出数值时指定左面不使用的空位置自动填0,例4.3 main() unsig
10、ned int a = 65535; int b = -2; printf(“a=%d,%o,%x,%un“,a,a,a,a); printf(“b=%d,%o,%X,%un“,b,b,b,b); ,11111111 11111111,11111111 11111110,a=65535 b= -2,输出结果,例: 4.4 main() char c=a;int i=97;printf(“%c,%dn“,c,c);printf(“%c,%dn“,i,i); ,输出: a,97a,97,例: 4.5 main()float f=123.456; printf(“%f,%10f n%10.2f, %
11、.2f n%-10.2f,n“, f,f,f,f,f); ,例: 4.6(3.13) main()printf(“%3s,%7.2s,%.4s,%-5.3s,%sn“, “CHINA“,“CHINA“,“CHINA“,“CHINA “,“CHINA“); ,%m.n,其中n 对实数,指定小数点后位数(四舍五入);对字符串,指定实际输出位数,负号,指定输出数据在域内左对齐(缺省右对齐),例 m.n,例 int a=1234;float f=123.456;printf(“%08dn”,a); printf(“%010.2fn”,f); printf(“%0+8dn”,a); printf(“0+
12、10.2fn”,f);,例 0 、+,例 int a=123;printf(“%o,%#o,%X,%#Xn”,a,a,a,a);,例 #,例 long a=65536;printf(“%d,%8ldn”,a, a);,例 l,/00001234,/0000123.46,/000+1234,/000+123.46,/173,0173,7B,0X7B,/0, 65536,4.5.2(3.2.4) scanf函数 (格式输入函数),格式: scanf(“格式控制串”,地址表) 功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束,地址表:变量的地址,常用取地址运算符& 格式字符
13、:d,i,o,x,u,c,s,f,e,例 scanf(“%d”,输入:10 则 a=10,例 scanf(“%x”,输入:11 则 a=17,附加格式说明符(修饰符),例 scanf(“%4d%2d%2d”,输入 19991015 则1999yy, 10 mm, 15 dd,例 scanf(“%3d%*4d%f”,输入 12345678765.43则123k, 8765.43f,例 scanf(“%2d%*3d%2d”,输入 1234567 则12a, 67b,例 scanf(“%3c%2c”,输入 abcde 则ac1, d c2,输入分隔符的指定 一般以空格、TAB或回车键作为分隔符 其它
14、字符做分隔符:格式串中两个格式符间的字符,例 scanf(“%d%o%x”,输入 123 123 123 输出 a=123,b=83,c=291,例 scanf(“%d:%d:%d”,输入 12:30:45 则12 h, 30 m, 45 s,例 scanf(“%d,%d”,&a,&b)输入 3,4 则3a, 4 b,例 scanf(“a=%d,b=%d,c=%d”,输入 a=12,b=24,c=36 ,说明: 用“%c”格式符时,空格和转义字符作为有效字符输入 输入数据时不能规定精度,如 scanf(“%c%c%c”,若输入abc 则ac1, c2, bc3,输入数据时,遇以下情况认为该数据
15、结束: 遇空格、TAB、或回车 遇宽度结束 遇非法输入,如 scanf(“%d%c%f”,若输入1234a123o.26 则 1234 a, a b, 123 c,4.6 顺序结构程序设计举例,/*ch4_10.c*/ #include #include void main() float a,b,c,s,area;scanf(“%f,%f,%f“, ,例(3.7) 输入三角形边长,求面积,输入:3,4,6 输出:a= 3.00, b= 4.00, c= 6.00 s= 6.50area= 5.33,例(3.8) 从键盘输入大写字母,用小写字母输出,/*ch4_11.c*/ #include “stdio.h“ void main() char c1,c2;c1=getchar( );printf(“%c,%dn“,c1,c1);c2=c1+32;printf(“%c,%dn“,c2,c2); ,输入:A 输出:A,65a,97,#include #include void main() float a,b,c,disc,x1,x2,p,q;scanf(“a=%f,b=%f,c=%f“, ,输入:a=1,b=3,c=2 输出:x1=-1.00x2=-2.00,作业,3.3、3.4、3.5、3.6、3.7,