do-while
循环do
{
语句;
}while(表达式);
do-while
循环与for\while
循环的不同while
和for
是先判断条件,条件允许的话,才会进入循环,执行循环语句;而do-while
是先直接进⼊循环体,执行循环语句,然后再执行while
后的判断表达式,表达式为真,就进行下一次,表达式为假,就不再继续循环。
流程图:
do-while
语句中循环体是至少执行⼀次的,这是 do-while
循环比较特殊的地⽅。
#include
int main()
{
int a = 1;
do
{
printf("%d ", a);
a++;
} while (a <=10);
return 0;
}
# include
int main()
{
int a = 0;
int count = 0;
scanf("%d", &a);
do
{
count++; //即使a=0,也会统计一位
a = a / 10;
} while (a);
printf("%d", count);
return 0;
}
break
和continue
语句• break
的作用是用于永久的终止循环,只要 break
被执行,直接就会跳出循环,继续往后执行。
• continue
的作用是跳过本次循环 continue
后边的代码。
while
循环中break
和continue
(1)、break
的例子:
#include
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 4)
break;
printf("%d ",i);
i++;
}
return 0;
}
打印完1、2、3之后,当i=4时,循环在break停止,后面的不再执行,循环终止。
(2)、continue
的例子:
#include
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 4)
continue;
printf("%d ", i);
i++;
}
return 0;
}
这里当i==4的时候,执行continue
跳出循环,进入下次循环,这个时候i一直等于4,程序不停的跳出循环进入下次循环,程序没有结束,一直在循环。(陷入死循环)
for
循环中的break
和continue
(1)、break
道理跟while
循环中的break
一样
#include
int main()
{
int i = 1;
for(i=1; i <= 10;i++)
{
if (i == 4)
break;
printf("%d ", i);
}
return 0;
}
(2)、continue
#include
int main()
{
int i = 1;
for(i=1; i <= 10;i++)
{
if (i == 4)
continue;
printf("%d ", i);
}
return 0;
}
当i == 4,时,执行continue
跳出本次循环,执行下一次循环,所以i==4后printf
语句不执行,continue
跳过后面的打印,来到了i++的部分,所以最后的输出没有4。
do-while
循环中的break
和continue
作用于在while
循环中的基本一致。
可以自己比对一下:
#include
int main()
{
int i = 1;
do
{
if (i == 4)
continue;
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
#include
int main()
{
int i = 1;
do
{
if (i == 4)
break;
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
结果也是一样的。
goto
语句goto
语句可以实现在同⼀个函数内跳转到设置好的标号处。
例如:
#include
int main()
{
printf("lalala\n");
goto next;
printf("wawawa\n");
next:
printf("跳过了wawawa的打印\n");
return 0;
}
(1)、rand
函数返回⼀个伪随机数,这个随机数的范围是在0~RAND_MAX(32767)之间。
rand
函数的时候需要包含头文件:stdlib.h
int rand (void)
例子:
#include
#include
int main()
{
printf("%d\n", rand());
printf("%d\n", rand());
return 0;
}
不管我们试多少次,这个随机数都是一样的,我们可以发现这是一个伪随机数,伪随机数不是真正的随机数rand
函数是对⼀个叫“种子”的基准值进行运算生成的随机数。
(2)、srand
函数,用来初始化随机数的生成器的。
void srand (unsigned int seed);
程序中在调用rand
函数之前先调用srand
函数,通过srand
函数的参数seed
来设置rand
函数⽣成随机数的时候的种子,只要种子在变化,每次生成的随机数序列也就变化起来了。
(3)、time
使用程序运行的时间作为种子的,time
函数可以获得这个时间
time
函数的原型:
time_t time (time_t* timer);
time
函数返回的这个时间差也被叫做:时间戳。
time(NULL); //调⽤time函数返回时间戳,这⾥没有接收返回值
time
函数的时候需要包含头文件:time.h
上面的生成随机数我们就可以这样写:
#include
#include
#include
int main()
{
srand((unsigned int)time(NULL));
printf("%d\n", rand());
printf("%d\n", rand());
return 0;
}
0~99的随机数:
rand() % 100;
余数是0~99
1~100的随机数
rand() % 100 + 1;
a~b的随机数
a+rand () %(b-a+1);
等等,可以以此类推。