随机数
#include<stdlib.h>
//先引入系统头文件
int main()
{
int randomNum = arc4random_uniform(10)
//产生一个0-9的随机数,0-->(n-1)的随机数.
int randomNum2 = arc4random_iniform(11)+10
//产生一个10-20的随机数
//(最大数-最小数+1)+最小数
}
switch-case 结构
- 开发中固定的几个取值判断就用 switch case
语法
switch(表达式)
//先计算 switch后面的表达式的结果
{
//从上到下的将这个结果和每一个 case后面的值进行相等比较判断.
//只要有一个相等,就执行其中的代码,结束整个 switch 结构.
case 值1:
执行代码;
break;
//如果不相等再判断下一个 case 的值
case 值2:
执行代码;
break;
case 值3:
执行代码;
break;
//如果所有的值和表达式的结果都不相等,就执行 default 代码块.
default
执行代码;
break;
}
举例:
int num1 = 0,num2 = 0,count = 0;
printf("输入两个数字");
scanf("%d%d",&num1,&num2);
printf("0加1减2乘3除")
scnaf("%d",&count);
switch(count)
case 0:
printf("结果是%d",num1+num2);
break;
case 1:
printf("结果是%d",num1-num2);
break;
case 2:
printf("结果是%d",num1*num2);
break;
case 3:
printf("结果是%d",num1/num2);
break;
default:
printf("输入有误");
break;
注意
- switch小括弧可以写表达式,也可以写变量,甚至是常亮.除了实型
- 一般不希望穿透,一般都会写 break.
- 表达式可以用隐性转换来扩大 case 值的包含范围(score/10)score 就是小数点向左移一位取整.
- 小数在内存当中存的是无限接近他的数,做相等比较的时候就可能出错.
- case块可以写任意行代码,只要符合逻辑.也可以加大括号,但一般都不加.
- 如果case 块中要声明变量,必须加大括号.其他的 case 中也访问不了这个变量
- case 块可以有任意个,default 可以省略.
- case 后面不能写变量.
case 穿透
- break 代表立即结束整个 switch-case 结构
- break 语法上可以不写
- 不写就会穿透到下一个 case 中执行,直到遇到 break.
- 如果多个 case 块的处理逻辑是一样的,我们就可以用 case 穿透来简写代码.
switch(month)
{
case 1:
case 2:
case 3:
printf(“春天来了,万物复苏\n”);
break;
//最后一个 case 可以不写 break,穿透也是穿出去了.
}switch case 与 if
- 能够用 switch - case 写出的都可以用 if 结构写.反过来不行
- switch 只能等值判断,不能直接做范围判断.
- switch 是比 if 多一个选择,代码更简洁
> 4. 等值判断建议实用 switch,范围判断实用 if.
程序的调试
- 99.99%的 BUG 都是因为变量的值没有按照我们预想的那样变化.
- 查找替换 command + F 上面写原来内容,下面写改成什么
循环结构
- C 语言又三种循环结构
- while
- do while
- for
无论那种都是将同一段代码反复执行
while
语法
//先判断条件真假,如果为真就执行循环体
while(条件表达式)
//可以是任意表达式,0为假,非0为真
{
循环体;
}
//循环体执行完跳过去判断循环体真假,如果为假,立即结束每次判断条件得到的都是真,循环体会反复不停一只执行,就叫做死循环