《C语言第三章课件.ppt》由会员分享,可在线阅读,更多相关《C语言第三章课件.ppt(63页珍藏版)》请在三一文库上搜索。
1、大学实用教程,C语言,C语言中的语句 字符输入函数getchar() 字符输出函数putchar() 格式输入函数scanf() 格式输出函数printf() 格式控制问题难点,第3章 简单的C程序设计,3-1 C语言中的语句,变量声明语句 表达式语句 空语句 复合语句 控制语句,1、控制语句,if( ) else 、for( )、while( )、do while continue 、break、switch、goto、return,2、函数调用语句,由一次函数调用加一个分号构成,如:,printf(“ “);,函数,分号,表达式末尾加分号,如:,A=9,A=9;,4、空语句:,仅有一个分号
2、的语句,如: ;,3、表达式语句:,空语句,空语句有什么作用? 什么也不做,只表示语句的存在 自顶向下程序设计时用在那些未完成的模块中,main() DataInitialze(); DataProcess(); DataOutput(); ,DataInitialze() ; ,5、复合语句:,用一对 号括起的语句组,如:, z=x+y ; t=z/100 ; printf(“ %f “,f); ,注意:在复合语句中声明的变量只 在该复合语句内部有效。 (参见P.50),如何进行数据的输入输出? 输入:从标准输入设备上输入数据到计算机内存 输出:将计算机内存中的数据送到标准输出设备 C语言中
3、输入输出操作通过调用标准库函数来实现,3-2 基本输入输出的实现,#include “stdio.h“ 在当前目录或指定的目录中找该文件 #include 在指定的文件目录中找该文件,一、字符输入输出函数,字符输出函数 putchar(ch) 输出一个字符ch 字符输入函数 getchar() 无参数 函数值为从输入设备接收的字符,1、字符输出函数putchar(),作用:向终端输出一个字符。,格式:,其中:C 可为字符型/整型的常、变量表达式。,# include /*必须使用该命令*/ main() int a=98; char b=a; putchar(a); putchar(b); p
4、utchar(65+32); putchar(n); ,例1:,运行结果:,baan,例2:,# include main() char a= B,b= o,c= k; putchar(a);putchar(b);putchar(b); putchar( c);putchar(t); putchar(a);putchar(b); putchar(n); putchar(b);putchar(c); ,注意:使用putchar( ) 函数前一定使用#include “stdio.h”,2、字符输入函数getchar( ),作用:接收由键盘输入的一个字符。,格式:,如:,char ch; ch=g
5、etchar();,通常把输入的字符赋予一个字符变量,构成赋值语句。,使用getchar()函数需要注意:,(1)输入数字按字符处理,输入多个字符 仅接收第一个字符。,(2)使用getchar()函数时,必须包含 “stdio.h”文件,(3)函数执行时暂停程序运行,等待用 户输入数据,#include main() char ch; printf(“Press a key and then press Enter:“); ch = getchar(); printf(“You pressed “); putchar(ch); putchar(n); ,Press a key and then
6、 press Enter:,A,You pressed,A,例,二、格式输入输出函数,格式输出函数 printf() 格式输入函数 scanf(),1. 格式输出函数,格式输出函数 printf(格式控制字符串, 输出项表列); 输出若干个任意类型的数据 printf(“a=%d b=%f“, a, b);,函数名,输 出 表 列,普通字符,说明:,(1)格式控制字符用双引号括起来。,三种字符:,格式说明 %+格式字符,转义字符 +字符,普通字符 原样输出的字符,(2)输出表列中各量用逗号分开,常量、变量、表达式均可。,d 以带符号十进制整数输出 o 以八进制无符号整数输出(无前导0) x 以
7、十六进制无符号整数输出(无前导0x) u 以十进制无符号整数输出 c 以字符形式输出单个字符 s 输出一个字符串 f 以小数形式输出浮点数(6位小数) e 以标准指数形式输出(6位小数) g 选用%f,%e中输出宽度较小的一种格式,printf格式转换说明符字符及含义,l 长整型整数,加在d、o、x、u前 L long double型数,加在f、e、g前 m 表示数据占用的最小宽度 数据宽度大于m,按实际宽度输出 数据宽度小于m时,补空格 n 对实数表示输出n位小数 对字符串表示最多输出的字符个数,printf附加格式说明符,关于格式控制字符,一般形式: % 标志输出最小宽度.精度长度 说明:
8、 (1) 中的内容为可选项,printf(格式控制字符串, 输出项表列);,2)标志:为+、# 等,含义如下: + 输出符号(+、-) 如i=3;printf(“%+dn”,i); # 对c、s、d、u无影响,对o类输出时加前缀0 对x类输出时加前缀0x,对e、g、f类当结果 有小数时才给出小数点。 如:i=3;printf(“%#xn,i);,% 标志输出最小宽度.精度长度,(3)输出最小宽度(域宽m,m必须是整数),域宽m是输出项在输出设备上所占的列数。 若m是正整数当实际位数多于定义宽度m,则按实际位数输出;若实际位数少于定义宽度,则在域内向右对齐,左边多余位补以空格;若m有前导0,则左
9、边多余位补0。 若m是负整数则输出数据在域内向左对齐,如:int a=23, b=4 ; printf(“ %5d,%5d “,a,b);,% 标志输出最小宽度.精度长度,(4)精度 .n(n为正整数),对于浮点数,表示输出的小数的位数; 对于字符串,指定从字符串左侧所截取的子串字 符的个数; 若实际位数大于所定义的精度数,则截去超过的部分。,如: float k=65.678; printf(“%.2f“, k); 输出结果为 65.68,% 标志输出最小宽度.精度长度,( 5 )长度,长度格式符为h、l两种,h表示按短整型量输出,l表示按长整型量输出,( 6 ) 类型是指输出数据的类型.,
10、% 标志输出最小宽度.精度长度,printf 函数中主要的格式字符:,(1)d 格式符:输出带符号的十进制整数,正数 的符号省略,%d ,按整型数据的实际长度输出 %md , m为指定的输出字段的宽度,若实际位数多于定义宽度m ,则按实际位数输出;若实际位数少于定义宽度m ,则左端补以空格。 如: printf(“%4d,%4d”,a,b); 若 a=123, b=12345 则输出为: 123 ,12345 %ld ,输出长整型数据 如: long a=135790; printf(“%ld,%4d”,a,a);,(3)O格式符:以无符号八进制形式输出整数,(2)u 格式符:以十进制形式输出
11、无符号整数,如: int k1; printf(“%d,%u“, k , k); 输出结果为 1,65535,如: int k1; printf(“%d,%o“, k , k); 输出结果为 1, 177777,(4)x 格式符:以无符号十六进制形式输出整数,如: int k1; printf(“%x“, k); 输出结果为 ffff,(5)c格式符:用来输出一个字符,如: char ca; printf(“%c“, c); 输出字符a,(6)f 格式符:以小数形式输出单、双精度实数,%f 不指定字段宽度,由系统自动指定,整数部分全部输出,小数部分输出6位。单精度实数的有效位数是7位,双精度实
12、数的有效位数是16位 %m.nf 指定输出的数据共占m列,其中有n位小数,若实际位数少于定义宽度m ,则左端补以空格。,如: float x , y ; x=11111.111; y=22222.222 printf(“%f“, x+y); 输出结果为 33333.333984,只有前7位是有效数字,(7)e 格式符:以指数形式输出单、双精度实数 要求小数点前必须有且只有一个非0数字,不指定域宽m和精度.n时,系统自动给出6位小数,指数部分占5位,其中e占1位。指数符号占1位,指数占3位。,如: float x 123.4 ; printf(“%e“, x); 输出结果为 1.23400e+0
13、2,(8)s格式符:用来输出字符串,如: printf(“%s“, “abc“ ); 输出字符串 “abc“,(9)g格式符:用来输出实数,并根据数值的大小,自动选取f格式或e格式中输出宽度较小的一种,且不输出无意义的0。,如: float x123.40 ; printf(“%g“, x); 输出结果为 123.4,例:printf(“ %d,%d,%d “,(a,b,c),b,c);,逗号表达式,设:a=3 b=4 printf(“ a=%d b=%d “,a,b); 结果为:a=3 b=4,使用printf( )函数的几点说明:,1、格式字符要小写。 2、可在格式控制字符串中包含转义字符
14、 3、格式控制字符串中可插入附加字符。 4、若输出字符“%”,则应在字符串中连 续两个“%”号。,例:读程序,写运行结果。,main() char c1=a,c2=b,c3=c,c4=101,c5=116; printf(“ a%cb%ct%ccabcn “,c1,c2,c3); printf(“ tb%c%c “,c4,c5); ,运行结果:,aabb ccabc AN,2、格式输入函数scanf( ),scanf()称为格式输入函数。是一个标准的库函数,函数原形在“stdio.h”文件中。 其作用是由终端输入若干个任意类型的数据,送给相应的变量。,格式输入函数,格式输入函数 scanf(格
15、式控制字符串, 地址表列); scanf(“%d,%f”, ,格式:scanf(“格式控制字符串”,地址表列),其中: 格式控制字符串的作用与printf()函数相同。 不能显示提示信息 地址表列中要给出各变量的地址。地址是由地址运算符”&”加上变量名组成的。 注意区分变量的值和变量的地址这两个不同的概念。 不能用scanf( )在屏幕上显示提示信息。,格式控制字符,一般格式:%*输入数据宽度长度,说明: (1)“*”号:表示该输入项读入后,不赋予相应的变量,即跳过该输入值。 如:scanf(“ %d%*d%d “, 当输入1 2 3时, 1a 3b,2被跳过,(2)输入数据宽度 :用十进制整
16、数指定输入 的宽度。 如:scanf(“ %5d “, 输入12345678后 仅把12345赋予a,其余截去。,又如:scanf(“ %4d%4d “, 输入12345678后 1234赋予a,5678赋予b,按宽度自动截取。,%*输入数据宽度长度,(3)长度 长度格式符为l、h l表示长整型和双精度浮点数 h表示短整型数据。,%*输入数据宽度长度,(4)类型输入数据的类型.,格式字符 含义 d 以十进制整数形式输入 o 以八进制整数形式输入 x 以十六进制整数形式输入 u 以十进制无符号整数形式输入 f/e 以 实数形式输入 c 输入单个字符 s 输入字符串,%*输入数据宽度长度,使用sc
17、anf( )函数需注意 :,(1)scanf( )函数中没有精度控制。 如:scanf(“%4.2f“, 对,(3)输入多个数据时,格式控制串中没有非 格式字符,则输入时数据间的分隔符可 用空格、TAB键、回车键。,(4)输入字符数据时,若格式控制符中无非 格式符,则认为所有输入的字符均为有 效字符。 scanf(“ %c%c%c “, 输入:A,B,C 输出:a=A,b=,c=B,(5)如果格式控制字符串中有非格式字符,则输入时也要输入非格式字符。,scanf(“%d,%d,%d”, 输入应为:a=5,b=6,c=7,如:,(6)输入、输出格式符不相符,则输出数据错误。,格式输入函数,常见错
18、误 scanf(“%d,%fn”,#include main() int a, b; printf(“Please input a and b:“); scanf(“%2d%*2d%2d“, ,Please input a and b:,a=12, b=56, a+b = 68,123456,例3.9,#include main() int a, b; printf(“Please input a and b:“); scanf(“%2d%*2d%2d“, ,Please input a and b:,a=12, b=5, a+b = 17,12345a,例3.9,#include main(
19、) int a, b; scanf(“%d %d“, ,问题1:当要求程序输出结果为 a = 12, b = 34 时,用户应该如何输入数据?,12 34,输入数据的格式控制例3.10,#include main() int a, b; scanf(“%d %d“, ,问题2:当限定用户输入数据以逗号为分隔符,即输入数据格式为: 12, 34 时,应修改程序中的哪条语句?怎样修改?,scanf(“%d,%d“, ,输入数据的格式控制例3.10,#include main() int a, b; scanf(“%d %d“, ,问题3:语句scanf(“%d %d“, 时,用户应该如何输入数据?
20、,a = 12, b = 34,输入数据的格式控制例3.10,#include main() int a, b; scanf(“%d %d“, ,问题4:限定用户输入数据为以下格式为 1234 同时要求程序输出结果为a = 12, b = 34 应修改程序中的哪条语句?怎样修改?,scanf(“%2d%2d“, ,输入数据的格式控制例3.10,#include main() int a, b; scanf(“%d %d“, ,问题5:限定用户输入数据为以下格式为 12 34 同时要求程序输出结果为a = “12“, b = “34“,scanf(“%d%d“, ,输入数据的格式控制例3.10,
21、#include main() int a, b; scanf(“%d %d“, ,问题6:设计程序使得用户可以以任意字符(回车、空格、制表符、逗号、其它)作为分隔符进行数据的输入,scanf(“%d%*c%d“, ,输入数据的格式控制例3.10,#include main() int data1, data2, sum; char op; printf(“Please enter the expression data1 + data2n“); scanf(“%d%c%d“, ,Please enter the expression data1 + data2,第1次测试,12 + 3,12
22、 64 = 76,C格式符存在的问题及其解决例3.11,Please enter the expression data1 + data2,第2次测试,12 3,12 3 = 15,C格式符存在的问题及其解决例3.11,#include main() int data1, data2, sum; char op; printf(“Please enter the expression data1 + data2n“); scanf(“%d%c%d“, ,Please enter the expression data1 + data2,第3次测试,12+3,12+3 = 15,C格式符存在的问
23、题及其解决例3.11,#include main() int data1, data2, sum; char op; printf(“Please enter the expression data1 + data2n“); scanf(“%d%c%d“, ,#include main() int a; char b; float c; printf(“Please input an integer:“); scanf(“%d“, ,Please input an integer:,希望得到的运行结果,12,Please input an character :,a,Please input
24、a float number:,3.5,integer:12,character :a,float: 3.500000,C格式符存在的问题及其解决例3.12,#include main() int a; char b; float c; printf(“Please input an integer:“); scanf(“%d“, ,Please input an integer:,结果好像很奇怪嘛!,12,Please input a character :,a,Please input a float number:,3.5,integer:12,float number:3.500000
25、,C格式符存在的问题及其解决例3.12,#include main() int a; char b; float c; printf(“Please input an integer:“); scanf(“%d“, ,Please input an integer:,程序修改后得到的运行结果,12,Please input an character :,a,Please input a float number:,3.5,integer:12,character :a,float: 3.500000,C格式符存在的问题及其解决例3.12,#include main() int data1, data2, sum; char op; printf(“Please enter the expression data1 + data2n“); scanf(“%d%1s%d“, ,12+3,12 + 3,12 + 3,再回头来看例3.11,想以任意分割符输入加法算式,可能吗?,这一章我们学习了,字符输入函数getchar() 字符输出函数putchar() 格式输入函数scanf() 格式输出函数printf() 格式控制问题难点,作业,P6466 习题3.2,3.3,3.4,3.6,
链接地址:https://www.31doc.com/p-3479741.html