c语言n次方怎么输入_30分钟看懂C语言学习路线(2)

C语言代码编写规范

第一个:注意缩进

用tab键缩进对齐

第二个:适当的空行

第三个:注释,简明扼要

C语言注释只有两种写法:

第一种:单行注释 //注释文字

第二种:块注释 /* 注释的内容 */,块注释不能嵌套

尤其是重要的核心代码必须写注释

第四个:命名,通俗易懂,英文,千万不要用拼音

C语言中的运算符

算术运算符 + - * / % (取余)

关系运算符 > < == != >= <=

逻辑运算符 ||逻辑或 &&逻辑与 !逻辑非

指针运算 * &

三目运算符 ?:

求数据类型大小,变量大小 sizeof

位运算 & | ~ ^

组合运算 += -= *= = &= |=

移位运算 >> <<

自增自减 ++ --

(1) 除法

情况一:

两个整数相除,结果取整,而且不会四舍五入

情况二:

除法运算中有一个是小数

1/2 --》结果不是0.5 是0

16/3 --》5

2/3 --》

#include int main(){    //int a=1/3;    int a=2/3;    float b=2/3;    float c=2.0/3;  //  2/3.0    2.0/3.0    int d=2.0/3;    printf("%d",a);    printf("%f",b);    printf("%f",c);    printf("%d",d);}

结果如下:

00.0000000.6666670

(2)取余,计算余数

只能用于整数运算 15%2 余数1

15.0%2 不对的,小数不能参与取余运算

实际开发作用:

除法和取余配合实现获取一个数的各个位

任意输入一个整数,编程得到这个整数总共多少位,各个位分别是多少

7545

(3)逻辑运算,跟条件判断配合在一起使用

if(a>b)

数学中: 10

C语言中: if(x>10 && x<100)

if(姓名==zhang || 姓名==王) //或者

if(姓名==zhang && 富二代) //并且

重点:区分==和=

==用来判断变量是否相同 if(a==b)

= 赋值运算符号

C语言规定的真和假

非零就是真 1 18 -9

零就是假

表达式一 || 表达式二 || 表达式三 //从左到右,有一个条件为真,后面的都不用运算了,整个表达式都为真

表达式一 && 表达式二 && 表达式三 //从左到右,有一个条件为假,后面的都不用运算了,整个表达式都为假

if(有房&&有车&&帅)

逻辑非 真--》假

假--》真

#includeint main(){    int a=78;    int b=8;    if(!(ab");}

结果如下:

a>b

(4) 三目运算符

表达式1?表达式2:表达式3

判断表达式1是否为真

为真 --》执行表达式2

为假 --》执行表达式3

#include int main(){    int a,b;    printf("请输入两个整数!");    //scanf("%d",&a); //获取键盘输入整数保存到变量a的地址中    //scanf("%d",&b);    scanf("%d%d",&a,&b);        //用三目运算符比较他们的大小    int ret=(a>b)?a:b;        printf("%d和%d中较大的一个数是:%d",a,b,ret);}

结果如下:

请输入两个整数!152015和20中较大的一个数是:20

(5)位运算(重点)

对整数的二进制进行运算

按位与 & 只要有一个是0结果就是0,全部都是1,结果就是1

比如: 18&16结果是多少? int a=89; int b=96; a&=b; //等价于 a=a&b;

18 --》二进制 10010

16 --》二进制 10000

10000

特点: 任意一个整数要求把它的第三位二进制置0,其它位不允许改变

125--》二进制1111101 --》最终希望的结果1111001

1111101 --》125

1111011 &

1111001

任何二进制位跟1进行按位与运算结果保持不变

任何二进制位跟0进行按位与运算结果一定是0

按位或 | 只要有一个是1,结果就是1,全部都是0,结果就是0

比如: 18|16结果是多少?

18 --》二进制 10010

16 --》二进制 10000

10010

特点:实际开发中,用位或运算去设置某一位二进制为1

int a=785;

785

