知识目标
循环的综合应用
学习目标
熟练应用循环
讲一讲
阶乘问题
问题描述:
已知公式: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;
}
创作不易,请多多鼓励!