for循环
语法形式:for(表达式1;表达式2;表达式3)(如果想循环更多语句就加上大括号)
表达式1:循环变量的初始化
表达式2:循环结束条件判断
表达式3:循环变量的调整
接下来做一个实例:
在屏幕上打印1-10
#include <stdio.h>
int main()
{
int i = 0;
for(i=1;i<=10;i++)
{
printf("%d",i);
}
return 0;
}
先定义一个变量i,初始值为1,再循环里面每次循环都加一,直到大于10为止
第二个案例:
计算1~100之间3的倍数之和
#include <stdio.h>
int main()
{
int i = 0;
int sum = 0;
for (i = 1 ; i <= 100;i++)
{
if(i % 3 == 0 ) //判断是否为3的倍数
sum += i;
}
printf("%d",sum);
return 0;
}
do while 循环
语法格式:
do
语句
while(表达式)
do while 循环先进入循环体,执行循环语句,然后在执行while后的判断表达式,表达式为真,就会进行下一次,表达式为假,就停止(循环体的循环体至少执行一次)
接下来做一个实例:
打印1~10的值
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d",i);
i = i + 1;
}while(i <= 10);
return 0;
}
案例2:
输入一个正整数,计算正整数是几位数?
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d",&n);
int cnt = 0;
do
{
cnt++;
n = n / 10;
}while(n);
printf("%d",cnt);
return 0;
}
break
用于终止程序
continue
停止当前循环,进行下一次循环
goto
可以实现同一个函数内跳转到设置好的行标处。
举例:
#include <stdio.h>
int main()
{
printf("1");
goto next:
next:
printf("2");
return 0;
}
随机数生成:
rand(生成随机数)
代码格式:
int rand (void);
使用stdlib.h头文件
#include <stdio.h>
#include <std;ib.h>
int main()
{
printf("%d",rand());
return 0;
}
执行多次发现,每次随机数都是相同的,只是因为随机数有一个种子数,根据种子的基准值进行运算生成的随机数。
srand 初始化随机数生成器
语法格式如下:
void srand (unsigned int seed);
程序中在调⽤rand函数之前先调⽤srand函数,通过srand函数的参数seed来设置rand函数⽣成随 机数的时候的种⼦,只要种⼦在变化,每次⽣成的随机数序列也就变化起来了。 那也就是说srand的种⼦是如果是随机的,rand就能⽣成随机数;在⽣成随机数的时候⼜需要⼀个随 机数,这就⽭盾了。
time
程序中种子根据时间进行变化,time就是这个时间。
格式:
time_t time(time_t* timer);
如果timer是NULL,就只返回这个时间的差值。time函数返回的这个时间差也被叫做:时间戳。time函数的时候需要包含头⽂件:time.h
#ifndef _CRT_NO_TIME_T
#ifdef _USE_32BIT_TIME_T
typedef __time32_t time_t;
#else
typedef __time64_t time_t;
#endif
#endif
typedef long __time32_t;
typedef __int64 __time64_t;
如果只返回时间戳
time(NULL);
随机生成数字就可以改成:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
//使⽤time函数的返回值设置种⼦
//因为srand的参数是unsigned int类型,我们将time函数的返回值强制类型转换
srand((unsigned int)time(NULL));
printf("%d\n", rand());
printf("%d\n", rand());
printf("%d\n", rand());
printf("%d\n", rand());
printf("%d\n", rand());
return 0;
}
接下来介绍随机数的范围设置
0~99:rand() %100;
1~100:rand()%100+1;
100~200:100 + rand()%(200-100+1)
a~b:a + rand()%(b-a+1)