20171130C语言知识点梳理
运算符和条件结构
-
sizeof运算符
使用sizeof运算符可以获得数据类型占用内存空间的大小 ,sizeof()是运算符不是函数,sizeof(++ num)编译器不管++,只量num的长度。
-
逻辑运算符
运算符 | 表达式 | 说明 |
&& 与 | 条件1 && 条件2 | 两个条件同时为真时,结果为真 |
| | 或 | 条件1 | | 条件2 | 两个条件有一个为真时,结果为真 |
! 非 | ! 条件 | 条件为真时,结果为假;条件为假时,结果为真 |
-
运算符优先级
! 、 ( ) 、sizeof()、++ -- 、
算数运算符
关系运算符
&&
| |
赋值运算符
-
位运算符
运算符 | 作用 | 示例 |
& | 按位与 | 两个操作数同时为1结果为1 |
| | 按位或 | 两个操作数只要有一个为1,结果就为1 |
~ | 按位非 | 操作数为1,结果为0;操作数为0,结果为1 |
^ | 按位异或 | 两个操作数相同,结果为1,;两个操作数不同,结果为0 |
<< | 左移 | 右侧空位补0 |
>> | 右移 | 左侧空位补符号位 |
>>> | 无符号右移 | 左侧空位补0 |
例:5 & 6 → 0101 & 0110 = 0100 → 5 & 6 = 4
5 | 6 → 0101 | 0110 = 0111 → 5 | 6 = 7
~ 5 → ~0101 = 1010 → ~5 = 7
5 >> 1 → 0101 >> 1 = 0010 → 5 >> 1 = 2
5 << 1 → 0101 << 1 = 1010 → 5 << 1 = 10
-
三元运算符
三元运算符?类似条件语句if, int num = 5 > 6 ? 45 : 90 ;
如果5>6为真, num为45,如果5>6为假,num为90。
short sex = 0; //0--男 非0--女 printf("%s\n",sex?"女":"男");
循环
while循环
- 基本语法
while(循环条件){ 循环操作语句 }
- 循环三要素
- 循环变量的初值
- 循环变量的判断
- 循环变量的更新
先判断,再执行
循环习题
淘宝2015年的双十一交易额为800亿,并且每年以25%的增长趋势增长,求双十一交易额达到2000亿的年份
double money = 800; //循环变量的初值,初始交易额为800亿 int year = 2015; //时间初值 while(money <= 2000){ //循环变量的判断,小于等于2000时执行 money = (1+0.25)money; //循环变量的更新,每年递增百分之25 year++; //循环计数,循环一次+1 } printf("当%d年时,交易额达到2000亿。",year)
猴子每天吃桃子总数的一半,然后扔一个,第十天刚好剩1个,求一共多少 桃
int peach = 1; //循环初值,桃子第十天剩一个 int day = 9; //桃子第十天的数已知,只需从第九天开始算,循环加到第一天 whlie(day > 0){ peach = (peach + 1) * 2 day--; } printf("桃子的总数是:%d\n",peach);
打印斐波那契数列
1,1,2,3,5,8,13,21,34......打印十个
int i = 0; int a = 1; int b = 1; while (i < 5) { printf("%d\n%d\n",a,b); //先打印第一个第二个 a = a + b; //a是第三个数,用第一第一二个相加赋值 b = a + b; //b是第四个数,用第三第四个数相加,赋值 i++; //每次打印两个数,显示10个数,i取一半5 }
取出9527的每一位数字,并加5模10,用单独循环计数器计算位数
int num = 9527; //使用单独的循环计算数字的位数
int counter;
int tempNum = num;
while (tempNum != 0) { counter++; tempNum / 10; } //每一位:+5%10 //取出每一位的原理: //个位:=num % 10; //十位:=num /10 % 10; 去掉个位再模10 //百位:=num /10 /10 %10; 规律每次/10 while (num != 0) { //当最后9除以10时候为0 ,停止循环 int temp = num % 10; temp = (temp + 5) % 10; printf("%d\n", temp); num /= 10; //每次循环数字都要去掉个位数字 }