首页 > 其他分享 >运算符、表达式和语句

运算符、表达式和语句

时间:2023-04-16 22:37:26浏览次数:34  
标签:语句 ch return int void 运算符 printf include 表达式

运算符、表达式和语句

  1. 关键字 ---> whiletypedef
  2. 运算符 ---> =-*/%++--
  3. 复合语句、自动类型转换、强制类型转换
  4. 编写带有参数的函数

while循环

示例代码:

# include<stdio.h>
# define ADJUST 7.31
int main(void)
{
    const double SCALE = 0.333;
    double shoe, foot;

    printf("鞋宽, 脚长\n");
    shoe = 3.0;
    while (shoe < 18.5)
    {
        foot = SCALE * shoe + ADJUST;
        printf("%10.1f %15.2f inches\n", shoe, foot);
        shoe = shoe + 1.0;
    }

    printf("请参考上述内容选鞋.\n");

    getchar();

    return 0;
}

while循环结构:

关键字( 循环条件 ) {循环代码块}

基本运算符

+-*/% ---> 需要注意的是无法整除的数系统会自动截取整数部分舍弃小数部分

术语: 数据对象、左值(可修改左值)、右值、运算符

示例代码:

# include<stdio.h>

int main(void)
{
    int jane, tarzan, cheeta;

    cheeta = tarzan = jane = 68; // 三重赋值 ---> 可修改左值 = 赋值数

    printf("cheeta   tarrzan   jane\n");
    printf("%4d %8d %8d\n", cheeta, tarzan, jane);

    getchar();

    return 0;
}

指数增长:

示例代码:

# include<stdio.h>
# define SQUARES 64 // 棋盘中的方格数目

int main(void)
{
    const double CROP = 2E16; // 当时世界小麦年产谷粒数
    double current, total;
    int count = 1;

    printf("square    grains        total      ");
    printf("fraction of \n");
    printf("世界总产量\n");
    total = current = 1.0;

    printf("%4d %13.2e %12.2e %12.2e\n", count, current, total, total/CROP);

    while (count < SQUARES)
    {
        count += 1;
        current *= 2;
        total = total + current;
        printf("%4d %13.2e %12.2e %12.2e\n", count, current, total, total/CROP);
    }

    printf("这就全部的谷子数!\n");

    getchar();

    return 0;
}

sizeof运算符和size_t类型:

示例代码:

# include<stdio.h>

int main(void)
{
    int n = 0;
    size_t intsize;

    intsize = sizeof(int);

    printf("n = %d, n 占 %zd 字节; 所有的整数占 %zd 字节.\n", n, sizeof n, intsize);

    getchar();

    return 0;
}

特点:

  1. sizeof返回一个size_t类型的值,这是一个无符号整数类型

typedef的作用:

  1. 给某种类型定义别名

示例代码:

# include<stdio.h>

int main(void)
{
    typedef double real;
    real n;
    
    printf("你希望看到的单精度浮点数:\n");
    scanf("%f", &n);
    getchar();
    printf("你输入的数是: %.2f", n);
    
    getchar();
    
    return 0;
}

练习代码:

# include<stdio.h>
# define SEC_PER_MIN 60

int main(void)
{
    int sec, min, left;
    sec = -1;

    printf("输入你想要转变成时间的秒数:\n");

    do
    {
        scanf("%d", &sec);
        if (sec < 0)
        {
            printf("输入有误,请重新输入!\n");
        }else if (sec == 0)
        {
            break;
        }else {
            min = sec / SEC_PER_MIN;
            left = sec % SEC_PER_MIN;
            printf("输入的秒数转化成分钟数以后是: %d 分钟, %d 秒!\n", min, left);
            printf("输入下一个想转化的秒数: \n");
        }
        sec = -1;
    } while (sec < 0);
    
    printf("结束!");

    return 0;
}

递增/递减运算符:

示例代码:

# include<stdio.h>

int main(void)
{
    int a = 1, b = 1;
    int a_post, pre_b;

    a_post = a++; // 后缀递增 ---> 使用a之后给递增a
    pre_b = ++b; // 前缀递增 ---> 使用b之前递增b
    /* 
    需要注意的是这两种赋值结果完全不一样
    */

    printf("a  a_post      b      pre_b:\n");
    printf("%d, %3d, %8d, %7d", a, a_post, b, pre_b);

    getchar();

    return 0;
}

递增变式:

# include<stdio.h>

int main(void)
{
    int a = 1, b = 1;
    int a_post, pre_b;

    a_post = 2*++a; // 首先a先递增1,其次2*a赋值给a_post
    pre_b = 2*b++; // 首先2*b,其次b递增1
    /*
    需要注意递增这个操作不能简单地视为a + 1;因为在与乘算的时候前缀递增有限计算递增
    */

    printf("a  a_post      b      pre_b:\n");
    printf("%d, %3d, %8d, %7d", a, a_post, b, pre_b);

    getchar();

    return 0;
}

注意前缀递增与乘法运算符一起计算的时候的运算规律

前缀递增与其他符号的结合:

# include<stdio.h>
# define MAX 100

int main(void)
{
    int count = MAX - 98;
    int i = 0;

    while (--count > 0) // 先递减为1,在对测试条件求值
    {
        printf("%d", count);
        i += 1;
        printf("循环次数: %d \n", i);
    }
    
    getchar();

    return 0;
}

递增变式2:

# include<stdio.h>

int main(void)
{
    int num = 0;

    while (num < 21)
    {
        printf("%10d %10d \n", num, num*num++);
        /**
        第一次打印的结果是 1 0,因为先递增num在进行赋值,所以第一个num是1
        */
    }s

    getchar();

    return 0;
}

语句:

示例代码:

# include<stdio.h>

