当前位置 博文首页 > jtwqwq的博客:翁恺老师C语言程序设计网课(2)

    jtwqwq的博客:翁恺老师C语言程序设计网课(2)

    作者:[db:作者] 时间:2021-08-19 09:54

    2.2.1 表达式

    一个表达式是一系列运算符和算子的结合,用来计算一个值
    运算符(operator)是指进行运算的动作,比如加/减法运算符±
    算子(operand)是指参与运算的值,可能是常数/变量/一个方法的返回值
    在这里插入图片描述

    计算时间差:这里只记录分钟错位的情况(1:40和2:10)
    方法:全部记为分钟(小时*60)

    	int hour1,min1;
    	int hour2,min2;
    	
    	scanf("%d %d",&hour1,&min1);
    	scanf("%d %d",&hour2,&min2);
    	
    	int t1=hour1*60+min1;//把小时转化为分钟单位
    	int t2=hour2*60+min2;
    	
    	int t=t2-t1;
    	printf("时间差是%d小时%d分。“,t/60,t%60);//t/60是小时部分;t%60取余,是分钟部分
    

    2.2.2 运算符优先级

    (double输入的时候用%lf,输出的时候用%f就行)
    运算符优先级

    优先级运算符运算结合关系举例
    1+单目不变自右向左a*+b
    1-单目取负自右向左a*-b
    2*自左向右a*b
    2/自左向右a/b
    2%取余自左向右a%b
    3+自左向右a+b
    3-自左向右a-b
    4=赋值自右向左a=b

    (a+b,a-b是双目;+a,-a是单目,相当于正负号)
    赋值也是运算,也有结果。
    a=6的结果就是a被赋予的值,也就是6
    a=b=6:自右向左,a=(b=6)。

    嵌入式赋值:int c=1+(b=a)
    缺点:不利于阅读;容易产生错误
    运算符的结合关系一般自左向右;单目+-和赋值=自右向左
    下面的式子过于复杂,不利于阅读和理解。

    	result=a=b=3+c;
    	result=(result=result*2)*6*(result=3+result);
    

    所以应该把它拆开来计算。
    (C语言没有幂次,所以只能一个个乘。)

    2.2.3 交换变量

    交换a和b的值(a=6,b=5)
    错误示例

    a=b;
    b=a;
    

    程序表达的是顺序执行的动作,而不是关系.所以这样做先把b赋给a,然后再把a赋给b,都是5.
    方法:再找一个变量c,c=a储存一下a的值,然后a=b,b=c

    c=a;
    a=b;
    b=c;
    

    断点

    在这里插入图片描述

    DEV C++中,在左边数字那里点击一下,然后程序运行时就会在这一行停止。
    在这里插入图片描述

    运行也只能到这一行
    点下一行,就会运行到下一行。
    这样可以方便排bug
    C语言:使用Dev C++断点调试

    2.2.4 复合赋值

    a+=5表示a=a+5(注意两个运算符之间无空格)
    类似有-=*=/=
    a*=b+5表示a=a*(b+5),如果想先算a=a*b记得加括号)
    INC递增、DEC递减运算符:++--:单目运算符,只能有一个算子,这个算子还只能是变量(如a++后缀形式,++a前缀形式)让该变量+1/-1;
    a++运算式的值是a+1以前的值;++a运算式的值是a+1以后的值。无论哪个,a的值都+1了
    在这里插入图片描述

    ++--可以单独使用,但不要把它组合进表达式,复杂。

    3.0.1 PAT再解释

    是Program Ability Test的简写。

    1. 看样例数据和看题目一样重要;
    2. 不要交互地输出,题目要求输出什么就输出什么,不要画蛇添足,一个空格不对都不算对);
    3. 不要检查输入,题目只会输入定义域范围内的数字;
    4. 严格遵守输出的格式;
    5. scanf里不要乱输什么东西(?)

    int a/b;如果后面是小数,c语言会强制类型转换为整数。但以后学习c++或java是不可以的,要记得类型转换。

    3.1.1 做判断

    if条件判断

    	if(条件){
    		要执行的语句,只有条件成立时才会执行
    	}
    

    3.1.2 判断的条件

    计算两个值之间的关系,叫做关系运算
    ==判断相等
    !=不相等
    还有>;>=;<;<=,当两个值的关系复合这些关系运算符的预期时,关系运算的结果为整数1,否则为整数0

    printf("%d\n",5>3);
    printf("%d\n",5==3);
    

    输出结果:1(换行)0
    所有关系运算符的优先级都比算数运算低,比赋值运算高
    (编程语言都是可以人为验证的)
    int r=a>0;先判断a是否>0,再把0/1的值赋给r
    ==!=优先级比其他的低
    连续的关系运算是从左到右进行的
    5>3==6>41==1成立
    6>5>41>4不成立

    3.1.3 找零计算器

    Created with Rapha?l 2.3.0 开始 输入购买的金额 输入支付的票面 计算找零 判断余额是否充足 打印找零 结束 告知用户余额不足以购买 yes no cs
    下一篇:没有了