2019秋季期末实验复习C++【实验三:循环结构(一)】

1.桃子问题
【问题描述】
某人摘下一些桃子,第一天卖掉一半,又吃了一个,第二天卖掉剩下的一半,又吃了一个,以后各天都是如此处理,到第n天发现只剩下一只桃子,试编写程序计算一共摘的桃子个数。

【输入形式】
一行:一个整数n(1 < n <= 1000)

【输出形式】
一行:一个整数,表示一开始的桃子个数。

【样例输入】
2

【样例输出】
4

#include<iostream>
using namespace std;
int main ()
{	int n,sum=1;
	cin>>n;
	for( ;n>1;n--){
		sum=2*(sum+1);
		}
	cout<<sum<<endl;
	return 0;
	
}

2.爬虫
【问题描述】
一条虫子在n英寸深的井底,每次一分钟爬行u英寸,但是它在再次爬行前必须先休息1分钟, 在休息过程中它将滑落d英寸,在反复向上爬行和休息后,多长时间虫子能爬出这口井?在此过程中,分钟的小数部分向上取整,如果攀爬结束时虫子正好到达井的顶部,则视为虫子已经爬出。假定d<u,n<100,当n=0时输入结束。

【输入形式】

输入包括多个测试用例。每行包含3个正整数n、u、d,为上面所提到的值。

【输出形式】
每个测试用例输入一行,表示虫子爬出井的时间。

【样例输入】
10 2 1
20 3 1
0 0 0

【样例输出】
17
19

#include <iostream>
using namespace std;
int main(){
	int n,u,d,i=0,x;
	while(true){	
		n=0;i=0;
		cin>>n>>u>>d;
			if(n==0){
			break;
		}
	  		else {
	  			x=(n-1)%(u-d);
	  			if(x!=0){i=(n-1)/(u-d)*2+1;}
	 			else{i=(n-1)/(u-d)*2-1;}
				cout<<i<<endl;
				}
}
	return 0;
}

3.数小木块
【问题描述】

在墙角堆放着一堆完全相同的正方体小木块,如下图所示:

在这里插入图片描述

因为木块堆得实在是太有规律了,你只要知道它的层数就可以计算所有木块的数量了。
【输入形式】

只有一个整数 n ,表示这堆小木块的层数,已知1 <= n <= 100 。

【输出形式】

只有一个整数,表示这堆小木块的总数量。

【样例输入】
5
【样例输出】
35

#include<iostream>
using namespace std;
int main() {
	int n,sum=0;
	cin>>n;
	for(int i=1;i<=n;i++) {
		sum+=(i*i+i)/2;//第i层的木块数
	}
	cout<<sum<<endl;
	return 0;
}

4.小X玩游戏
【问题描述】
小X在草稿纸上画了一行N(N>0)个格子作为棋盘, 制定了如下规则:格子从左到右依次编号为1到N,玩家初始位于格子1,初始前进方向为向右,游戏共进行M轮,第i轮玩家前进Ai(Ai>=0)格,若玩家到达格子N则改变前进方向为向左,若玩家到达格子1则改变前进方向为向右。
小X想知道玩家最后会停在哪个格子?

【输入形式】
第一行包含用一个空格隔开的两个整数N,M。
接下来M行,第i行包含一个整数Ai。

【输出形式】
第一行包含一个整数,表示玩家最后停留的格子编号。

【样例输入】
3 2
2
3

【样例输出】
2

#include<iostream>
using namespace std;
int main() {
	int N,M,Ai,x,y,z=0,i,m,n;
	cin>>N>>M;
	i=M;
	for(y=1; y<=i; y++) {
		cin>>Ai;
		z+=Ai;
	}
	m=z/(N-1);
	n=z%(N-1);
	if(n==0&&m%2==0) x=1;
	else if(n==0&&m%2!=0) x=N;
	else if(n!=0&&m%2==0) x=n+1;
	else if(n!=0&&m%2!=0) x=N-n;
	cout<<x;
	return 0;
}


5.除法的精确计算
【问题描述】
输入两个正整数A和B,其中A和B都小于32767,求A/B的值,精确到小数点后N位(1<=N<=200)要求使用循环。

【输入形式】
输入只有一行,包括三个整数,分别为A、B和N。

【输出形式】
输出只有一行,包括一个数,这个数有N位小数。

【样例输入1】
10 3 10

【样例输出1】
3.3333333333

【样例输入2】

0 3 10

【样例输出2】
0.0000000000

#include<iostream>
using namespace std;
int main() {
	int a,b,A,B,N,i;
	cin>>A>>B>>N;
	cout<<A/B<<".";//先输出整数部分和小数点
	//for循环依次输出小数部分的每一位
		for(i=1; i<=N; i++) {
		if(i==1) {
			a=(A%B)*10/B;
			b=(A%B)*10%B;
		}
		else {
			a=b*10/B;
			b=b*10%B;
		}
		cout<<a;
	}
	return 0;
}

6.找12
【问题描述】
输入正整数n,编程输出所有1~n之间所有含有数字12或12的倍数的所有的数(如:24、112等)。

【输入形式】
输入正整数n

【输出形式】
从小到大输出所有的符合条件的数,数字和数字之间使用空格分隔。

【样例输入】
30

【样例输出】
12 24

#include<iostream>
#include<cmath>
using namespace std;
int main(){
	int n,i;
	double j;
	cin>>n;
	for(i=1;i<=n;i++){
	
		if(i%12==0){
			cout<<i<<" ";}		
		else{
			for(j=2;i>=pow(10,j-1);j++){
				if((i%(int)pow(10,j)-i%(int)pow(10,j-2))/(int)pow(10,j-2)==12)
				{
					cout<<i<<" ";break;
					}
				}
			}
		}
		return 0;
}
//pow(x,y); //x的y次方

7.幸运数字
【问题描述】
今年圣诞节,小明收到了很多礼物,每个礼物上都有一个数字, 对小明来说,4或者7的倍数才是幸运数字。
现在,小明想知道所有数字中幸运数字之和是多少?

【输入形式】
第一行一个整数n,表示小明收到了n份礼物。
第二行包含n个正整数,表示各份礼物上的数字。

【输出形式】
输出小明心目中的幸运数字之和。

【样例输入】
6
12 13 14 15 16 17

【样例输出】
42

#include<iostream>
using namespace std;
int main() {
	int n,sum=0;
	cin>>n;
	const int m=n;
	int a[m];
	for(int i=0; i<n; i++) {
		cin>>a[i];
		if((a[i]%4==0)||(a[i]%7==0)) sum=sum+a[i];
	}
	cout<<sum<<endl;
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值