枚举enum
#import
//枚举,建议写在这个地方。
enum season{
//第一个元素,默认为0.后面元素依次+1.spring自动被赋值为0,summer为1.
//每个值都可以改变默认值,后面的数还是依次+1.初始化过的默认值,后面的数还是依次+1
spring
= 100,//100
summer
= 200,// 200
autumn,//201
winter//202
};
//练习,定义一个枚举
//定义五个水果:苹果(10),香蕉,橘子,西瓜
enum fruits{
apple
= 10,
banana,
orange,
watermelon
};
int main(){
}
循环
特点:在满足特定条件的情况下,反复执行某程序段。
While循环
While循环的格式是这样的:while(条件表达式){语句代码},意思是满足括号内的条件时,执行花括号内的语句代码。或者更专业一点来说,当括号内的条件表达式返回值为真时,执行花括号内的代码,一直到条件表达式的返回值为假时,跳出循环。
While循环很容易出现死循环这种状况,就是因为忘记写了“增量”这个东西。
//死循环
int count = 0 ;
//while
(count < 100) {
//printf("今天我真帅...\n");
//}
上面的代码就是少了count++,这个增量,所以,条件表达式一直满足,就一直执行,就造成了死循环。
此时,应该这样改进:
//循环变量:控制循环次数
//int
count = 0;
//while
(count < 3 )
{
//printf("今天我真帅...\n");
count
= count
+1;
此处,++在前在后都不影响打印次数。
循环增量
//count
++;
++
count;
//}
一些例子:
//练习
//打印1~100
//int
num = 0;
//while
(num < 100) {
//printf("
%d\n",(num +
1));
//num
++;
//}
//用while打印能被7整除的1~100之间的数。
//int
num = 1;
//while
(num <= 100)
{
//if(num
% 7 == 0){
//printf("%d\t",num);
//}
//num
++;
//}
//用while循环打印出1~100之间各位为7的数。
//int
num = 0;
//
//
while
(num < 100) {
//
//if(num
% 10 == 7){
//printf("%d\t",(num));
//}
//num
++ ;
//}
//用while循环打印出1~100之间十位为7的数。
num / 10== 7
//int
num = 0;
//while
(num < 100) {
//if(num
/ 10 ==7){
//printf("%d\t",num);
//}
//num
++;
//}
Do-while循环
与while不同的只有一个地方,就是先执行一遍代码,再进行判断。也就是说,不管你while的条件表达式成不成立,返回值为不为假,我都执行一遍循环体的代码。
// do while
//do{
//printf("至少执行一次,不管后面的判断条件是真还是假");
//}while
(1) ;// ;分号不能丢
随机数arc4random()
产生随机数的方法,arc4random()可以产生int范围内的任意一个随机数,包括有正数和负数,为什么会出现负数呢?因为,在存储的时候,生成的数的最高位的数字为1,此时,会认为这个1是符号位的负,因此会出现负数。这时,我们应该把这些情况避免掉,在输出之前,用unsigned来定义一个变量来接收产出的随机数;在输出的过程中,占位符不再用%d,而是用%u来代替。
另一个值得注意的是,随机数产生的时候,数字会很大,而我们在代码过程中,不需要这么大的数,此时,想要把这个数减小,可以用取余的办法来限制。
//随机数arc4random(),
//用%u来打印,表示无符号。
//由于随机函数给的值很大,我们采用取余的方法,使值变小。取余的随机数的范围就是,0~被除数-1
//printf("%u
\t", arc4random() %
10);//打印只有0~10的数
在产生一个随机数的时候,可以让它在固定的区间内产生,那么就会用到这个公式:
//取某区间[a,b]的数,用公式:arc4random()%
(b-a+1)+a
若是规定在负空间生成随机数,那么就将公式改成:
// arc4random() %(b-a+1)-a
一些例子:
//用户输入一个N,用while打印N个随机数(10~30)
//int
num = 0;
//int
count = 0;
//printf("输入一个数:");
//scanf("%d",&num);
//printf("产生
%d随机数为:
\n\t",num);
//while
(count < num)
{
unsigned声明一个无符号int类型。
//unsigned
unum =(arc4random()%((30-10+1)+10));
//printf("第
%d个数为:%d\t",(count+1),
unum);
//count
++;
//}
//输入一个数,用while打印n个随机数(30~70),找出随机数中最大值。
//int
num = 0;
//printf("输入一个数:\n");
//scanf("%d",&num);
//int
count = 0;
//int
max = 0;
//while
(count < num ) {
//unsigned
unum =(arc4random()%((70-30+1)+30));
//printf("第
%d个数为:%d\n",(count+1),
unum);
//if(max
< unum ){
//max
= unum;
//}
//count
++;
//}
//printf("\n
");
//printf("最大的数为:%d\n",max);
Break和continue
这两个关键字在开发过程中经常遇见,他们的区别如下:
break:在某个循环的时候,用上break,意思就是停止这个循环,不再执行这个循环,我要跳出这个循环。
continue:在某个循环的时候,在过程中用上continue,意思就是,我在的这个循环还在运行,但是我不运行这一次的循环,我要跳到下一次的循环去,但是还是在这个循环里,没有跳出去,只是不执行这次罢了。
//循环变量
//int
count = 0;
//while
(count <10)
{
//count
++;
//if(count
== 3){
结束本次循环
//continue;
//
//}
//if(count
== 5){
结束循环
//break;
//
//}
//printf("第
%d天\n",count);
//}
for循环
for循环和while差不多,但是是将条件和增量,循环变量都一起放在了小括号里。
值得注意的是:while与for的比较时,for的一个好处
相比于while循环:while中存在浪费内存的情况,因为循环变量在while循环外边,直到它所在的花括号结束,才释放内存。而
for循环的循环变量在for循环结束后,即释放。
for循环的执行过程是这样的:
for(①int i=
0;②i
<
100;④i++){
③循环体
}
在运行到本处时,先进行①赋初值,然后判定条件,满足则跳进循环体执行代码③,执行循环体代码结束后,对i进行自增④i++,然后进行②判断,执行③,自增四。。。如此循环下去。
// for循环
//int
count = 0;
//while
(count < 5) {
//printf("\n我是
while循环。。。");
//count
++;
//}
// for(循环变量
;条件
;增量){循环体
}
//for
(int i = 0;i < 5; i++){
//printf("\n我是
for循环哦。。。");
//}
//练习
//打印
0 ~100
//for
(int i = 0; i <= 100; i++) {
//printf("%d\t",i);
//}
//打印1~100
//相比于while循环:while中存在浪费内存的情况,因为循环变量在while循环外边,直到它所在的花括号结束,才释放内存。
//而
for循环的循环变量在for循环结束后,即释放。
//for
(int j = 0; j < 100; j++) {
//printf("%d\t",(j
+ 1));
//}
//打印
***
//for
(int i = 0; i < 3; i ++) {
//printf("*");
//}
循环嵌套
当我们发现,一个循环自身又要循环多次时,用循环嵌套:循环里有循环。
//打印
//两层for循环
//外层for:负责控制行
//for
(int j = 0; j < 3; j++){
内层
for负责每行打印多少个
//for
(int i = 0; i < 3;i ++ ) {
//printf("*");
//}
//printf("\n");
//}
//打印
//里边的个数跟行数一样,(第一行有一个,第二行有2个。。。)那么只要
i <=
j就可以了。
//for
(int j = 1; j <= 3;j++) {
//for
(int i = 1; i <= j;i ++) {
//printf("%d",i);
//}
//printf("\n");
//}
//打印乘法口诀表
//for
(int i = 0; i < 9; i++) {
列
//for
(int j = 0; j <= i; j ++) {
//printf("
%d * %d= %d \t",j+1,i+1,(j+1)*(i+1));
//}
//printf("\n");
//}
//三维数组合:
//三个for循环
//百位
1~9
for
(int i = 1; i<= 9 ;
i++) {
//十位
0~9
for
(int j = 0 ;
j<= 9; j++) {
//个位
0~9
for
(int k = 0 ; k<= 9 ;
k++) {
printf("%d\n",i
* 100 + j * 10 + k);
}
}
}