c语言运算符优先级与while循环案例

简介:

sizeof可以获取数据类型的内存中的大小(字节)

#include <stdio.h>
#include <stdlib.h>

// standared 标准
// input output 输入/输出
// header 头 .h头文件

int main() // 返回int,如果是void表示没有返回
{

    // 逻辑运算符,位运算符
    int num = 8;
    int sizeOfNum = sizeof(num);
    printf("num的内容空间%d\n",sizeOfNum); // 4

    double num2 = 8;
    int sizeOfNum2 = sizeof(num2);
    printf("num的内容空间%d\n",sizeOfNum2); // 8

    return 0;
}

运算符优先级

#include <stdio.h>
#include <stdlib.h>

// standared 标准
// input output 输入/输出
// header 头 .h头文件

int main() // 返回int,如果是void表示没有返回
{
    // 算术运算符 + - * / %
    // 关系运算符 > < >= <= == !=
    // 逻辑运算符 && || !
    // 位运算符 & | ^ ~

    int num = 10;
    int result = num++ == 10 && --num == 10;

    /** 等同于
    int result1 = (num++ == 10);
    int result2 = (--num == 10);
    int result = result1 && result2;
    **/

    printf("%d\n",result); // 1

    return 0;
}

老九语录,这道题的思路是这样的,你看对不对?自己在讲解的时候,就渐渐的清晰了。学会问问题,学会讲解问题。

() sizeof ++ --

算术运算符 + - * / %

关系运算符 > < >= <= == !=

&&

||

赋值运算符

while循环

#include <stdio.h>
#include <stdlib.h>

int main()
{
    // while循环
    int i = 0;
    while (i<10) {
        printf("第%d遍\n",i);
        i++;
    }

    return 0;
}

while循环

循环三要素,循环变量的初值、判断、更新。也就是i的初值,判断,更新。

#include <stdio.h>
#include <stdlib.h>

int main() {
    // 计算1-100的和
    int sum;
    sum = 0;
    //    sum = (1+100) * 50;
    //    printf("1到100的和为:%d\n",sum);

    int i;
    i = 1;
    while (i <= 100) {
        sum = sum + i;
        i++;
    }
    printf("1到100的和为:%d\n",sum);

    return 0;
}

密码输错案例

#include <stdio.h>
#include <stdlib.h>

int main() {
    // 使用循环实现三次密码错误,推出系统
    int i = 0;
    int password = 123456;
    int inPassword;


    while (i < 3) {
        printf("请输入密码:\n");
        scanf("%d",&inPassword);
        if (inPassword != password) {
            i++;
            printf("您输错了%d次\n",i);
        }
    }

    return 0;
}
#include <stdio.h>
#include <stdlib.h>

int main() {
    // 某宝15年交易额是800亿,按照每年递增25%,哪一年超过2000
    double trade_money = 800;
    int year = 2015;
    while (trade_money <= 2000) {
        trade_money *= 1.25;
        year++;
        printf("%d年交易额.2%lf\n",year,trade_money);
    }

    printf("某宝在%d年,交易额将超过2000亿,交易额为%.2lf\n",year,trade_money);

    return 0;
}

/*
2016年交易额1000.000000
2017年交易额1250.000000
2018年交易额1562.500000
2019年交易额1953.125000
2020年交易额2441.406250
某宝在2020年,交易额将超过2000亿,交易额为2441.406250
*/

小练习挺有意思的。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>

int main() {
    // 这个很有用,否则rand()会一直41
    srand((unsigned) time(NULL));

    // 使用循环模拟实现玩家对战
    // 双方初始值HP均为100
    // 每次攻击5~15
    // HP最先到0或者以下的被KO
    int liubeiHP = 100;
    int sunquanHP = 100;

    int attack;

    int i = 0;
    while(1) {

        printf("************************************\n");
        i++;
        attack = (5 + rand()%11); // %11取值0-10

        if (attack == 15) {
            // 暴击
            attack *= 2;
        }

        sunquanHP -= attack;
        printf("孙权在第%d回合,受到伤害%d,剩余生命值%d\n",i,attack,sunquanHP);
        if (sunquanHP <= 0) {
            printf("孙权败了\n");
            break;
        }

        attack = (5 + rand()%11);
        if (attack == 15) {
            // 暴击
            attack *= 2;
        }
        liubeiHP -= attack;

        printf("刘备在第%d回合,受到伤害%d,剩余生命值%d\n",i,attack,liubeiHP);
        if (liubeiHP <= 0) {
            printf("刘备败了\n");
            break;
        }

        Sleep(500); // 需要引入<windows.h>


    }



    return 0;
}

