1、getchar()与putchar()函数,它们是stdio.h文件中提供的单字符输入输出函数 getchar()-将从键盘读入一个字符 举例: char c; c=getchar(); 将从键盘读入一个字符存于c中 putchar(int c) -输出一个字符 举例:char b=A; putchar(b); 将在屏幕上输出字母A,getchar()与putchar()函数举例,输入一个字符,输出对应的大写字母: #include void main()char c;c=getchar();c=c-32;putchar(c);putchar(n); ,#include void main()
2、char c;scanf(“%c”,printf(“%cn”,c),实验2讲解,1. 注意16进制和2进制的转化:char类型占一个字节0x1 2 3 4-0001 0010 0011 0100 2. getchar() 读入一个字符,回车也是一个字符%c输出字符形式,%d输出它的ASCII 3. float类型输出使用%f,注意后面为地址列表&a 4. double 类型输出使用%lf 5. 控制输出长度 6. scanf()函数一般不包含格式信息,如果包含,输入时要严格遵守a=3.12,b=9.0 c=10.0,实验2讲解,7. unsingned short int a=65535;11
3、111111 11111111 =216-1 =65535 short int b=-1;-1原码10000000 00000001-1反码11111111 11111110-1补码11111111 11111111 所以,a,b在内存中的存储是一样的。 hd短整型十进制 -1 ho短整型八进制 1777 hx短整型十六进制 ffff hu短整型无符号(十进制) 65535,实现输入圆柱体的底面半径和高,输出其体积,#include #define PI 3.14 void main() float r,h,s;printf(“请输入圆柱的低面半径和高“);scanf(“%f%f“, ,输入一
4、个整数,分别用无符号方式、八进制方式、十六进制方式输出,#include void main() int a;printf(“请输入一个整数:“);scanf(“%d“, ,编程实现输入一个字符,输出这个字符的ASCII码,#include void main() char a;printf(“请输入一个字符:“);scanf(“%c”, ,输入两个整数x,y交换他们的值并输出,#include void main() int x,y,t;printf(“输入整数x,y:“);scanf(“%d%d“, ,输入一个double类型的数,对第三位小数进行四舍五入后处理,然后输出格式整数部分占12
5、位,小数点后两位,进行输出。,#include void main( ) double x; scanf(“%lf“, ,实验注意问题:,实验1:注意一个程序调试完成后,一定要调用Fle/Close workspace关闭工作区,否则在一个工作区内出现两个main函数,无法通过连接 实验2: 注意scanf( )函数中需要的是地址列表 用scanf()、printf()输入输出不同数据类型,需要不同的格式控制符,否则结果可能错误 注意不同数据类型的精度和表达范围,选择合适的数据类型,实验注意问题:,实验3: 注意逻辑运算符“短路”现象 从左往右计算,得到结果,后面的运算被短路 例:int a=
6、0,b=1,c=2,d=3;b= a+ ,逻辑运算举例,#include void main() int a,b,c;a=5;b=2;c=3;a= a+ |+b,条件运算符 ? :,一般形式:表达式1?表达式2:表达式3 C语言中唯一的3目运算符 当表达式1的值为非0值时,表达式2的值作为表达式值,否则表达式3的值作为表达式值 举例: a=-1;b=a0?10:20;/b的值为20 a=1;b=a0?A:B;/b的值为A 求a和b中的最大值 ab?a:b 优先级仅高于逗号运算符和赋值运算符 运算方向具有右结合性,如: ab?c:db?c:(d3?e:f),逗号运算符,,格式: 表达式1,表达式
7、2 逗号运算符在所有优先级别最低 运算方向从左向右 逗号表达式最右侧表达式值作为逗号表达式值举例:求下面表达式的值及a变量的值: a=(5+4,c=6,d=7) a=5+4,c=6,d=7 a=(a=3*5,(a*4,a+5),a+10,位运算符 & | ,位运算是对操作数补码二进制位的运算, &(按位与)、|(按位或)、(按位异或) 、(按位取反) (算数右移)高位补符号位数字 例 5的二进制0001017的二进制000111,位运算符 & | ,位运算是对操作数补码二进制位的运算, &(按位与)、|(按位或)、(按位异或) 、(按位取反) (算数右移)高位补符号位数字 例 5的二进制000
8、1017的二进制000111,位运算符 & | ,位运算是对操作数补码二进制位的运算, &(按位与)、|(按位或)、(按位异或) 、(按位取反) (算数右移)高位补符号位数字,复合运算,C语言中,把一些运算符和=组合起来,同时完成运算符所指的运算及赋值预算,称为复合运算 +=、-=、*=、/=、%=、 因为*=优先级低于+,所以表达式值为10,混合运算,当不同数据类型进行运算时,称为混合运算 运算规律:不同数据类型相遇时,低类型产生一个向高类型的转化值(操作数本身不变化),然后参与运算,这条规则不适应赋值运算 例子: 5/2+3.5 结果为5.5 1/2=0 1.0/2=0.5,强制类型转换,
9、用类型符号把表达式值转换为指定类型 格式:(类型名)表达式 如: (int)(a+b),(float)c; 注意只影响结果,不影响操作数,#include void main() float x;int i;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i); 结果:x=3.600000,i=3,运算符优先级,math.h中提供的数学函数(P40),double fabs(double d) 求绝对值 int abs(int n)求绝对值 double sqrt(double d) 求开平方值 double sin(double a)求正弦值 double cos(double a)求余弦值 double tan(double a)求正切值 double exp(int n) 求en double log(double d)求 ln(d) double log10(double d)求 log10(d) double pow(double x,int n)求Xn,运算符功能 与运算量关系 要求运算量个数 要求运算量类型 运算符优先级别 结合方向 结果的类型,小结:学习运算符应注意,