第5次课数据类型总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

y = x++; <==>
y = x;
x = x + 1;
先将 x 赋值给 y ,然后 x 再加1。
‘前’、‘后’缀以语句为单位,与其他运 算比较执行时间前后。
第五次课
运算规则总结
已知:int x = 2, y = 5, z;(每句都使用变量的初值) z = ++x; z = ++x * ++y; z = x++ * ++y; z = ++x * y++; z = x++ * y++; z = ++x * ++x; 则:x=3, z=3 则:x=3, y=6, z=3*6=18 则:x=3, y=6, z=2*6=12 则:x=3, y=6, z=3*5=15 则:x=3, y=6, z=2*5=10 则:x=4, z=4*4=16
第五次课
运算规则总结
已知以下程序段:int a = 3,b = 4; a = b; b = b^a;a = a^b; 则执行以上语句后a和b的值分别是 B 。 A) a=3,b=4 B) a=4,b=3 C) a=4,b=4 D) a=3,b=3 a: b: a: b: a: 0000 0000 0000 0000 0000 0011 0100 0111 0011 0100
按运算对象的数目分类 单目运算 如 ++、!等 双目运算 如 + 、 - 、 *、 / 等 三目运算 ?:
第五次课
运算规则总结
位运算符
>> << & ∧ |
按位右移(11) 按位左移(11) 按位与 (8) 按位异或(7) 按位或 (6)
a 0 0 1 1
b 0 1 0 1
真值表 a∧b ~a ~b 0 1 1 1 1 0 1 0 1 0 0 0
第五次课
输出正弦曲线
三、 1.0 ** 0.9
0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 -0.1 -0.2 -0.3 -0.4 -0.5 -0.6 -0.7 -0.8 -0.9 -1.0
** x = asin(y)*10 ** ** ** ** ** ** π 2π ** ** 31 62 **-------------------------------------** ** for(i=1;i<=x;i++) printf(“ ”); ** ** printf(“*”); ** ** for(i=1; i<31-2*x; i++) printf(“ ”); ** ** printf(“*”); ** **
printf("%2d:cock=%2d hen=%2d chicken=%2d\n", ++j,x,y,z);
}
运行结果: 1: cock= 0 2: cock= 3 … … 7: cock=12 hen=25 hen=20 … … hen= 4 chicken=75 chicken=77 … … chicken=84
第五次课
运算规则总结
在位运算中,操作数每右移一位,其结果相当 于 B 。
A) 操作数乘以2
C) 操作数除以16
B) 操作数除以2
D) 操作数乘以16
例如:11011010
右移一位 11101101
1 1 1 0 0 1 1 1 0 0 1 1 0000
(注:左移添0,右移添原最高位数0或1。)
(1)已知:int i = 3,计算 i>>1 ?
(结合性→)
~ 按位反 (14)
(结合性←)
1.位运算是对二进制的位 进行运算。 2.只能对int型、char型 和long型进行位运算。
第五次课
运算规则总结
用十进制表示表达式‚12|012‛的值是 D A) 1 B) 0 C) 12 D) 14

12: 0000 1100 012: 0000 1010 0000 1110
2.0
已知:int i; long e; float f; douible d; f = 10 + ‘a’ + i * f - d / e int double double double double 强制类型转换 (类型说明符)变量
第五次课
运算规则总结
运算规则总结 按运算类型分类 1.算术运算符 3.逻辑运算符 5.赋值与赋值组合运算符 7.其它运算符 2. 关系运算符 4. 位运算符 6. 自增自减运算符
一、 1.0 ** 0.9
0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 -0.1 -0.2 -0.3 -0.4 -0.5 -0.6 -0.7 -0.8 -0.9 -1.0
** ** ** ** ** ** ** π 2π ** ** 31 62 **-------------------------------------** ** ** ** ** ** ** ** ** **
1
(2)已知:int i = -3,计算 i>>1 ? -2
第五次课
运算规则总结
赋值与赋值组合运算符 = 赋值 (2) (结合性← ) += -= *= /= %= <<= >>= &= ∧= |= 赋值表达式: 变量 = 表达式
将表达式的值存入变量 所表示的内存单元中。 a += b a = a + b
第五次课
运算规则总结
逗号运算符 逗号表达式的一般形式 表达式1,表达式2,……,表达式n 将两个以上的表达式连接成逗号表达式。 逗号表达式的运算过程 是从左向右,依次对表达式求值。 逗号表达式的值 逗号表达式的值是表达式n的值。
例:x = a = 3 * 5 , a * 4 ; x = ( a = 3 * 5 , a * 4 ); 则:x = 15 ,a = 15 。 则:x = 60 , a = 15 。
第五次课
第三节 数据输出 输出数字梯形
输入行数 n 首数字k,输出数字对称梯形。 例如:输入:5 7 输出图形: 7 8 9 0 1 2 3 2 1 0 9 8 7 8 8 9 9 0 0 1 2 3 2 1
第五次课
第三节 数据输出 输出数字梯形
********* ******* ***** *** * ************* *********** ********* ******* ***** ************* * * * * * * *****
第五次课
输出正弦曲线
二、 1.0
0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 -0.1 -0.2 -0.3 -0.4 -0.5 -0.6 -0.7 -0.8 -0.9 -1.0
x
*
*
*
* 31-2x *
*
*
* *
*
* *
* *
x
*
* * * * *-------------------*-------------------* * * * * * * * * * * * * * * * * * * *
已知:int a=12; a += a -= a * a; (1) a = a - a * a = -132 (2) a = a + ( -132 )
第五次课
运算规则总结
自增自减运算符 ++ 自增 (14) -- 自减 (14) (结合性←)
自增(自减)是单目运算符 只能对
int、char、long 运算 自增(自减)有前缀和后缀之分。 前缀形式:先自增(自减)再引用 后缀形式: 先引用再自增(自减) 功能: 前缀形式 ++x <==> x = x + 1 --x <==> x = x - 1 后缀形式 x++ <==> x = x + 1 x-- <==> x = x - 1
(数据类型)类型转换运算 (14) ←(单目) 指向结构成员运算(15) →
第五次课
第三节 数据输出 输出正弦曲线
y
1
例:在屏幕上输出正弦函数
-1
* *** *** * * * ** * * * * *
*** * * * * * * * * * * * *π * * 0