/*
************************************
孙权在第1回合,受到伤害8,剩余生命值92
刘备在第1回合,受到伤害5,剩余生命值95
************************************
孙权在第2回合,受到伤害11,剩余生命值81
刘备在第2回合,受到伤害13,剩余生命值82
************************************
孙权在第3回合,受到伤害9,剩余生命值72
刘备在第3回合,受到伤害12,剩余生命值70
************************************
孙权在第4回合,受到伤害14,剩余生命值58
刘备在第4回合,受到伤害8,剩余生命值62
************************************
孙权在第5回合,受到伤害14,剩余生命值44
刘备在第5回合,受到伤害30,剩余生命值32
************************************
孙权在第6回合,受到伤害10,剩余生命值34
刘备在第6回合,受到伤害12,剩余生命值20
************************************
孙权在第7回合,受到伤害6,剩余生命值28
刘备在第7回合,受到伤害13,剩余生命值7
************************************
孙权在第8回合,受到伤害13,剩余生命值15
刘备在第8回合,受到伤害8,剩余生命值-1
刘备败了

*/

调试

设置断点。

单步调试。




本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/7847823.html,如需转载请自行联系原作者


相关文章
|
24天前
|
存储 C语言 C++
【c语言】运算符汇总(万字解析)
今天博主跟大家分享了c语言中各种操作符的功能、使用方法以及优先级和结合性,并且与大家深入探讨了表达式求值的两个重要规则--算数转换和整形提升。学习这些知识对我们的C语言和C++学习都有着极大的帮助。
93 2
|
2月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
78 5
|
20天前
|
C语言
【C语言】符号优先级详解 -《谁与争锋 ! 》
理解C语言中的运算符优先级和结合性是编写正确代码的关键。本文详细介绍了C语言中的各种运算符、它们的优先级和结合性,并通过示例展示了如何正确使用这些运算符。掌握这些知识,将有助于编写出逻辑严谨、结构清晰的C语言程序。
57 8
|
20天前
|
C语言
【C语言】条件运算符详解 - 《 A ? B : C 》
条件运算符(也称为三元运算符)是C语言中唯一的三元运算符。它通常用于替代简单的 `if-else` 语句。
65 6
|
1月前
|
C语言
c语言运算符
C的运算符有以下几种: 算术运算符:+、-、*、/、% 结合方向自左向右 关系运算符:>、<、==、>=、<=、!= 逻辑运算符:!、&&、|| 位运算符<<、>>、~、|、^、& 赋值运算符:=及符号扩展赋值运算符(+=、-=、*=、/=) 条件运算符:? : 逗号运算符:, 指针运算符:*、& 求字节运算符:sizeof 强制类型转换运算符:((类型)) 分量运算符:.、-> 下标运算符:[]
35 4
|
2月前
|
C语言
【c语言】循环语句
循环结构是C语言中用于简化重复操作的重要工具,主要包括while循环、do-while循环和for循环。while循环是最基本的形式,通过不断检查条件来决定是否继续执行循环体。do-while循环则先执行循环体,再检查条件,至少执行一次。for循环逻辑更复杂,但使用频率最高,适合初始化、条件判断和更新变量的集中管理。此外,循环中还可以使用break和continue语句来控制循环的提前终止或跳过当前迭代。最后,循环可以嵌套使用,解决更复杂的问题,如查找特定范围内的素数。
48 6
|
2月前
|
编译器 C语言
共用体和结构体在 C 语言中的优先级是怎样的
在C语言中,共用体(union)和结构体(struct)的优先级相同,它们都是用户自定义的数据类型,用于组合不同类型的数据。但是,共用体中的所有成员共享同一段内存,而结构体中的成员各自占用独立的内存空间。
|
2月前
|
存储 Java C语言
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
45 3
|
2月前
|
C语言
C语言条件运算符详解
C语言条件运算符,也称为三元运算符,是一种简化if-else语句的表达式,形式为:条件?表达式1:表达式2。当条件为真时,计算并返回表达式1的值;否则计算并返回表达式2的值。它可用于快速实现简单的条件分支逻辑。
|
2月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向