第三部分类型转换,运算符和条件结构

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);
}

以上是关于第三部分类型转换,运算符和条件结构的主要内容,如果未能解决你的问题,请参考以下文章

使用Java语言深入理解程序逻辑:条件结构精讲(觉得不行的可以点赞加关注,下次再来评价)

Java学习-----01.Java基础

Java 第三章

第三次实验报告

Java 第三章 运算符和条件结构 笔记

1.联系-----条件结构与三目运算符的关系