x
第五次课
输出正弦曲线
第五次课
运算规则总结
(1)++i; i++; 因为在表达式中没有其它运算,结果一样。
(2)x=1; y = ++x;
y = ++x; <==> (3)x =1; y = x++;
运算后结果: x = 2,y = 2
x = x + 1; y = x;
赋值运算之前,x先加1,然后将x赋给 y。
运算后结果: x=2,y=1
第五次课
百钱百鸡问题
丢失重要条件:z应该能够被3整除。 main( ) { int x,y,z,j=0; for(x=0;x<=100;x++) for(y=0;y<=100;y++) for(z=0;z<=100;z++) if(z%3==0&&x+y+z==100&&5*x+3*y+z/3==100 )
7777777777777 8 8 9 9 0 0 11111 7890123456789 8 8 9 7 0 6 12345 7890123210987 8 8 9 9 0 0 12321
第五次课
穷举法
第五次课
程序举例
例:抓交通肇事犯 一辆卡车违犯交通规则,撞人后逃跑。现场有三人目 击事件,但都没有记住车号,只记下车号的一些特征: 甲说:牌照的前两位数字是相同的; 乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是位数学家,说:四位的车号刚好是一个整数的平方。 请根据以上线索求出车号。 问题分析与算法设计 按照题目的要求造出一个前两位数 (i)相同、后两位数 (j)相同且相互间又不同的整数。得到: (1)0<i<=9 0<=j<=9 (2)i!=j (3)1100 * i + 11 * j = m * m (m为整数>=31)
第五次课
百钱百鸡问题
例:百钱百鸡问题
中国古代数学家张丘建在他的《算经》中提出了著 名的‚百钱百鸡问题‛: 鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱 一;百钱买百鸡,翁、母、雏各几何? 问题分析与算法设计
设:要买x只公鸡,y只母鸡,z只小鸡,可得到方程:
x + y + z = 100
5 x + 3 y + z / 3 = 100
第五次课
抓交通肇事犯
main( ) { int i,j,k,m; for(i=1;i<=9;i++) /* i:车号前二位的取值 */ for(j=0;j<=9;j++)/* j:车号后二位的取值 */ if(i!=j) /* 判断两位数字是否相异 */ { k=i*1000+i*100+j*10+j; for(m=31;m*m<k;m++) ; if(m*m==k)/* 判断是否为整数的平方 */ printf("Lorry_No. is %d.\n", k); } } 运行结果:Lorry_No. is 7744.
printf("%2d:cock=%2d hen=%2d chicken=%2d\n", ++j,x,y,z);
} 运行程序,正确的结果: 1: cock= 0 hen=25 2: cock= 4 hen=18 3: cock= 8 hen=11
第五次课
数据类型总结
各类数值型数据间的混合运算
自动类型转换
精度高
double
float 运算过程中的类型转换 (运算器中数据存储) 不是变量本身 数据类型的转换 char
long
unsigned
精度低
int
第五次课
第二节 C 语言的基本数据类型
例: 2.0 +f的 1 / 2; 运算后变量 表达式的值 ? 类型 ?
第五次课
运算规则总结
条件运算 格式 e1 ? e2 : e3
指针运算 例:int *px;
地址运算
例:int a;
指针型变量,保存内存
scanf( “% d ”,& a);
长度(求字节)运算
例: z = sizeof ( int ); 结果 z = 2
第五次课
运算规则总结
其它运算符 * & . -> [ ] ( ) 指针运算 地址运算 结构成员运算 下标运算 圆括号运算 (14) ←(单目) (14) ←(单目) (15) → (15) → (15) →


取值范围:0 <= x、y、z <= 100
可以采用穷举法求解。
第五次课
百钱百鸡问题
main( ) { int x,y,z,j=0; for(x=0;x<=100;x++) for(y=0;y<=100;y++) for(z=0;z<=100;z++) if(x+y+z==100 && 5*x+3*y+z/3==100 )
相关文档
最新文档