00000.....100 或

任何二进制位跟0进行按位或运算结果保持不变

任何二进制位跟1进行按位或运算结果一定是1

按位异或 ^ 相同为0,相异为1

比如: 18^16结果是多少?

18 --》二进制 10010

16 --》二进制 10000

00010

特点:实际开发中我想把某个数的二进制取反

比如: int a=785 第三位二进制取反

785

0000........100 异或

一个数跟自己异或,结果为0 a^a结果为0

异或满足交换律 a^b^a等价于 a^a^b

一个数跟0异或,结果保持不变 a^0结果为a

按位取反 ~ 0变成1 1变成0

比如: ~18结果是多少?

18 --》二进制 10010

~18 --》 01101

(6)组合运算(复合运算)

+= a+=10; //等价于 a=a+10;

(7)移位

左移 << 把一个整数的二进制整体向左移动若干位,低位补0

18<<2; //18左移2位

0000000000.........10010<<2

特点:一个数左移n位,相当于乘以2的n次方

右移 >> 把一个整数的二进制整体向右移动若干位,高位补什么??

算术右移: 高位补符号位

逻辑右移: 高位补0

特点:一个数右移n位,相当于除以2的n次方

(8)自增和自减

a++ 后置++ 先使用a原本的值,然后再把a加1赋值给自己

++a 前置++ 先把a加1,然后再使用加一之后的a

a-- 后置-- 先使用a原本的值,然后再把a减1赋值给自己

--a 前置-- 先把a减1,然后再使用减一之后的a

#include int main(){    int a=78;    //int b=a++; //后置++    int b=++a; //前置++    int c=a++;    printf("b is:%d  a  :%d   c:%d",b,a,c);}

结果如下:

b is:79  a  :80   c:79

练习:

1. float a=1.6;

if(a==1.6) //请问这个条件是否成立,为什么

#include int main(){    float a=1.6;  //不能精准表示,整数部分和小数部分    float b=1.5;  //可以精准表示    if(b==1.5)        printf("b==1.5");    else        printf("b!==1.5");            if(a==1.6)  //某些小数在计算机中是无法精准表示的    //左边的a是个变量,它里面存放的是1.6的二进制的近似值    //右边的1.6是个常量,精度高一些        printf("a==1.6");    else        printf("a!==1.6  a is:%f",a);}

结果如下:

b==1.5a!==1.6  a is:1.600000

2. int a=10;

int b=6;

if((a<2)||(b=18))

printf("a ,s:%d b is:%d",a,b);

if((a<12)&&(a>b)&&(a=96))

printf("a ,s:%d b is:%d",a,b);

#include int main(){    int  a=10;    int  b=6;    if((a<2)||(b=18)) //判断a<2或者18赋值给b        printf("a is:%d    b  is:%d",a,b);                if((a<12)&&(a>b)&&(a=96))        printf("a ,s:%d    b  is:%d",a,b);}

结果如下:

a is:10    b  is:18

3. 用三目运算符实现三个整数求最大值

#include int main(){    int a,b,c;    printf("请输入三个整数!");    scanf("%d%d%d",&a,&b,&c); //scanf("%f",&m);    //分步骤写    int firstmax=(a>b)?a:b;    int max=(firstmax>c)?firstmax:c;    //合并写    //int result=((a>b)?a:b)>c?((a>b)?a:b):c;        printf("最大值result is:%d",max);}

结果如下:

请输入三个整数!5 9 4 最大值result is:9

总结按位或,按位异或的特点

完成任意一个整数m,要求把它的第三位二进制置零,置一,取反,其它二进制位不允许改变

将这个数&0xfffb,将第三位置0;

将这个数|0x0004,将第三位置1;

将这个数^0x0004,将第三位取反;

2e8e9240dbc3f6c11ec293ec695305b5.png
4782270f70e6da62a76fa8772caae8aa.png

感谢观看,给个赞再走呗~~!获取更多干货视频资料后台私信我吧。