day03运算符和分支循环语句

本文介绍了C语言的基础知识,包括extern、const、volatile、register关键字的作用,字符串的表示,以及printf和scanf函数的使用。讲解了字符、字符串、整数、浮点数的输出格式,还涉及算术运算符、逻辑运算符、if分支语句和switch分支结构。同时,文章提供了编程练习,如找出三只小猪中最重的体重、实现敲7的游戏以及求水仙花数的逻辑。
摘要由CSDN通过智能技术生成

extern:
    表示声明。 没有内存空间。 不能提升。

const:
    限定一个变量为只读变量。

volatile:

    防止编译器优化代码。

    volatile int flg = 0; 

register:

    定义一个寄存器变量。没有内存地址。

    register int a = 10;    

字符串:

    C语言中,用双引号引着的一串字符,称之为字符串。一定有一个结束标记'\0'

    char ch = ‘A’;  一个字节

    "abc"  --> 'a''b''c''\0'

    ‘a’ 不等价 “a”('a''\0')

printf函数:

    %s:打印字符串, 挨着从字符串的第一个字符开始打印,打印到'\0'结束。

    %d:打印整数

    %c:打印字符

    %x:打印16进制数

    %u:打印无符号

    %m.n: 打印实型时用到,一共有 m 位(整数、小数、小数点),n位小数。

    %0m.nf: 其中 f:表示打印实型,一共有 m 位(整数、小数、小数点),n位小数。 0:表示不足 m 位时,用0凑够m位。

    %%: 显示一个%。 转义字符'\' 对 % 转义无效。

    %Ns:显示N个字符的字符串。不足N用空格向左填充。

    %0Ns:显示N个字符的字符串。不足N用0向左填充。

    %-Ns:显示N个字符的字符串。不足N用空格向右填充。

putchar函数:

    输出一个 字符 到屏幕。

    直接使用 ASCII 码。

    不能输出字符串。

    ‘abc’既不是一个有效字符,也不是一个有效字符串。

    常用putchar('\n');来打印换行。

    printf("\n");

scanf函数:

    从键盘接收用户输入。

    1. 接收 整数 %d

        int a, b, c;  创建变量空间, 等待接收用户输入。

        scanf("%d %d %d", &a, &b, &c);

    2. 接收 字符 %c

        char a, b, c;
    
        scanf("%c %c %c", &a, &b, &c);
    
    3. 接收 字符串 %s

        char str[10];    // 定义一个数组,用来接收用户输入的 字符串。

        scanf("%s", str);    // 变量名要取地址传递给 scanf, 数组名本身表示地址,不用 & 符。

    接收字符串:

        1) scanf 具有安全隐患。如果存储空间不足,数据能存储到内存中,但不被保护。【空间不足不要使用】

        2) scanf 函数接收字符串时, 碰到 空格 和 换行 会自动终止。不能使用 scanf 的 %s 接收带有空格的字符串。

        
    将 #define _CRT_SECURE_NO_WARNINGS  添加到程序 第一行。 解决scanf 4996错误


getchar()函数:

    从键盘获取用户输入的 一个字符。

    返回该获取的字符的 ASCII 码。


算数运算符:

    先 * / % 后 + -

    除法运算后,得到的结果赋值给整型变量时,取整数部分。

    除0 :错误操作。不允许。

    对0取余:错误操作。不允许。

    不允许对小数取余。余数不能是 小数。 35 % 3.4;

    对负数取余,结果为余数的绝对值。10 % -3;  --》 1

++ 和 --:

    前缀自增、自减:

        先自增/自减, 在取值。

        int a = 10;

        ++a;        // a = a+1;

    后缀自增、自减:

        int a  = 10;

        a++;        // a = a+1;

        先取值, 再自增/自减。

赋值运算:

    int a = 5;

    a += 10;  // a = a+10;

    a -= 30;  // a = a-30;

    a %= 5;      // a = a % 5;

比较运算符:

    == 判等。

    != 不等于.

    < 小于

    <= 小于等于    

    > 大于

    >= 大于等于


    13 < var < 16; ==> var > 13 && var < 16;

逻辑运算符:

    0为假,非0为真。(1)

    逻辑非:!

        非真为假, 非假为真。

    逻辑与: &&(并且)

        同真为真,其余为假。

    逻辑或:|| (或)

        有真为真。同假为假。
    
运算符优先级:

    []() > ++ -- (后缀高于前缀) (强转) sizeof > 算数运算(先乘除取余,后加减)> 

    比较运算 > 逻辑运算 > 三目运算(条件运算)> 赋值运算 > 逗号运算    


三目运算符: ? :

    表达式1 ? 表达式2 : 表达式3

    表达式1 是一个判别表达式。 如果为真。整个三目运算,取值表达式2。

                    如果为假。整个三目运算,取值表达式3。

    默认结合性。自右向左。

类型转换:

    隐式类型转换:

        由编译器自动完成。

        由赋值产生的类型转换。 小--》大 没问题。 大 --》 小 有可能发生数据丢失。

        int r = 3;

        float s = 3.14 * r * r;

        321:    256 128 64 32 16 8 4 2 1
            1   0   1  0  0  0 0 0 1 

        char ch  = 0   1  0  0  0 0 0 1     

    强制类型转换:

        语法:    (目标类型)带转换变量

            (目标类型)带转换表达式

        大多数用于函数调用期间,实参给形参传值。


if分支语句:匹配一个范围.属于模糊匹配.

    if (判别表达式1)
    {
        
        判别表达式为真,执行代码。
    }
    else if(判别表达式2)
    {
        判别表达式1为假,并且判别表达式2,执行代码。

    }
    else if(判别表达式3)
    {
        判别表达式1为假,判别表达式2为假,判别表达式3, 执行代码。
    }
    。。。
    else
    {
        以上所有判断表达式都为假, 执行代码。
    }

练习:三只小猪称体重:

        
    屏幕输入三只小猪的重量。借助if分支语句,找出最重的小猪重量。


switch 分支:精确匹配.

    switch(判别表达式)
    {
        
        case 1:
            执行语句1;
            break;            // 防止case穿透

        case 2:
            执行语句2;
            break;

        case 3:
            执行语句3;
            break;
        ...

        case N:
            执行语句N;
            break;

        default:
            其他情况的统一处理;
            break;
    }

    case 穿透:

        在一个case分支中如果,没有break;那么它会向下继续执行下一个case分支.

        
while循环:

    while(条件判别表达式)
    {

        循环体.
    }

练习:敲7:1--100数数, 逢7和7的倍数,敲桌子。

    7的倍数:    num % 7 == 0

    个位含7:    num % 10 == 7

    十位含7:    num / 10 == 7


do while 循环:

    无论如何先执行循环体一次。然后在判断是否继续循环。

    do {

        循环体

    } while (条件判别表达式);

    
练习:求水仙花数。 一个三位数。各个位上的数字的立方和等于本数字。      234   861

    100 -- 999

    int num  = 100;

    个位数: int a = num % 10;           a*a*a;

    十位数: int b = num / 10 % 10; 

    百位数: int c = num / 100;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值