条件运算符(三元运算符)
count = (count>20)? count -10 : count + 10
条件,条件满足时和条件不满足的值,相当于
if(count>20)
count = count -10;
else
count = count +10;
嵌套的if-else
输入:三个自然数a,b,c.
输出:最大的那个数
#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("The max is %d\n",max);
return 0;
}
else的匹配:else 总是和最近的if匹配
级联的if-else:
分段函数:f(x)=-1;x<0
=0;x=0
=2x;x>0
if(x<0){
f = -1;
}else if(x==0){
f = 0;
}else{
f = 2 * x;
}
多路分支(switch-case)
switch (控制表达式只能是整数型){
case 常量:
语句;
......
case 常量:
语句;
......
default:
语句;
......
}
循环的例子
算平均数:
输入:一系列的正整数,最后输出-1表示输入结束
输出:输入的数字的平均数(结果保留两位小数)
#include<stdio.h>
int main()
{
int number;
int sum = 0;
int count = 0;
scanf("%d",&number);
while (number != -1){
sum += number;
count ++;
scanf("%d",&number);
}
printf("%.2f\n",1.0*sum/count);
return 0;
}
猜数游戏
随机数:每次召唤rand()就得到一个随机的整数
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
srand(time(0));
int a = rand();
printf("%d\n",a);
return 0;
}
%100: x%n的结果是【0,n-1】的一个整数
例如:a%100 ——> 得到一个100以内的数。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
srand(time(0));
int a = 0;
int number = rand()%100+1;
int count = 0;
do{
printf("我已经想好了一个1到100的之间数:");
scanf("%d",&a);
count ++;
if(a>number){
printf("你猜的数大了。");
}else if(a<number){
printf("你猜的数小了。");
}
}while(a != number);
printf("太好了,你用了%d次就猜到了答案。\n",count);
return 0;
}
整数求逆
如何分解各个位置上的数:
- 对一个整数做%10的操作,就得到它的个位数
- 对一个整数做/10的操作,就去掉了它的个位数
- 然后在对2的结果做%10,就得到了原来数的十位数
- 以此类推.......
输入:一个正整数 输出:逆序的数 结尾0的处理
#include<stdio.h>
int main()
{
int x;
scanf("%d",&x);
int digit;
int ret = 0;
while(x>0){
digit = x%10;
printf("%d",digit);
ret = ret*10 + digit;
x /= 10;
}
return 0;
}
判断与循环常见错误
if语句常见的错误:
- 忘了大括号
- if后面的分号(不加分号)
- 错误使用==和=(if括号里的值是零或非零)
- 使人困惑的else