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(循环条件){
    循环操作语句
}
  • 循环三要素
  1. 循环变量的初值
  2. 循环变量的判断
  3. 循环变量的更新

  先判断,再执行

 


循环习题

淘宝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; //每次循环数字都要去掉个位数字 }

 

posted @ 2017-11-30 23:42  BooneZan  阅读(174)  评论(0编辑  收藏  举报