C语言知识点3--循环结构

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值