c语言arc4random函数,IOS开发--C语言基础(Lesson_three)enum、while、do..while 、arc4random()、Break、continue、f...

枚举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);

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值