C语言程序设计(第2章)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、算术运算
①算术运算符 + - * / %
++ ––
例: 14%(-4)=2 -14%(-4)=-2 20.4%2(出错)
例:若 int a=7;float x=2.5,y=4.7; 则表达式
x+a%3*(int)(x+y)%2/4 的值是什么?
2.500000 (1/4 为 0)
例: float x,y; x%y;
② C 程序的语句都是用
结束。
③ 用来在屏幕上显示信息的库函数是
。
④ 用来从键盘读取数据的库函数是
。
⑤ C 程序中
用来提高程序的可读性。
⑥ 若 x 和 n 均是 int 型变量,且 x 和 n 的初值均为 5,则计算表达式 x+=n++后,x 的值为 ,
n 的值为 。
⑦ 若有定义:int b=7; float a=2.5,c=4.7;则以下表达式的值为
六、数据的输入和输出 结论: 格式字符与对应输出项类型要一致,否则正确的运算结果不能得到正确的显示结果。
六、数据的输入和输出 二、数据输入 1.格式输入函数 scanf()
格式: scanf( “¡¡”,&变量名 1,&变量名 2,¡ , &变量名 n );
例: scanf( “ %d,%d,%d ” , &a, &b, &c );
。
a+(int)(b/3*(int)(a+c)/2)%4
⑧ 若 a 是 int 型变量,且 a=6,则计算表达式 a+=a-=a*a 后,a 的值为
。
⑨ 假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为
。
⑩ 判断 char 型变量 c1 是否为小写字母的正确表达式是
。
A) 'a'<=c1<='z'
printf(“%d”, !0+5) 结果为 6 注意:! 优先于关系运算符,与++、--同级。
常用优先级: !、++、-- >算术运算符 >关系运算符 >&& >|| >赋值>逗号
五、算术运算符和算术表达式(续) 五、算术运算符和算术表达式(续) 五、算术运算符和算术表达式(续) 五、算术运算符和算术表达式(续) ⑧sizeof 运算符 sizeof 运算符是一个单目运算符,用以计算操作数在内存中占用的字节数。它的操作数可以是以 下两种情况:
实型¡ª单精度(float)
4 字节 6~7 位有效数字
双精度(double)
8 字节 15~16 位有效数字
注意事项 整型≠整数
int 的范围: - 32768~+32767 Example:
#include <stdio.h> #include <conio.h>
main() { int a ;
五、算术运算符和算术表达式(续) 关于优先级和结合方向:
C 语言规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次 序执行。如果在一个运算对象两侧的运算符的优先级别相同,则按规定的结合方向处理。
(各种运算符的优先级和结合性见 P375 附录Ⅲ) 【例】设 i、j 初值分别为 3 和 4,则执行 j+=i-=1;后 i ,j 的值为多少? 【例】若 x=7;则 x+=x-=x+x 的值是多少?
clrscr( );
printf(“Input :”); scanf(“%d”,&a);
printf(“a=%d\n”,a); }
注意事项 数据存储形式
字符型按 ASCII 码存储,其余以补码存储 复习: 二进制数的定点和浮点表示 定点表示法——小数点位置是“固定的”
定点数可用于表示整数。整数在机器中用补码表示。 对于 int a=8,b=-8;
变量)
char a=‘U’ ;
char b=“U”; (b 被置为某随机值)
转义字符例题分析
什么时候要使用转义字符?
转义字符只在特殊情况下才使用:
C 程序中需要实现某些特写打印或显示动作时
如
printf(“123\t56\n”);
C 程序中需要打印或显示以下三个字符时
\ (斜杠) " (双引号) ' (单引号)
C 语言程序设计 第二章 数据类型、运算符与表达式
集美大学计算机基础教研室
一、C 语言的数据类型
C 语言的数据类型 P16
基本类型
字符型(char)
1 字节
整型¡ª短整型(short int ) 2 字节
基本型(int)
2 字节(-32768~32767)
长整型(long int ) 4 字节(±21 亿)
●类型标识符; ●一个表达式 五、算术运算符和算术表达式(续) 六、数据的输入和输出 一、数据输出 1、字符输出函数 格式:
putchar(c) 其中 c 为字符型或整型的常量、变量及其表达式 功能: 每次向屏幕输出一个字符供显示。 六、数据的输入和输出 2.格式输出函数 printf( ) 格式: printf( “¡¡”,输出项 1,输出项 2,¡ ,输出项 n );
复习: 二进制数的定点和浮点表示
浮点表示法——小数点位置是“浮动的”。 在计算机中一个浮点数由两部分组成:阶码和尾数,阶码是指数,尾数是纯小数。浮点表
示法可用于表示带小数的数。
(110.011)B=1.10011×2+10=11001.1 × 2-10 =0.110011 × 2+11
即: N=数符×尾数×2 阶符×阶码
(出错)
五、算术运算符和算术表达式(续)
②自反算术赋值运算符(复合的赋值运算符)
+= -= *= /= 等
解法:将 b*=…看作 b=b*(…),其余类推
例: c=b*=a+3
相当于(1)a+3 (2)b=b*(a+3) (3)c=b
例:若 i 、j 的初值分别为 3 和 4,则执行
j+=i- =1 后 i 、j 的值为多少?
功能:
从键盘上读入一个字符,但后两个函数输入后无需回车。getch( )还有一个功能,即不把读入的
字符回显到屏幕上,常用于密码输入或菜单选择。getchar( )包含在 stdio.h 中,getche( )和 getch( )
包含在 conio.h 中。
第二章作业
一、填空
① C 程序都是从 函数开始执行。
main()
{
float i=3,j=4;
printf(“%d\n”,sizeof(i+j) );
}
/*结果为 8(双精度)*/
两个整型数相除,其值也一定是整型数(取商之整数部分)。
3/2 的值为 1 而非 1.5
强制类型转换
例一:
(int)3.5 的值是多少?
五、算术运算符和算术表达式
C 语言运算符(13 类)
int i =5; i ++; y= i ;
(
五、算术运算符和算术表达式(续)
i =6, y=6)
五、算术运算符和算术表达式(续)
④逗号运算
C 语言中逗号可作分隔符使用,将若干变量隔开
如 int a,b,c;
又可作运算符使用,将若干独立的表达式隔开,并依次计算各表达式的值。其一般形式
表达式 1,表达式 2,¡,表达式 n;
‘A’
‘?’
(只能单字符单引号)
错误:‘ABC’ “A” ‘’’ ‘”’ ‘\’
转义字符
如回车符、单引号、反斜杠等
在程序中这些符号用表 3.3 所示的“转义字符”表示。
字符串(用双引号括起)
“A” “?” (以‘\0’为字符串结束标志)
注意:用 char 定义的字符变量只能接受字符常量,而不能接受字符串常量(C 语言中无字符串
五、算术运算符和算术表达式(续) 五、算术运算符和算术表达式(续) ⑥逻辑运算
逻辑运算符: &&(与运算符) 运算符两边均为真时,结果为真
||(或运算符) 运算符两边均为假时,结果为假 !(非运算符) 将运算符右边真假倒置 逻辑运算符的任一端如果为非 0 数,则视为¡°真¡±,为 0 则视为假。 【例】printf(“%d”, !3+5) 结果为 5
五、算术运算符和算术表达式(续)
③自加、自减运算符
++(自加运算符)--(自减运算符)
用法: +1 -1 运算
a、前缀形式
int i=5; x = ++ i ; y= i ; (x=6, i =6, y=6)
int i =5; ++ i ; y= i ;
(
i =6, y=6)
b、后缀形式
int i =5; x = i ++; y= i ; (x=5, i =6, y=6)
三、变量
赋值
例: b=(a=3+5) a=b=c=d=3+5
(结果均为 8)
例:int a=b=c=d=3+5
(语法错误,除非 b,c,d 定义过)
正确:int a, b=a=3+5;
例: c=3+(a=5)*6
结果:c=33,a=5(一个语句可以有几个赋值运算)
变量必须先定义后使用
变量名必须符合标识符命名规则
逗号表达式的求解过程:先求表达式 1 的值,再求表达式 2 的值…,最后求表达式 n 的值。
整个逗号表达式的值是最后一个表达式 n 的值。
在 C 语言所有运算符中,逗号表达式的优先级最低。
五、算术运算符和算术表达式(续) 五、算术运算符和算术表达式(续) ⑤关系运算(比较运算)
关系运算符: > < >= <= == != 关系表达式: 含有关系运算符的表达式 特别注意 a≤X≤b 之类算式的正确写法 : a<=x && x<=b(错误写法:a<=X<=b)
尾数的位数决定数的精度 阶码的位数决定数的范围
注意事项
整型和字符型均可为 unsigned (无符号型)
即将符号位亦作为数值位(默认为 signed)
此时 int 的范围 0~65535
char 的范围 0 ~255
Let’s try¡
二、常量
整型常量
十进制数
12
-12l 或 -12L
700000ul
B) (c1>=a)&&(c1<=z)
C) ('a'>=c1)||('z'<=c1)
D) (c1>='a')&&(c1<='z')
二、教材:
P66 第 3.6 3.9 3.10 题
P89 4.6 4.9 思考题
要求: 源程序要求按缩进形式书写,代码端正整齐。
1、编写一个程序,从键盘输入任意一个五位数,把这个数值分解为单个数字,然后打印出每一
六、数据的输入和输出 注意: scanf( )函数没有输出功能(即不会向屏幕显示任何字符) 也不能规定小数位数(m.n) 典型错误:
scanf( “a=%d,b=%d,c=%d \n”,&a,&b,&c); scanf( “ %5.2f “,&x );
2.字符输入函数 格式:
getchar( ) getche( ) getch( )
如
printf(“You’re a \”a bad egg!\” ” );
C 程序中需要打印或显示 ASCII 表中非键盘字符时
如
printf(“ Look \16 and \x80 !”);
Hale Waihona Puke Baidu
字符串常量有关问题
‘A’与“A”的区别
问题(判断正误):
char c=“China”;
char c=‘China’; “China”占几个字节?‘\141’占几个字节?
l 长整型及双精度 注:long 型的数据宜用%ld,double 型宜用%lf
h 表示短整型 如 %hd %hx 六、数据的输入和输出
格式字符(规定了输出的数据形式): %d 输出十进制整数 %x 以十六进制无符号形式输出整数 %o 以八进制无符号形式输出整数 %u 以无符号十进制数形式输出整数 %f 输出小数形式浮点数(double 型用%lf ) %s 输出字符串 %c 输出单字符
八进制数
012
-012l
十六进制数 0x12 -0x12l
实型常量
十进制形式 123.45
2.0
( 必有小数点)
指数形式
2.45e-4 1.13E3 (e 或 E 前为数,后为整数)
实型常量本身无单或双精度,其机内精度取决于赋给那类变量(影响有效数字位数。)
字符常量/字符串常量
字符常量
普通字符(可显示字符)
个数字(每个数字之间用三个空格分开)。例如用户输入了 42339,屏幕输出结果为:
例:printf( “x=%d,y=%f\n” , x , x+3 ); 六、数据的输入和输出
格式说明的一般形式: % - 0 m.n l(或 h) 格式字符
- 左对齐输出 0 数字前的空位填 0 m 输出域宽(长度,包括小数点)
如数据的位数小于 m,则左端补以空格 如数据的位数大于 m,则按实际位数输出 n 输出精度(小数位数) l 或 h 长度修正符
四、数据间的转换(混合运算)
数据的类型级别
基本规则
不同类型运算量参加运算,遵守“向高看齐”的类型一致化规则:将长度较短的运算量转换为长
度较长的运算量,以保证不丢失信息。
将实型常量赋给整型变量,将被自动取整
int a=7.999999 ;
等效于 int a=7;
float 型只要参加运算,均自动转为 double。