第三部分类型转换,运算符和条件结构
Posted fanzy1103
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三部分类型转换,运算符和条件结构相关的知识,希望对你有一定的参考价值。
一、类型转换
1.自动类型转换
原则:把范围小的类型的值转换到范围大的类型的值
short < int < long < float < double
2.强制类型转换
double num = 6;//小类型转换大类型--自动类型转换
int num1 = (int)num;//大类型转换小类型--强制类型转换
二、运算符
1.赋值运算符
单等号=(计算顺序:从右向左)
复合赋值运算符
int num = 10;
num += 5;//等价为num = num + 5;
//输出结果为num=15;
2.算术运算符
一元运算符:++、--
二元运算符:+、-、*、/、%(mod取余)
以下示例为++前置与后置的区别:
int num = 10;
num ++;//等价为num = num + 1;
//输出结果为num=11;
int num = 10;
++num;//等价为num = num + 1;
//输出结果为num=11;
int num = 10;
int result = num ++;
//输出结果为result=11,num=11;
int num = 10;
int result = ++ num;
//输出结果为result=10,num=11.
3.关系运算符
==(恒等)、!=(不等)、> 、<、>=、<=
拓展:C语言中,0表示false,1表示true
4.逻辑运算符
运算符 | 表达式 | 说明 |
---|---|---|
&&并且 | 条件1&&条件2 | 两个条件同时为真,结果为真 |
||或 | 条件1||条件2 | 两个条件中只要有一个为真,结果为真 |
! | !条件 | 条件为真,结果为假;反之亦然 |
三、运算符优先级
从上往下运算符级别依次降低
()、sizeof、++、-- (最高级)
!
算术运算符
关系运算符
&&
||
赋值运算符(最低级)
四、条件结构
if结构(if...else...、if...else if...else..)
if(条件为真)
{
代码块1;
}
else if()/else
{
代码块2;
}
if结构语句实例
#include <stdio.h>
void main()
{
double flowerprice;//鲜花的价格
//打印剧情
printf("在一个月黑风高的夜晚
");
printf("一个小男生用自己的零花钱给女生买了一束鲜花
");
printf("小女生问小男生鲜花的价格:“这花多少钱?”
");
printf("小男生回答说:");
//录入鲜花价格
scanf("%lf",&flowerprice);
//模拟小女孩反应
if(flowerprice > 999999)
{
printf("小女孩直接昏了过去!
");
}
else if(flowerprice >= 100000 && flowerprice <= 999999)
{
printf("明天就结婚!
");
}
else if(flowerprice >= 10000 && flowerprice < 100000)
{
printf("拉拉手意思意思,明天再约!
");
}
else
{
printf("好吧,我们是朋友,你是个好人!
");
}
}
switch结构
switch(表达式)
{
case 常量1:
语句1;
break;//跳出switch循环结构
case 常量2:
语句2;
break;
......
default://所有case都不满足条件时,执行default
语句;
}
注意:1.表达式只能为整型或字符型;
2.case后的常量表达式的值不能相同;
3.case后允许多条语句,不需要大括号;
4.如果不添加break语句,需要注意执行顺序,没有break会继续向下执行语句,直至遇到break;
5.case与default的字句的先后顺序可以自行改变,但default不在最后时需要加上break;
6.default语句可以省略。
switch结构与多重if结构对比
相同点:都是用来处理多分支条件的结构
不同点:switch:等值条件判断----条件是有限个的时候
? 多重if:判断某个连续区间时的情况
第三章上机练习
一、输入 3 个整数 x、y 以及 z,请把这三个数从小到大输出。
先比较x与y的值,如果x>y,则互换x与y的值;在比较x与z的值,如果x>z,则互换x与z的值;然后比较y与z的值,如果y>z,则互换y与z的值。根据以上思想就可以按从小到大的顺序输出。
#include <stdio.h>
void main()
{
//定义三个整数以及中间值a
int x,y,z,a;
//输入三个整数
printf("请输入第一个整数:");
scanf("%d",&x);
printf("请输入第二个整数:");
scanf("%d",&y);
printf("请输入第三个整数:");
scanf("%d",&z);
printf("输入的三个整数为:%d %d %d
",x,y,z);
//比较三个数的大小
if(x > y)
{
a = x;
x = y;
y = a;
}
if(x > z)
{
a = x;
x = z;
z = a;
}
if(y > z)
{
a = y;
y = z;
z = a;
}
printf("按从小到大的顺序输出三个数为:%d %d %d
",x,y,z);
}
二、为某商城编写一个程序,完成顾客购物后根据优惠政策计算付款项的功能。 某商城有如下优惠政策:
1. 所有的本商城的会员购物享受 9 折优惠。
2.对于非会员的顾客购物满 100 元,也可以享受 9 折优惠。
3. 本身是会员,并且购物满 100 元可以享受 8 折优惠。
假如某顾客从该商城购买了三件商品,请计算该顾客可得到的折扣额(如果有),以及打折后需支付的金额。
#include <stdio.h>
void main()
{
char VIP;//y表示会员,n表示非会员
float cost;//三种优惠政策的折扣额
float jiage1,jiage2,jiage3;//三件商品原价
float sumcost;//三件商品总价
float zhehouprice;//打折后价格
fflush(stdin);//清空缓存区
printf("该顾客是否为会员?");
scanf("%c",&VIP);
printf("请输入第一件商品价格:");
scanf("%f",&jiage1);
printf("请输入第二件商品价格:");
scanf("%f",&jiage2);
printf("请输入第三件商品价格:");
scanf("%f",&jiage3);
sumcost = jiage1 + jiage2 + jiage3;
if(VIP == 'y' && sumcost >= 100)
{
cost = 0.2 * sumcost;
}
if(VIP == 'y' || sumcost >= 100)
{
cost = 0.1 * sumcost;
}
zhehouprice = sumcost - cost;
printf("三件商品原价为:%.2f
",sumcost);
printf("三件商品折扣额为:%.2f
",cost);
printf("三件商品折扣后价格为:%.2f
",zhehouprice);
}
三、编写一个程序,要求用户输入今天是星期几,根据用户的输入判断是工作日还是周末,并显示合适的问候语。
#include <stdio.h>
void main()
{
int day;//星期几的整型变量
printf("请输入今天是星期几,输入数字即可:");
scanf("%d",&day);
if(day > 7 || day < 1)
{
printf("请输入1-7以内的数字!
");
}
if(day >= 1 && day <= 5)
{
printf("今天是工作日哟!努力工作,加油挣钱!
");
}
if(day == 6 || day == 7)
{
printf("今天可以休息了!想想该怎么玩吧!
");
}
}
四、在老九商城,顾客只要购买的商品数量大于等于 10 件,并且购物总额大于等于 1000 元, 商店就给顾客 15%的折扣。接收购物数量以及总金额,要求计算出折扣额和折扣后的应付金额。
#include <stdio.h>
void main()
{
int num;//定义整型变量商品数量
float price;//定义浮点型变量总金额
float zhekou = 0;//定义折扣额
float cost;//实际付款金额
printf("请输入商品数量:");
scanf("%d",&num);
printf("请输入总金额:");
scanf("%f",&price);
if(num >= 10 && price >= 1000)
{
zhekou = 0.15 * price;
}
cost = price - zhekou;
printf("商品折扣额为:%.2f",zhekou);
printf("折扣后应付金额为:%.2f",cost);
}
五、接收一个字符,例如用”+”表示加法,用”-”表示减法。接收 num1 和 num2 两个数,如果 输入的字符为”+”,则将这两个数相加并显示结果;如果输入的字符为“-”,则将这两个数 相减并显示相应的值。
#include <stdio.h>
void main()
{
int num1,num2,num;//定义两个数及最后结果
num = 0;
char ch;//定义一个符号常量表示+-号
printf("请输入两个数num1,num2:
");
scanf("%d",&num1);
scanf("%d",&num2);
printf("请输入字符(+代表两数相加,-代表两数相减):");
scanf("%c",&ch);//这里输入字符情况下会有一些问题,他会自动识别回车的字符,因为在输入第二个数字之后直接输入该字符,或者把输入字符的代码放到输入数字前即可(请自行研究)
if(ch == '+')
{
num = num1 + num2;
}
else if(ch == '-')
{
num = num1 - num2;
}
printf("
最后的值为:%d",num);
}
以上是关于第三部分类型转换,运算符和条件结构的主要内容,如果未能解决你的问题,请参考以下文章