C语言基础(linux)

一 输入和输出 

 1.整数 [%d]

      <1>输入整数

      int data;

      scanf("%d",data);//错误 

      scanf("%d",地址值);

      scanf("%d",&data);

 注意:C源中获取变量的地址 : &变量名

     int data1,data2;

    scanf("%d",&data1);

    scanf("%d",&data2);或 

   scanf("%d%d",&data1,&data2);

例如:

100200回车键   => 错误 

=======================================

100 200回车键  => 正确 

100回车 

200回车 

 

<2>输出整数 

printf("用户的内容%d\n",变量名);

printf("The data is %d\n",data); "\n:输出结束后,换行"

printf("The data is d% /n",data);//错误 

printf("The data is %d \n",&data);//错误 

printf("The data is %d %d\n",data1,data2);

练习:

int a,b,c;给三个变量输入值 100 200 300 

最后输出a,b,c的值,输出的格式=> a:100  b:200  c:300

2.浮点数 [%f] 

float a;

scanf("%f",&a);

printf("a = %f",a);

printf("a = %.1f",a);//精确到小数点后面1bit

printf("a = %.2f",a);//精确到小数点后面2bit

注意:输入的时候,空格或回车符作为分格符号 

练习:

float a,b,c;

 输入的值:0.5  0.3  1.4

输出的格式:a = 0.5,b = 0.3,c = 1.4

3.字符[8bit] [%c]

=================================================================================

C语言中的数据:整数 ,小数,字符,字符串

字符: '字母'  a(不是字符)   'a'(字符)

注意:

字符实际在内存中存储的时候,是以ASCII(整数

(对字符的编码[0-255]: 0-127  标准的ASCII碼  128-255:IBM公司扩展)的形式存储

Linux 通过man ascii 查看ASCII碼表

需要记住:

'\0'->0   'a'->97  'A'->65   '0':48 

 

'A'  + 32 ---> 'a'   'a'- 32-->'A'

 

'0' - ('0')[48] -->  0      '1' - '0'[48] ---> 1

================================================================================

<1>输入 

scanf("%c",&a);

scanf("%c%c",&a,&b);

注意:此时连续读入字符(空格和回车符不作为输入的分割符);

<2>输出 

printf("a = %c\n",a);

练习:

char a,b,c,d;

输出的结果a=3  b=a  c=4  d=f

练习:

输入整数 200 250 300 给变量   a b c,然后输出 

输入字符 '3' '5' 'f' 给变量   d e f,然后输出 

输入小数 1.34 5.67 8.12 给变量h i j,然后输出 

二 C语言运算符 

1.自增加[++] ,自减少[--];

int a = 100;

a --; //a = a - 1

a ++; //a = a + 1

注意:

如果自增加/减少 前置的时候,先操作,然后拿值

如果自增加/减少 后置的时候,先拿值,然后操作

b = a --;  // b = a, a = a -1

b = --a;  //  a = a - 1,b = a

练习:

给变量a,b,c输入值100,200,300 

然后让a自增加1,赋值给c ,让 的值赋值给c,然后自减1 ,最后输出a,b,c的值 

2.算术运算符 

加 + ,减 ,乘 ,除 / , 求余  %

注意:

<1> /”  如果计算的两个数是整数,则为整除  10 / 3 = 3 ,  3 / 10 = 0

<2> "%"  要求计算的两个数必须是整数        10 % 3 = 1 ,  3 % 10 = 3

练习:

输入两个数,将计算结果输出

3.关系运算符 

 大于  >  , 小于 < ,大于等于 >= ,小于等于  <=  ,等于  == ,不等于  != 

注意:

<1>关系运算符运算的结果 : 0[关系不成立]   1[关系成立]

<2>C语言中非0即为真

4.逻辑运算符 

逻辑与 && (且的关系) ,逻辑或 || (或的关系) , 逻辑非 !(->真,真->)

注意:

<1>&& 它的两个表达式的值,只要有一个为假,则运算结果为假 (一假必假)特点[短路]:当第一个表达式计算结果为假的时候,第二个表达式将不会计算

 <2>|| 它的两个表达式的值,只要有一个运算结果为真,则最终运算的结果为真(一真必真)特点[短路]:当第一个表达式计算结果为真的时候,第二个表达式将不会计算

 练习:

int a = 'a', b = 'b';将ab的值做减法,结果赋值给a,a = a - b;  //a = -1,b = 98 

value = a ++ && b --; 

printf("value = %d ,a = %d,b = %d\n",value,a,b);/value = 1,a = 0,b = 97

value = a || b ++;

printf("value = %d ,a = %d,b = %d\n",value,a,b);//value = 1,a = 0,b = 98

value = (a > b) || (a <= b);

printf("value = %d ,a = %d,b = %d\n",value,a,b);//value = 1,a = 0,b = 98

value = !a && !b;

printf("value = %d ,a = %d,b = %d\n",value,a,b);//value = 0,a = 0,b = 98

5.位运算符

按位与 , 按位 |, 按位异或 ^,按位反 ~ , 左移  <<  , 右移 >>

   10101 

&  01010

--------------------- 0则为0

   00000 

 

   10101 

|  01010

-------------------- 1则为1

   11111 

   10101 

~

------------------- 01,10

   01010 

 

   10101 

^  00110

-------------------- 相同为0,不同为1

   10011 

 

<1>思考:如何判断两个数是否相等(不用关系运算符)?

    用 "^",如果两个数相等,异或的结果必定是0,否则不为1

  10101 

^ 10101 

--------------

  00000 

<2>思考:有个data值,我想将它的[0-3]bit变成1010,其它位不变?

        data = data & ~0xf 

data = data | 0xa 

例如:

data = 45;

    1   1  1   0  1      

~0xf

    1   0  0   0  0 

-----------------------------

    1  0   0   0  0

0xa 

0  1   0   1  0

|

--------------------------------

    1  1   0   1  0

 

//1 1 1   1 1 1 1

练习:把这个data[0-6]位变成0100100,其它位不变

data = data &  ~0x7f;

data = data |  0x24

===============================================================

逻辑移位[无符号类型变量]:

左移的时候,右边补0

右移的时候,左边补0

算术移位[有符号类型变量]:

正数

左移的时候,右边补0

右移的时候,左边补0

负数

左移的时候,右边补0

右移的时候,左边补1

===============================================================

练习:

char c;

unsigned char a = 0xfd;

char b = 0xfd;

 

c = a << 3;

c = a >> 3;

c = b >> 3;

c = b << 3;

6.赋值运算符号

= , += , -= ,*= ,/= , %=

a += 3 ;// a = a + 3

a *= 3 ;// a = a * 3

7.三目运算符 

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

结果:如果表达式1的值为真,则计算结果为表达式2计算的结果,否则为表达式3计算的结果

练习:

1.输入一个数,将这个数[0-3]位变成0101 ,[5-6]变成 00,其它位不变 

2.输入两个数,将这两个数的值交换 [思考:如何不引入第三个变量,完成交换]

a = 3

b = 4

3.输入三个数,将三个数,从小到大,排列,然后输出 [不允许使用if语句]

a = 3;

b = 2;

c = 5;      =>a = 2; b = 3; c  = 5;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值