C语言从零开始(4)

C语言从零开始(4),第1张

C语言从零开始(4)
  1. 位运算
  2. 输入与输出
  3. 控制语句
  1. 位运算

& 、|、 ~、 ^、 << 、>>

(1)与运算

1101 0101

& 0110 0011

0100 0001

案例:将1101 0111的0~2位清零

1101 0111

& 1111 1000 (~0000 0111)

1101 0000

(2)或运算

1010 0101

| 1110 1110

1110 1111

案例:将1010 0101的3~5位变成101

1010 0101

& 1100 0111

1000 0101

| 1010 1101

1010 1101

(3)取反

~1010 1111 --->0101 0000

(4)异或

1101 0111

^ 0101 1001

1000 1110

(5)左移

 

左移:高位丢弃,低位补0

(6)右移

无符号数:低位丢弃,高位补0

 

有符号数:低位丢弃,高位补1

 

2、输入和输出

函数:有独立功能的模块

标准输入输出函数:scanf、printf(对变量类型没有限制)

字符的输入输出getchar、putchar

输入:从键盘拷贝的内存(通过键盘给变量赋值)

输出:从内存拷贝数据到显示屏(打印变量)

int printf(“格式控制串”,输出表);

格式控制串:原样输出的内容(可省)+格式化符

输出表:要输出的对象

整型:

%d:十进制整型数

%o:八进制整型数

%x、%X:十六进制整型数

#:自动在八进制和十六进制前面加前缀

%u:无符号整型数

%hd:short类型

%ld:long类型

%lld:longlong 类型

 

字符:

%c:字符型

 

浮点型:

%f:float

%lf:double

%e:指数

%g:选择小数和指数中较短的一个

.n:保留n个小数

 

m:指定输出的域宽,默认是右对齐,m的值大于数据的实际长度,左边补空格,否则,原样输出

 

int scanf(”格式控制串”,地址表);

 

注意:

  1. scanf格式串语句中,不要加修饰语,如果要加,必须原样输入
  2. 在输入时如果要给多个变量赋值,在格式串中如果没有间隔,那么在键盘输入时,以空格、回车、Tab键作为一个变量的输入结束
  3. 全部输入结束,必须以回车作为结束符
  4. 如果是“%c%c”时,在输入时不能有空格、Tab键或者回车,因为空格、Tab键、回车也是字符

案例:

 

解决办法:1、%c%c之间加空格或者逗号(输入时必须原样输入)

  2、加%*c,*代表的是抑制符

 

3、字符的输入和输出

int getchar();

返回值:从键盘得到的字符的ASCII码

char a;

a = getchar( );

int putchar(int c);

参数c:你要输出的字符的ASCII码值

 

注意:处理垃圾字符,在中间加getchar()

4、控制语句

if else、switch case、 for、 while 、do…while、 goto

1、顺序结构

语句按照一定的顺序去执行

  1. 选择结构

(1)单分支if语句

if(表达式

{

语句;

}

判断表达式的值是否成立,如果成立,执行语句

(2)双分支if语句

if(表达式)

{

语句1;

}

else

{

语句2;

}

判断表达式的值是否成立,如果成立,执行语句1,如果不成立,执行语句2

注意:else后面不能跟表达式

案例:输入一个年份,判断该年是平年还是闰年

 

(3)多分支if语句

if(表达式1)

{

语句1;

}

else if(表达式2)

{

语句2;

}

else if(表达式3)

{

语句3;

}

………………..

else if(表达式n)

{

语句n;

}

else

{

语句n + 1;

}

从上至下,依次判断表达式的值,如果表达式成立,执行对应的语句,跳出整个if语句

案例:输入隐藏分,判断段位等级

60分以下:英勇黄铜

60 —— 70:不屈白银

70 —— 80:荣耀黄金

80 —— 90:华贵铂金

90以上:璀璨钻石

 

(4)嵌套if语句

if(表达式1)

{

if(表达式2)

{

语句1;

}

else

{

语句2;

}

}

else

{

if(表达式3)

{

语句3;

}

else

{

语句4;

}

}

作业:1、输入三个整数,求最大值(嵌套if语句)

  2、输入年份,月份,输出该年的该月有多少天(switch case)

  3、求1~10和(for、while)

  4、输入年,月,日,输出该天是该年的第多少天(选做)

(5)switch语句

switch(表达式)

{

case 标号1:

语句1;

break;

case 标号2:

语句2;

break;

case 标号3:

语句3;

break;

  ………………………

case 标号n:

语句n;

break;

default:

    语句n + 1;

break;

}

注意:(1)表达式不能为浮点型

 (2)标号必须为常量

 (3)当表达式的值==标号时,执行冒号之后的语句,直到switch case语句执行结束为止,或者遇到break结束

 

案例:

int a = 5;

switch(a)

{

case 2: printf(“2n”);

default: printf(“不存在该选项n”);

case 4:

case 1: printf(“1n”);

case 3: printf(“3n”);break;

      case 0: printf(“0n”);

}

案例2:输入年份、月份,输出该年该月由多少天

 

  1. 循环结构

什么是循环?重复的做某一件事

循环的三要素:循环的初始条件、循环的终止条件、循环变量的变化方式

1、for循环

for(表达式1;表达式2;表达式3)

{

循环体;

}

表达式1:循环的初始条件

表达式2:循环的终止条件

表达式3:循环变量的变化方式

执行过程:先执行表达式1的值,然后在执行表达式2的值,如果表达式2的值为真,执行循环体,否则,退出for循环,再执行表达式3的值,如此反复执行,直到表达式2的值为假时,跳出循环

案例:

 

思考?表达式1,2,3的值可不可以省略

(1)

 

(2)

 

(3)

 

注意:表达式1、表达式2、表达式3的值都是可以省略的,但是分号不能省

练习:

1、for(i = 0; i < 2 ; i++)

{

     for(j = 0; j < 2; j++)

     {

     }

}

每一次循环 i,j的值各是多少

第一次:i = 0,j = 0;第二次:i = 0,j = 1;第三次:i = 1,j = 0;第四次:i = 1,j = 1

 

2、打印一下内容

*

***

*****

*******

 

2、while语句

while(表达式)

{

循环体;

}

判断表达式的值是否成立,如果成立,执行循环体,否则,结束循环

 

3、do..while语句

do

{

循环体;

}while(表达式);

 

break、continue

break:1、结束循环 2、跳出switch语句

continue:结束本次循环,开始下一次循环

 

区别:while先判断再执行,循环体至少执行0次

  do…while先执行再判断,循环体至少执行1次

4、死循环

for( ; 1 ; )

{

}

while(1)

{

}

5、goto语句

无条件跳转语句,一般格式为goto 语句标号;

语句标号是按照标识符写的符号

 

注意:形成循环,必须要把判断条件写在语句中间,不然会死循环

goto loop;

loop:

案例:

设x和y均为int型变量,则执行以下的循环后,y值为 (     )
          for(y=1,x=1;y<=50;y++)
     {    
  if(x==10)break;
              if (x%2==1)
              {
x+=5;
continue;
   }                        
               x-=3;                                     
      }
      A)2     B)4     C)6     D)8

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5116029.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-17
下一篇2022-11-17

发表评论

登录后才能评论

评论列表(0条)

    保存