C语言学习笔记
复合赋值
- 5个算术运算符,+一/%,可以和赋值运 算符“=”结合起来,形成复合赋值运算符 :“+=”、“-=”、“=”、“/=”和“%=”
- total += 5;
- total = total + 5;
- 注意两个运算符中间不要有空格
total +=(sum+10)/2;
- total = total + (sum + 100)/2;
total*= sum+12;
- total = total*(sum+12)
递增递减运算符
- “++”和“--”是两个很特殊的运算符,它们 是单目运算符,这个算子还必须是变量。 这两个运算符分别叫做递增和递减运算符, 他们的作用就是给这个变量+1或者-1。
- count++;
- count += I;
- count = count + 1;
关系运算的结果
- 当两个值的关系符合关系运算符的预期时, 关系运算的结果为整数1,否则为整数0
- printf("%d\n", 5==3);
- printf("%d\n", 5>3);
- iprintf("%d\n", 5<=3);
优先级
所有的关系运算符的优先级比算术运算的低,但比赋值运算的高。
- 7>=3+4
- int r = a>0
判断是否相等的==和=的优先级比其他的低,而连续的关系运算是从左到右进行的。
- 5>3==6>4
- 6>5>4
- a==b==6
- a==b>0
做判断
找零计算器
- 找零计算器需要用户做两个操作:输入购 买的金额,输入支付的票面,而找零计算 器则根据用芦的输入做出相应的动作:计 算并打印找零,或告知用户余额不足以购 实。
- 从计算机程序的角度看,这就是意味着程 序需要读用户的两个输入,然后进行一些 计算和判断,最后输出结果。
#include <stdio.h>
int main()
{
int price =0;
int bill =0;
//读入金额和票面
printf("请输入金额") ;
scanf("%d",&price);
printf("请输入票面");
scanf("%d",&bill);
//计算找零
if (bill>=price)
{
printf("应找您:%d\n",bill-price);
}
else{
printf("你的钱不够");
}
return 0;
}
计算薪水
# include <stdio.h>
int main()
{
const double RATE =8.25;
const int STANDARD =40;
double pay =0.0;
int hours;
printf ("请输入工作小时数;");
scanf("%d",&hours);
printf("\n");
if(hours>STANDARD)
pay = STANDARD * RATE + (hours - STANDARD)*(RATE * 1.5);
else
pay = hours * RATE;
printf("应付工资%f\n",pay);
return 0;
}
嵌套的if-else
- 当if的条件满足或者不满足的时候要执行的语句也 可以是一条if或if-else语句,这就是嵌套的if语句。
比较三个数的大小
# include <stdio.h>
int main ()
{
int a,b,c;
int max = 0;
scanf("%d %d %d",&a,&b,&c);
if (a>b)
if(a>c)
max = a;
else
max = c;
else
if(b>c)
max = b;
else
max = c;
printf("最大值是%d\n",max);
return 0;
}
else总是和最近的那个if匹配。
建议:在if或else后面总是用“{}”即使只有一条语句时。
级联的if-else if
if-else的常见错误
if语句常见错误
- 忘了大括号
- if后面的分号
- 错误使用==和=
- 使人困惑的else
代码风格
- 在if和else之后必须加上大括号形成语句块
- 大括号内的语句缩进一个tab的位置
多路分支
# include<stdio.h>
int main()
{
int a;
printf("请输入您的分数");
scanf("%d",&a);
if (a>=90){
printf("A") ;
} else if(a>=80){
printf("B");
} else if(a>=70){
printf("C");
} else if(a>=60){
printf("D");
}else{
printf("E");
}
return 0;
}
# include<stdio.h>
int main()
{
int a;
printf("请输入您的分数");
scanf("%d",&a);
a /= 10; //a=a/10
switch(a){
case 10:
case 9:
printf("A\n");break;
case 8:
printf("B\n");break;
case 7:
printf("C\n");break;
case 6:
printf("D\n");break;
default:
printf("E\n");break;
}
return 0;
}