运算符、表达式和语句

1.循环简介

while循环

/*shoes2.c--计算多个不同鞋码的脚长*/
#include<stdio.h>
#define ADJUST 7.31      //字符常量
int main(void)
{
    const double SCALE = 0.333;//const变量
    double shoe, foot;

    printf("shoe size (mwn's)  foot length\n");
    shoe = 3.0;
    while (shoe < 18.5)     /*while循环开始*/
    {                       /*块开始*/
        foot = SCALE *shoe + ADJUST;
        printf("%10.1f %15.2f inches\n", shoe, foot);
        shoe = shoe + 1.0;
    }                        /*块结束     */
    printf("if the shoe fits,wear it .\n");

    return 0;
}

解释while循环原理

当程序第一次到达while循环时,会检查圆括号中的条件是否为真,表达条件如(shoe<18.5)

2.基本运算符

C用运算符(operator)表示算术运算,基本运算符有:“=,+,-,*和/".C语言中没有指数运算符,不过,C标准数学库提供了一个pow()函数用于指数运算。例如,pow(3.5,2.2)返回3.5的2.2次幂。

2.1   赋值运算符:=

在C语言中,=并不意味着“相等”,而是一个赋值运算符例如:bmw=2002,=左侧是变量名(实际上,赋值运算符左侧必须引用一个存储单位,最简单的方法为使用变量名,后面会学着使用指针),右侧是赋给该变量的值赋值行为从右往左进行,读作:把2002赋给变量bmw。

数据对象:赋值表达式语句的目的是把值储存到内存位置上。对于储存值的数据存储区域统称为数据对象(date objet)。使用变量名是标识对象的一种方法。除此之外换可以:可以指定数组元素,结构成员,或者使用指针表达式(指针中储存的是他所指向对象的地址)

左值:用于标识特定数据对象名称或表达式。他只的是一个对象,所以引用内存中的地址;他可以赋值在运算符左侧,再后来标准中新增的const限定符创建的变量不可修改。

//golf.c--高尔夫锦标赛记分卡
#include<stdio.h>
int main(void)
{
    int jane, tarzan, cheeta;

cheeta=tarzan=jane=68;
    printf("                cheeta  tarzan jane\n");
    printf("first round score %4d %8d %8d\n", cheeta, tarzan, jane);
    return 0;

}

 

 

许多其他语言都会回避该程序中的三重弄赋值,但是C完全没问题。赋值顺序从优往左看:首先把68赋给jane,然后再付给Tarzan,最后附个cheetah

加法运算符:printf("%d",4+20);打印的是24,并非4+20.

减法运算符:如把200.0赋给takehome;takehome=224.00-24.00

加和减都被称为二元运算符。,既这些对象需要连个运算对象才能完成操作。

减号还可用于表明或改变一个值的代数符号。例如执行smokey的值为12:rocky=-12;smokey=-rocky;以这种方式使用的负号被称为一元运算符,一元运算符只需要一个运算对象


//wheat.c--指数增长
#include<stdio.h>
#define SQUARES 64         //棋盘中的方格数
int main(void)
{
    const double CROP = 2E16;//世界小麦年产谷颗粒数
    double current,total;
    int count = 1;
    printf(" square        qrains         total      fraction of\n");
    printf("               added          qraind     world total\n");
    total = current = 1.0;
    printf ("%4d %13.2e %12.2e %12.2e\n", count, current,
        total,total/CROP);
    while (count < SQUARES)
    {
        count = count + 1;
        current = 2.0*current;//下一个方格谷粒翻倍
        total = total + current;//更新总数
        printf("%4d  %13.2e %12.2e %12.2e\n", count, current,
            total, total / CROP);

    }
    printf("that's all.\n");
    return 0;

}


 

 

 

除法运算符:C使用符号/来 表示除法,/左侧的值是被除数,右侧的值是除数例如;four=12.0/3.0

运算符优先级:以下代码为例

butter=25.0+60.0*n/SCALE

处理原则:先执行乘除,在执行加减,同等级别时按从左到右顺序进行。(等号除外)

运算符优先等级(从高到低)

运算符结合律
()从左往右
+ -(一元)从右往左
* /从左往右
+ -(二元)从左往右
=从右往左

 

 

 

 

 

 

应注意加号与减号的两种不同用法。例如一元负号应与她右侧的量相结合,在除法中用出号左侧的运算对象除以右侧的运算对象。

其他运算符

  • sizeof运算符和size.t类型
  • 求模运算符:%

求模运算符运用于整数运算,求模运算符给出其左侧的整数除以右侧整数的余数。例如:13%5(读作:13求模5)得3,求模运算只能运用于整数,不呢被用于浮点数。

  • 递增运算符:++

前缀模式:q=2*++a,首先a递增1然后*2,并将结果赋给Q;

 

缀模式:q=2*a++,首先2*a,并将结果赋予q 然后a递增1。

  • 递减运算符:--
  • 关系运算符:><

表达式和语句

表达式:表达式是由运算符和运算对象组成。灭个表达式都有一个值。

语句:语句是C程序的基本构建块,一条语句相当于一条完整的计算机指令。

复合语句(块):

复合语句(compound statement)是用花括号括起来的一条或多条语句,复合语句也成为快。

类型转换

强制类型转换运算

强制类型转换运算符将其右侧的值转换成括号中指定的类型,如(float)9把整数9转换成浮点数9.0

带参数的函数

实参:是函数调用提供的值,实参被赋予相应的形参。

形参:是变量

//running.c--Auseful program for runners
#include <stdio.h>
const int S_PER_M = 60;            //1分钟的秒数
const int S_PER_H = 3600;           //1小时的秒数
const  int M_PER_K = 0.61237;                 //1公里的英里数
int  main(void)
{
    double distk, distm;                 //跑过的距离(分别以公里和英里为单位)
    double rate;                   //平均速度(以英里每小时为单位)
    int min, sec;                   //跑步用时(以分钟和秒为单位)
    int time;                         //跑步用时(以秒为单位)
    double mtime;                     //跑1英里需要的时间,以秒为单位
    int mmin, msec;                   //跑1英里所需要的时间,以分钟和秒为单位

    printf("this program converts your time for a metric race\n");
    printf("to a time for running a mile and to your average \n");
    printf("speed in miles per hour.\n");
    printf("please enter ,in kilometers,the distance run.\n");
    scanf("%1f", &distk);                      //   %f读取一个double类型的值
    printf("next enter the time in minutes and seconds .\n");
    printf("begin by entering the minutes .\n");
    scanf("%d", &min);
    printf("now enter the second .\n");
    scanf("%d", &sec);

    time = S_PER_M*min + sec;           //把时间转换成秒
    distm = M_PER_K*distk;        //把公里转换成英里
    rate = distm / time*S_PER_H;   
    mtime = (double)time / distm;
    mmin = (int)mtime / S_PER_M; //求出分钟数
    msec = (int)mtime  % S_PER_M;//求出剩余的秒数

    printf("you ran %1.2f km (1.2f miles) in %d min ,%d sec.\n",
        distk, distm, min, sec);
    printf("that pace corresponds to running a mile in %d min,",
        mmin);

    printf("%d sec.\nyour average speed was %1.2f mph.\n",
        msec, rate);
    return 0;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值