C语言知识点–循环结构
while循环结构
格式:
while(表达式)
循环体
若表达式的值为非零,则执行循环体,再转而计算while后表达式的值,直到为零。属于先判断后执行的类型。
//计算1到100的累加值
int s,i;
i=1;
s=0;
while(i<=100){
s+=i;
i+=1;
}
printf("%d",s);
do-while循环结构
格式:
do{
循环体
}while(表达式);
执行完循环体之后再判断while表达式的条件,属于先执行后判断的类型。
//计算1到100的累加值
int s,i;
i=1;
s=0;
do{
s+=i;
i+=1;
}while(i<=100);
printf("%d",s);
for语句
格式:
for(表达式1;表达式2;表达式3){
循环体
}
其中表达式1为赋初值表达式,表达式2为循环条件表达式,表达式3为循环变量表达式。完成表达式1后,循环就在表达式2—>循环体->表达式3 之间展开。
表达式3通常为更新循环变量的赋值表达式,如i++,i–。
表达式1、2、3都可省,但是分号不能省略。
for语句用while语句表达:
表达式1;
while(表达2){
语句
表达式3;
}
break语句和continue语句
break语句
1、用来跳出switch 分支语句
2、用于结束循环语句
continue语句
1、提前结束本次循环,接着进行是否执行下次循环的判断。
2、continue语句只能用于循环语句。
循环环结构的嵌套
1、while、do-while、for循环结构可以相互嵌套,层数不限。
2、并列的循环结构,控制循环的变量名字可以相同。内外层控制循环的变量名一般不能相同。
3、break只能跳出一层循环而不能直接跳出整个循环结构。
循环中的输入问题
输入一系列字符
1、循环的终止由内部确定
int c,n;
for(n=0;n<10;n++){
c=getchar();
printf("%4d",c);
}
return 0;
2、根据特定字符决定,当满足了某些条件时,循环结束。
//第一种
int c,n=0;
c=getchar();
while(c!= '\n'){
putchar(c);
n++;
c=getchar();
}
printf("\n %d characters!\n",n);
return 0;
//第二种
int c,n=0;
do{
c=getchar();
putchar(c);
n++;
}while(c!='\n');
//第三种
int c,n=0;
while((c=getchar())!='\n'){
putchar(c);
n++;
}
printf("\n %d characters!\n",n);
return 0;
3、根据EOF确定,一般win10 上的是ctrl +Z ,输入上面的之后,后面的输入值就不会被接受。
int c;
while(1){
c=getchar();
if(c== EOF)break;
putchar(c);
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VbEeA431-1580117035347)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200101173129981.png)]
输入一批数据
1、通过计数器控制循环(已知输入循环的项数)。
2、用结束标志控制的循环
//计算一批货物的总值,每次输入的都是单价和数量。
double price=1,amount,sum=0;
while(price!=0){
printf("请按先后顺序输入单价和数量:");
scanf("%lf%lf",&price,&amount);
//输入的时候中间用空格隔开
sum += price * amount;
}
printf("总价为:%lf",sum);
return 0;
3、用输入流和输入操作
蒙特卡罗法与随机数函数
1、随机函数rand()和随机数种子函数srand()使用时,应当使用头文件stdlib.h
2、随机函数rand()产生[1,32767)区间的一个整数
3、srand(time(0))产生一个以当前累计秒为参数的随机序列起始值(种子,seed)。决定rand()函数的随机值,如果没有srand()函数,则rand()值每次运行之后获得的数字序列都相同。
4、srand(time(0)) 的使用,应当使用头文件time.h。
5、产生区间[0,1)的随机实数:rand()/32767.0
产生区间[a,b]之间的随机整数:rand()%(b+a-1)+a 或者 rand()/(32767/(b-a+1)+1)+a
and()函数的随机值,如果没有srand()函数,则rand()值每次运行之后获得的数字序列都相同。
4、srand(time(0)) 的使用,应当使用头文件time.h。
5、产生区间[0,1)的随机实数:rand()/32767.0
产生区间[a,b]之间的随机整数:rand()%(b+a-1)+a 或者 rand()/(32767/(b-a+1)+1)+a