循环的综合应用(一)

知识目标

    循环的综合应用

学习目标

    熟练应用循环

一讲

乘问题

问题描述:

已知公式:s=1!+2!+… +n!(1<=n<=20) ,要求编程实现输入一个 n 的值,求出 s 的值并输出。

样例输入:

5

样例输出:

153

友情提示: n !即 n 的阶乘

问题分析:

1.使用循环计算 个循环变量的阶乘 p >> 2.将1-n当中n  p的值累加 >> 3.输出累加之

过程分析:

第一步:计算单个变量的阶乘:

int k,p=1;
while(k){
    p*=k;
    k--;
}

第二步:将 1-n 当中 n 个 p 的值累加

while(n){
    k=n;
    p=1;
    while(k){
        p*=k;
        k--;
    }
    sum+=p;
    n--;
}

  完整代码:

#include<iostream> 
using namespace std; 
int main(){ 
    int n,k,p;
    long long sum=0;
    cin>>n;
    while(n){
        k=n;
        p=1;
        while(k){
            p*=k;
            k--;
        }
        sum+=p;
        n--;
    }
    cout<<sum;
    return 0;
}

印完数

问题描述:  

如果一个数恰好等于它的真因子(即除了自身以外的约数)之和,则称该数为“完数”。请编程输出1到1000当中的完数。

样例输出:

6 28 496

代码如下:

#include<iostream> 
using namespace std; 
int main(){ 
	int sum;
	for( int i=1;i<1000;i++){
		sum=0;
		for(int j=1;j<i;j++){         
			if(i%j==0)   
				sum+=j;
		}
		if(sum==i)     
			cout<<i<<' ';
	}
	return 0;
}

餐厅消

问题描述:

有 30 人去 餐馆吃饭,其中分为三类:男人、女人和小孩。餐馆收费标准为:男人 30 元/位,女人 20 元/位,小孩 10 元/位。他们总共花了 500 元,请 你打印出所有的人员分配情况。打印顺序为:男人、女人、小孩。

样例输出:

1 18 11

2 16 12

3 14 13

4 12 14

5 10 15

6 8 16

7 6 17

8 4 18

9 2 19

代码示例:

#include<iostream> 
using namespace std; 
int main(){ 
	int i,j,z,sum=0;
	for(i=1;i<30;i++){
		for(j=1;j<30;j++){
			z=30-j-i;
			if(30*i+20*j+10*z==500)
				cout<<i<<' '<<j<<' '<<z<<endl;
		}
	} 
	return 0;
}

排座

问题描述:   

新学期开学第一天,班主任老师想要帮同学们按照大小个排座位,假设班上有 n ( 0<n<=48 )名同学,老师得到了 n 名同学的身高数据按照从小到大 顺序排序之后,将同学们依编号为 1,2,3,…,n-1,n。现已知教室座位为 6 人一排, 需要同学们编程现输入学生的人数 n ,输出排好后的座位编号图,每两名同学之间以空格分开。

样例输入:

20

样例输出:

1 2 3 4 5 6

7 8 9 10 11 12

13 14 15 16 17 18

19 20

整代码:

#include<iostream> 
using namespace std; 
int main(){ 
	int n;
	cin>>n;
	if(n>0&&n<=48){
		int a=(n%6==0?n/6:n/6+1),s=1; 
			for(int i = 1;i<=a;i++){
				for(int j=1;j<=6;j++){
					cout<<s<<' ';
					s++;
					if(s>n)
						return 0;
				}
				cout<<endl;
			}
		}
	return 0;
}

创作不易,请多多鼓励!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值