int main(void)
{
    int count, sum;

    sum = 0;
    count = 0;

    while (count++ < 20)
    {
        sum = sum + count;
        printf("sum = %d\n", sum);
    }

    getchar();

    return 0;
}

类型转换

示例代码:

# include<stdio.h>

int main(void)
{
    char ch; // 8位
    int i; // 32位
    float fl;

    fl = i = ch = 'C'; // 'C'被作为1字节的ASCII值存储在ch中,i接受'C'转换的整数,4字节存储67,fl则是接受67转换的浮点数67.00
    printf("ch = %c, i = %d, fl = %2.2f\n", ch, i, fl);
    ch += 1; // 'C'被转换成了67,然后+1,变成68(4字节整数,被截断为1字节存储在ch中)最后根据ASCII值为'D'
    i = fl + 2 * ch; // ch->4字节整数68,68*2 = 136,转成浮点数(203.00f),转成int存储在i中
    fl = 2.0 * ch + i; // i为转成浮点数的203,ch转为整数68*2,最终的结果是203+136=339
    printf("ch = %c, i = %d, fl = %2.2f\n", ch, i, fl);
    ch = 1107; // 由于char类型是1位,1107已经超出,最终的打印的结果是1107%256=83,打印结果是83的ASCII码
    printf("Now ch = %c\n", ch);
    ch = 80.89; // 浮点数,被截断,阶段以后的值对应的ASCII码是'P'
    printf("Now ch = %c\n", ch);

    getchar();

    return 0;
}

强制类型转换

# include<stdio.h>

void pound(int n)
{
    while (n-- > 0)
    {
        printf("#");
    }
    printf("\n");
}

int main(void)
{
    int times = 5;
    char ch = '!';// ASCII码为33,1字节
    float f = 6.0;

    pound(times);
    pound(ch); // 变为4字节33传入
    pound(f); // = pound((int)f);

    getchar();

    return 0;
}

标签:语句,ch,return,int,void,运算符,printf,include,表达式
From: https://www.cnblogs.com/JunkingBoy/p/17324274.html

相关文章

  • Java运算符优先级分析
    packagecom.zt.javase01;publicclassTest2{publicstaticvoidmain(String[]args){intn=10;n+=(n++)+(++n);System.out.println(n);//输出32/*(n++)(++n)从左到右执行因此(n+......
  • 【c#表达式树】最完善的表达式树Expression.Dynamic的玩法
    【c#表达式树】最完善的表达式树Expression.Dynamic的玩法 引言在我第一次写博客的时候,写的第一篇文章,就是关于表达式树的,链接:https://www.cnblogs.com/1996-Chinese-Chen/p/14987967.html,其中,当时一直没有研究Expression.Dynamic的使用方法(因为网上找不到资料),就......
  • C语言--循环语句
    for循环循环语句中for语句最为常用,其格式为:for(表达式1;表达式2;表达式3)循环语句;不可在for循环内修改循环变量,防止for循环失去控制。循环体表达式可省略但非必要不建议省略。Q:1、请问下列循环要循环多少次?#includeintmain(){inti=0;intk=0;for(i=0,k=0;k......
  • 11.退出循环的语句指令
    1.exit 退出循环,退出脚本  2.break  结束当前循环,或者跳出本次循环,继续执行外面的循环 3.continue 忽略本次循环剩余的代码,直接执行下一次循环 4.案例:发放公钥主机脚本先扫描内网网段的所有主机,存活的主机进行发放本机的公钥 ......
  • 存储类、运算符
    C存储类​ 存储类定义C程序中变量/函数的的存储位置、生命周期和作用域。这些说明符放置在它们所修饰的类型之前。下面列出C程序中可用的存储类:autoregisterstaticexternauto存储类auto存储类是所有局部变量默认的存储类。定义在函数中的变量默认为auto存储类,这......
  • 2023高效的mysql 随机语句 200万数据为例 用了 0.0030秒
    是的,如果数据表中有200万条记录,使用 ORDERBYRAND() 这种方式来随机选择记录会非常慢,因为MySQL需要对整个表进行排序,然后再返回指定数量的记录。这个过程需要消耗大量的时间和资源。为了提高效率,可以考虑使用其他方法来实现随机选择记录。以下是一些常用的方法:使用 WHER......
  • C语言 选择结构(分支语句)
    前言:在我们初学C语言学习的时是顺序结构,这是最简单程序结构。在顺序结构中,各语言都是按自上而下的顺序执行的,执行完上一个语句就自动执行洗一个语句,是无条件的,不用作任何判断。实际上,在很多情况下,需要根据某个条件是否满足来决定是否执行指定的操作,或从给定的两种或多种操作选择一......
  • java语句
    语句语句是以;或}或)结尾的一段代码,目的是执行某些操作,并且没有返回值。语句块和方法体也算语句。所以,语句是可以嵌套的。函数体是一个有名称的语句。对于拥有子语句的语句,称为复合语句,否则就是简单语句。 简单语句空语句:;;;方法调用语句:setVal(34);表达式语句:i......
  • Vue2.0 学习 第三组 条件语句
    本笔记主要参考菜鸟教程和官方文档编写。1.v-if在div或者之类的dom中使用v-if可以控制是否插入该dom,控制由v-if的true和false决定。如:<divid="app"><divv-if="test"></div></div><script>newVue({el:"#app",data:{test:true}})</script>2.v-show......
  • JavaScript运算符与表达式
    目录一、===二、||三、??与?.???.四、...五、[]{}[]{}一、===严格相等运算符,用作逻辑判断1==1 //返回true1=='1' //返回true,会先将右侧的字符串转为数字,再做比较1==='1' //返回false,类型不等,直接返回falsetypeof查看某个值的类型typeof1 //返回'number'ty......