[Coursera 计算导论与C语言基础] 第六周作业

编程题#1:苹果和虫子

来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

注意: 总时间限制: 1000ms 内存限制: 65536kB

描述

你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?

输入

输入仅一行,包括n,x和y(均为整数)。

输出

输出也仅一行,剩下的苹果个数

#include <iostream>
using namespace std;
int main() {
	int n,x,y,m;
	cin >> n >> x >> y;
	if (n - (y / x) > 0) {
		if (y%x == 0)
		{
			m = n - (y / x);
		}
		else if(y%x> 0 ){
			m = n - (y / x + 1);
		}
		cout << m << endl;

	}
	if (n - (y / x) <= 0) {
		cout << "0" << endl;
	}

	return 0;
}

编程题#2:大象喝水

来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

注意: 总时间限制: 1000ms 内存限制: 65536kB

描述

一只大象口渴了,要喝20升水才能解渴,但现在只有一个深h厘米,底面半径为r厘米的小圆桶(h和r都是整数)。问大象至少要喝多少桶水才会解渴。

输入

输入有一行:包行两个整数,以一个空格分开,分别表示小圆桶的深h和底面半径r,单位都是厘米。

输出

输出一行,包含一个整数,表示大象至少要喝水的桶数。

#include <iostream>
using namespace std;
#define Pi 3.14159
int main() {
	int h, r,n;
	double V = 20000;
	cin >> h >> r;
	double v = Pi*r*r*h;
	n = (V / v) + 1;
	cout << n<< endl;
	return 0;


}

编程题#3:最高的分数

来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

注意: 总时间限制: 1000ms 内存限制: 65536kB

描述

孙老师讲授的《计算概论》这门课期中考试刚刚结束,他想知道考试中取得的最高分数。因为人数比较多,他觉得这件事情交给计算机来做比较方便。你能帮孙老师解决这个问题吗?

输入

输入两行,第一行为整数n(1 <= n < 100),表示参加这次考试的人数.第二行是这n个学生的成绩,相邻两个数之间用单个空格隔开。所有成绩均为0到100之间的整数。

输出

输出一个整数,即最高的成绩。

#include <iostream>
using namespace std;
int main() {
	int n,m,r,a[20],max=0;
	cin >> n;
	for (int i = 0; i < n; ++i) {
		cin >> m;
		a[i]= m;
		if (a[i] >max) {
			max = a[i];
		}
	}
	cout << max << endl;
	return 0;
}

编程题#4:最大奇数与最小偶数之差的绝对值

来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

注意: 总时间限制: 1000ms 内存限制: 65536kB

描述

输入6个正整数,且这6个正整数中至少存在一个奇数和一个偶数。

设这6个正整数中最大的奇数为a,最小的偶数为b,求出|a-b|的值

输入

输入为一行,6个正整数,且6个正整数都小于100

输入保证这6个数中至少存在一个奇数和一个偶数

输出

输出为一行,输出最大的奇数与最小的偶数之差的绝对值

#include <iostream>
using namespace std;
int main() {
	int all[6],a[6], b[6];
	for (int i = 0; i < 6; ++i) {
		cin >> all[i];
	}
	int numOdd = 0;
	int numEven = 0;

	for (int j = 0; j < 6; ++j) {
		if (all[j] % 2 != 0) {
			a[numOdd] = all[j];
			numOdd++;
		}
		else {
			b[numEven] = all[j];
			numEven++;
		}
	}
	int max = 0, min = 100;
	for (int k = 0; k < numOdd; ++k) {
		if (a[k] >max) {
			max = a[k];
		}

	}
	for (int k = 0; k < numEven ; ++k) {
		if (b[k]<min) {
			min = b[k];
		}

	}
	if (max > min) {
		cout << max - min << endl;
	}
	else {
		cout << min-max << endl;
	}

	return 0;
}

编程题#5:分离整数的各个数位

来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

注意: 总时间限制: 1000ms 内存限制: 65536kB

描述

从键盘输入一个任意的三位整数,要求正确地分离出它的百位、十位和个位数,并分别在屏幕上输出,输出采用每行输出一个数的方式,不带其它符号。

输入

一个任意的三位整数

输出

一个任意的三位整数

#include <iostream>
using namespace std;
int main() {
	int n;
	cin >> n;
	if (n / 100 > 0) {
		cout << n / 100 << endl;
	}
	int m = n % 100;
	if ( m/10 > 0) {
		cout << m/10 << endl;
	}
	else {
		cout << "0" << endl;
	}
	int k = m % 10;
	if (k > 0) {
		cout << k << endl;
	}
	else {
		cout << "0" << endl;
	}
	return 0;
}



猜你喜欢

转载自blog.csdn.net/qq_30945147/article/details/80633387
今日推荐