Day06_操作符-类型转换及分支语句

本文介绍了C语言的基础知识,包括位操作符、单目位操作符、三目运算符、隐式类型转换、流程控制语句(if、分支)、switch-case语句,以及循环语句(for)。通过具体实例,如闰年判断、红绿灯练习、表达式计算等,详细阐述了C语言的应用。还预习了循环嵌套、while循环、do...while循环等内容,为深入学习C语言提供了实践指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2013年10月11日 星期五 10时12分25秒

回顾:
 略
 
作业:
 1.闰年练习
 2.红绿灯练习

移位操作符可以把二进制位统一向左或者向右移动n位
向左移动使用<<表示
向右移动使用>>表示
移位操作符要求左右两边都是可以当作数字使用的
左边的数字是要进行移位操作的数字
右边的数字是移动的位数

如果移位操作过程中没有丢失有效数位则左移N位相当于乘以2的N次方,右移n位相当于除以2的n次方

左移操作右边空位置一定填充0
右移操作时无符号数据左边一定填充0,有符号数据左边填充符号位

 ~  是单目位操作符
这个操作符可以对一个二进制数字进行按位求反操作

&操作符可以获得一个变量的地址,只能对变量进行操作
地址数据使用%p做占位符

*操作符可以根据一个地址数据表示对应的变量

三目操作符需要三个数字配合使用
三目表达式可以根据一个布尔值从两个数字中选择一个作为结果
三目表达式的格式如下:
 布尔值 ? 结果1 : 结果2
如果布尔值为真则选择结果1,如果布尔值为假,则选择结果2
  1 /*
  2    三目运算符练习
  3  */
  4
  5 #include <stdio.h>
  6
  7 int main()
  8 {      
  9         int num=0,num1=0;
 10         char o;
 11         printf("请输入一个表达式:");
 12         scanf("%d%c%d",&num,&o,&num1);
 13         num=( o=='+' ? num+num1 : num-num1);
 14         printf("%d\n",num);
 15 }
---------------------------------------------------------
一个表达式中如果包含多个不同类型的数据,计算机会首先对他们进行类型转换,然后再计算
这个转换过程叫做隐式类型转换
隐式类型转换过程中会把占地小的数据转换成占地大的数据类型
如果参与计算的数据所占空间大小一样但是类型不同,则按照int转float,有符号类型转无符号类型

在C语言程序中可以给任何一个数字指定一个类型,这叫做强制类型转换
强制类型转换不受规则的限制,可以任意转换。
强制类型转换的语法如下
(char)10
强制类型转换不会修改原有数据,只是做出一个新数据
新数据的类型是制定的类型,数值来自于原有数据
---------------------------------------------------------
流程控制语句可以改变程序的执行顺序
分支是一种流程控制语句,可以从几组语句中选择一组执行
if语句是一种实现分支的语句,格式如下:

if(布尔值1)      //有且只能有一个
{
 语句组1
}
else if(布尔值2)   //可能没有,可能很多
{
 语句组2
}
else
{
 语句组3    //最多一个,可能没有
}

利用语句组之间的互斥和互补关系编写if分支
-----------------------练习-1--------------------------
/*
   用户给定一个年月计算月有多少天 
  */
  1 #include <stdio.h>
  2
  3 int main()
  4 {
  5         int year,month;
  6     printf("请输入年月:");
  7     scanf("%04d%02d",&year,&month);
  8     if(month%2!=0 && month != 9 && month!= 11 &&month !=2)
  9     {
 10             printf("这个月有31天\n");
 11     }
 12     else if(month==2)
 13     {
 14             if((year % 400 ==0) || ( year % 4==0 && year %    100!=0))
 15             {
 16                     printf("这个月有29天\n");
 17             }
 18             else
 19             {
 20                     printf("这个月有28天\n");
 21             }
 22     }
 23     else
 24     {
 25             printf("这个月有30天\n");
 26     }
 27 }
------------------------练习-2--------------------------
  1 /*
  2    计算出用户给定的四个数字中的最大数
  3  */
  4
  5 #include <stdio.h>
  6
  7 int main()
  8 {
  9         int num1,num2,num3,num4,max,max1;
 10         printf("请输入四个数字:");
 11         scanf("%d %d %d %d",&num1,&num2,&num3,&num4);
 12         max= num1>num2 ? num1 : num2;
 13         max1=num3>num4 ? num3 : num4;
 14         if(max>max1)
 15         {
 16                 printf("最大数为%d\n",max);
 17         }
 18         else
 19         {
 20                 printf("最大数为%d\n",max1);
 21         }
 22 }
--------------------------------------------------------
switch...case 语句也可以用来实现分支

循环语句可以让一组语句反复不停执行
for语句是一种循环语句

编写for语句的时候需要首先声明一个变量(循环变量)
找到程序执行过程中一组相关数字并确定开始数字和结束数字的值
使用一对小括号描述循环变量的从开始数字变化到结束数字的过程
(把循环变量赋值成开始数字;用逻辑表达式描述循环变量和结束数字之间的` 关系;描述循环变量的变化方式)
在小括号前边加关键字for
在小括号后边加入一对大括号,其中包含反复执行的语句

循环变量每次取一个新的数值,则大括号内部的语句就执行一遍


预习:
 1.循环语句(循环嵌套,while循环,do...while循环)

作业:
 1.使用循环打印如下内容
 1 X 9 = 9
 2 X 8 = 16
 ...
 5 X 5 = 25
 2.使用循环判断用户给定的一个非负数是不是素数
 3.使用循环模拟摘花瓣的过程
 4.使用循环解决鸡兔同笼的问题
   40个头,100只脚
 5.使用循环解决砝码问题



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值