C语言循环篇(下)

算平均数

  • 让用户输入一系列的正整数,最后输入-1表示输入结束,然后程序计算出这些数字的平均数,输出输入的数字的个数和平均数
  • 变量->算法->流程图->程序

变量

  • 一个记录读到的整数的变量
  • 平均数要怎么算?
  • 只需要每读到一个数,就把它加到一个累加的变量里,到全部数据读完,再拿它去除读到的数的个数就可以了
  • 一个变量记录累加的结果,一个变量记录读到的数的个数

算法

  • 初始化变量sum和count为0;
  • 读入number;
  • 如果number不是-1,则将number加入sum,并将count加1,回到2;
  • 如果number是-1,则计算和打印出sum/count(注意换成浮点来计算)。
#include<stdio.h>

int main()
{
	int number;
	int sum =0;
	int count =0;
	
	scanf("%d",&number);
	while( number != -1){
	    sum += number;
		count ++;
		scanf("%d",&number);	
    }
    
    printf("%f\n",1.0*sum/count);
	
	return 0;
}

整数逆序

整数的分解

  • 一个整数是由1至多位数字组成的,如何分解出整数的各个位上的数字,然后加以计算;
  • 对一个整数做%10的操作,就得到它的个位数;
  • 对一个整数做/10的操作,就去掉了它的个位数;
  • 然后再对2的结果做%10,就得到原来数的十位数了;
  • 以此类推。

数的逆序

  • 输入一个正整数,输出逆序的数
  • 结尾的0的处理
#include<stdio.h>

int main()
{
	int x;
	// scanf("%d",&x);
	x = 12345;
	int digit;
	int ret = 0;
	
	while(x>0){
		digit = x%10;
		//printf("%d\n",digit);
		ret = ret*10 + digit;
		printf("x=%d,digit=%d,ret=%d\n",x,digit,ret);
		x /=10;
	}
	printf("%d",ret);
	
	return 0;
}

for循环

for循环像一个计数循环:设定一个计数器,初始化它,然后在计数器到达某值之前,重复执行循环体,而每执行一轮循环,计数器值以一定步进进行调整,比如加1或者减1

for(i=0;i<5;i=i+1){
printf(“%d”,i);
}

for = 对于

  • for(count=10;count>0;count–)
  • 就读成:“对于一开始的count=10,每count>0时,重复做循环体,每一轮循环在做完循环体内语句后,使得count–。”

阶乘

  • n!= 1x2x3x4x…xn
  • 写一个程序,让用户输入n,然后计算输出n!
  • 变量:显然读用户的输入需要一个int的n,然后计算的结果需要用一个变量保存,可以是int的factor,在计算中需要有一个变量不断地从1递增到n,那可以是int的i
#include<stdio.h>

int main()
{
	int n;
	
	scanf("%d",&n);
	int fact =1;
	
	int i =1;
	while(i <= n){
		fact *= i;
		i++;
	} 
	printf("%d!=%d\n",n,fact);
	
	return 0;
}

#include<stdio.h>

int main()
{
	int n;
	
	scanf("%d",&n);
	int fact =1;
	
	int i =1;
	for(i=1;i<=n;i++){
		fact *= i;
	}
	
	printf("%d!=%d\n",n,fact);
	
	return 0;
}

for( i=1; i<=n; i++ )

i=1;是初始动作
i<=n;循环继续的条件
i++ 循环每轮要做的动作

循环的计算和选择

for(;条件;) == while(条件)

循环选择

  • 如果有固定次数,用for
  • 如果必须执行一次,用do-while
  • 其他情况用while

循环控制

素数

  • 只能被1和自己整除的数,不包括1
  • 2,3,5,7,11,13,17,19…
#include<stdio.h>

int main()
{
	int x;
	
	scanf("%d",&x);
	int i;
	int isprime = 1;     //  x是素数 
	for( i=2; i<x; i++ ){
		if( x % i == 0){
			isprime = 0;
			break;
		}
	}
	if( isprime == 1){
		printf("是素数\n");
	}else{
		printf("不是素数\n");
	}
	
	return 0;
}

break和continue

  • break:跳出其所在的循环
  • continue:跳过循环这一轮剩下的语句进入下一轮

嵌套的循环

  • 循环里面还是循环

100以内的素数

#include<stdio.h>

int main()
{
	int x;
	
	//scanf("%d",&x);
	x = 6;
	
	for(x = 2; x<100; x++ ){
		int i;
		int isprime = 1;     //  x是素数 
		for( i=2; i<x; i++ ){
			if( x % i == 0){
				isprime = 0;
				break;
			}
		}
		if( isprime == 1){
			printf("%d ",x);
		}
    }
    printf("\n");
    
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值