资源预览内容
第1页 / 共46页
第2页 / 共46页
第3页 / 共46页
第4页 / 共46页
第5页 / 共46页
第6页 / 共46页
第7页 / 共46页
第8页 / 共46页
第9页 / 共46页
第10页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
4.1 C语句概述,4.2 赋值语句,4.3 数据输入输出的概念及在C语言中的实现,4.4 字符数据的输入输出,4.5 格式输入与输出,4.6 顺序结构程序设计举例,4.1 C语句概述,C程序,4.1 C语句概述,C语句的分类-5类,(1)控制语句 if( )else for ( ) while( ) do while() continue break switch goto return 函数调用语句。由一次函数调用加一个分号构成一个语句,例如: printf(“This is a c statement.”); 表达式语句。由一个表达式加一个分号构成一个语句。 a=3; i=i+1; i+; x+y; 空语句。 ; 可以用把一些语句括起来称为复合语句,又称分程序。 z = x + y; t = z / 100; printf(“%f”,t); 注意:复合语句中最后一个语句中最后的分号不能忽略不写。,表达式能构成一个语句是C语言的一个特色,c又可称为表达式语言!,4.2 赋值语句,4.3 数据输入输出的概念及在C语言中的实现, 什么是输入输出? C语言本身不提供输入输出语句,输入输出操作是由函数实现的。 目的:使编译系统简单,避免在编译阶段处理与硬件有关的问题,可以使编译系统简化,而且通用性强,对各种型号的计算机都适用。 在使用C语言提供的库函数时,要用到预编译命令“#include” ,它 的作用是将有关的“头文件”包括到用户源文件中。在头文件中包含了与用到的函数有关的信息。预编译命令“#include” 都是放在程序的开头。 #include #include “stdio.h”,输入 设备,数据,计算机,stdio.h 是 standard input a=B;b=O;c=Y; putchar(a);putchar(b);putchar(c);putchar(n); 运行结果: BOY ,4.4 字符数据的输入输出getchar()和putchar()函数,例4-1-2:输出单个字符 #include void main() char a,b,c; a=B;b=O;c=Y; putchar(); putchar(); putchar(); putchar(); putchar(); putchar(); 输出结果: B O Y ,例4-1-3:输出单个字符 #include void main() putchar(101); /*输出字符A*/ putchar(); /*输出单撇号*/ putchar(015); /*输出回车不换行,使输出的当前位置移到本行的开头*/ 输出结果: A,4.4 字符数据的输入输出getchar()和putchar()函数,4.4.2 单个字符的输入getchar()函数 此函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。getchar函数没有参数,其一般形式为 getchar( ) 函数的值就是从输入设备得到的字符。,例4.2 输入单个字符 #include void main() char c; c=getchar(); putchar(c); ,4.4 字符数据的输入输出getchar()和putchar()函数,注意:getchar()只能接收一个字符。getchar函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量,作为表达式的一部分。 例如: putchar(getchar(); c=getchar(); printf(“%c”,getchar();,4.4 单个字符输入输出getchar()和putchar()函数,注意:要在程序中使用getchar()和putchar()函数,必须在该函数的前面加上“包含命令”。 #include,4.5 格式输入与输出,4.5.1 printf()函数(格式输出函数) printf()函数的作用:向终端(或者系统隐含指定的输出设备输出若干个任意的数据)。 printf()函数和putchar() 函数的区别: putchar( ) 函数只能输出字符,且只能输出一个字符。 printf()函数可以输出多个数据,且为任意类型。,printf(格式控制,输出表列),括弧内包含两部分: (1)“格式控制”是用“双撇号”括起的字符串,也称“转换控制字符串”包含下列信息: 格式说明:由“%”和格式字符组成,如“%d”和“%f”等,作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。 普通字符:需要原样输出的字符。 例如:printf(“a=%d,c=%fn”,a,c);,4.5 格式输入与输出,printf(格式控制,输出表列),4.5 格式输入与输出,4.5 格式输入与输出,由于printf( )是函数,因此“格式控制”和“输出表列”都是函数的参数。 printf( )函数的一般形式: printf(参数1,参数2,参数3参数n) printf( )函数的功能:将参数2-参数n 按参数1的格式输出。,2、格式字符 对不同类型的数据用不同的格式字符.常用的有以下几种格式字符:,4.5 格式输入与输出,4.5 格式输入与输出,(2)o 格式符。以无符号八进制形式输出整数。,4.5 格式输入与输出,(3)x 格式符。以无符号十六进制形式输出整数。,例如: int a=-1; printf(“%x,%o,%d”,a,a,a); 输出结果: ffff,177777,-1 同样可以用“%lx”输出长整型数,也可以指定输出字段的宽度“%mx”。,(4)u 格式符。用来输出unsigned型数据,即无符号数,以十进制整数形式输出。,一个signed int型数据可以以%u格式输出,一个unsigned型数据也可以以%d格式输出。unsigned型数据也可以用%o或%x格式输出。,4.5 格式输入与输出,例4.3 无符号数据的输出 #include void main( ) unsigned 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); 运行结果: a=-1,177777,ffff,65535 b=-2,177776,fffe,65534,4.5 格式输入与输出,(5)c 格式符。用来输出一个字符。,例如: char c=a; printf(“%c”,c); 注意:“%c”中的c是格式符,逗号右边的c是变量名。 一个整数,只要它的值在0255范围内,也可以用字符形式输出,在输出前,系统会将该整数作为ASCII码转换成相应的字符;一个字符数据也可以用整数形式输出。,例4.4 字符数据的输出 #include void main ( ) char c=a; int i=97; printf(%c,%dn,c,c); printf(%c,%dn,i,i); 运行结果: a,97 a,97,4.5 格式输入与输出,(6)s 格式符。用来输出一个字符串。,%s, 例如:printf(“%s”,”CHINA”); %ms, 输出的字符串占m列,如果字符串本身长度大于m,则突破m的限制,将字符串全部输出。若串小于m,则左端补空格。 %-ms,若串小于m,则右端补空格。 %m.ns,输出占m列,但是只取字符串中左端n个字符。这n个字符输出在m列的右侧,左端补上空格。 %-m.ns,输出占m列,但是只取字符串中左端n个字符。这n个字符输出在m列的左侧,右端补上空格。 如果:nm,则m自动取n值,即保证n个字符正常输出。,4.5 格式输入与输出,例4.5 字符串的输出 #include void main() printf(%3s,%7.2s,%.4s,%-5.3sn,CHINA,CHINA,CHINA,CHINA); 输出结果: CHINA, CH,CHIN,CHI %.4s-只指定n,没有指定m,自动使m=n=4,故占4列。,4.5 格式输入与输出,(7)f 格式符。用来以小数形式输出实数(含单精度和双精度)。,%f, 不指定字段的宽度,由系统自动指定,是整数部分如数输出,并输出6位小数。 注意:并非全部数字是有效数字。单精度实数的有效位数一般为7位。 例4.6:输出实数时的有效位数。 #include void main() float x,y; x=111111.111;y=222222.222; printf(%f,x+y); 运行结果: 333333.328125,4.5 格式输入与输出,例4.7 输出双精度数时的有效位数。 #include void main() double x,y; x=1111111111111.111111111; y=2222222222222.222222222; /*22个2*/ printf(%fn,x+y); 输出结果为: 3333333333333.333000,4.5 格式输入与输出,%m.nf,指定输出的数据共占m列,其中有n位小数。如果数值小于m,则左端补空格。 %-m.nf, 若小于m,则右端补空格。,例4.8 输出实数时指定小数位数 #include void main() float f=123.456; printf(“%f空空%10f空空%10.2f空空%.2f空空%-10.2fn,f,f,f,f,f); ,计算机中数据都是用二进制存储的,十进制小数存储时要转换成二进制存储 ,用乘基取整法换算的时候就会发现 很多十进制有限小数在二进制里面是无限小数。这时计算机就会舍弃超出存储范围的那部分即很多十进制小数存储时不会是原来的值,而是跟原来相差一点点的数。float类型的变量不可能保存精确的数据,它是存在误差的。即使看到输出和输入完全一样,那也只能说是极少数情况,所以,任何float(包括float、double)类型的变量不能比较是否相等,也不建议用于while、for语句的条件表达式中。 float类型的数不能直接用=来比较是否相等的原因 正确做法是作差之后看是否在一个精度范围内。 if( fabs(f1-f2) 预先指定的精度)。 例如:0.7这个数,在你看来只有一位有效数字,但是在电脑里面,它不能用二进制精确地表示出来,7/10这样一个分数在二进制里面是无限循环小数。,十进制与其它进制的转换时,整数部分与小数部分换算算法不同,需要分别进行。整数部分用除基取余法转换,小数部分用乘基取整法转换。(1)除基取余法。除基取余法是十进制整数转换成二进制数的方法。需要转换的整数除以基数2,取其商的余数就是二进制数最低位的系数K0,将商的整数部分继续除以基数2,取其商的余数作二进制数高一位的系数K1,.,这样逐次相除直到商为0,即得到从低位到高位的余数序列,便构成对应的二进制整数。例1:把十进制整数233转换成二进制数。十进制整数 余数 系数Ki 位 2 |233 2|116 1 K0 最低位 2|58 0 K1 2|29 0 K2 2|14 1 K3 2|7 0 K4 2|3 1 K5 2|1 1 K6 0 1 K7 最高位从最后一次余数开始向上顺序写出,得到换算结果:11101001B,(2)乘基取整法。十进制小数转换成二进制的方法,把要转换的小数乘以基数2,取其积的整数部分作对应二进制小数的最高位系数K -1,将积的小数部分继续乘以基数2,新得到积的整数部分作二进制下一位的系数K -2, ,这样逐次乘基,即得到从高位到低位积的整数序列,便构成对应的二进制小数。例:把十进制小数0.8125转换成二进制小数。解:十进制小数 积的整数部分 系数 位 0.8125 X 2 1.6250 1 K -1 最高位 0.62
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号