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

最近在跟Coursera上北京大学的程序设计与算法专项课程,一共7门课程,这是第一门课计算导论与C语言基础。在这里做一个记录。

编程题#1:年龄与疾病
来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
注意: 总时间限制: 1000ms 内存限制: 65536kB
描述
某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理。
输入
共2行,第一行为过往病人的数目n(0 < n <= 100),第二行为每个病人患病时的年龄。
输出
每个年龄段(分四段:18以下,19-35,36-60,大于60注意看样例输出的格式)的患病人数占总患病人数的比例,以百分比的形式输出,精确到小数点后两位(double)。关于c++的格式化的输入输出,请参考:http://www.cplusplus.com/reference/iomanip。也可以在网上搜索一下,资料很多的。

//第七周
//编程题#1:年龄与疾病
#include <iostream>
using namespace std;
#include <iomanip>
int main()
{
	int n,x;
	n = x = 0;
	double total1, total2, total3, total4;
	total1=total2=total3=total4=0;
	double result1, result2, result3, result4;
	result1 = result2 = result3 = result4 = 0;
	cin >> n;
	for (int i=0;i<n;i++)
	{
		cin >> x;
		if (x<=18)
		{
			total1++;
		}
		else if (x<=35)
		{
			total2++;
		}
		else if (x<=60)
		{
			total3++;
		}
		else
		{
			total4++;
		}
	}
	result1 = total1 / n;
	result2 = total2 / n;
	result3 = total3 / n;
	result4 = total4 / n;
	cout << "1-18: " << fixed<<setprecision(2) << result1*100<<"%"<<endl;
	cout << "19-35: " << fixed << setprecision(2) << result2 * 100 << "%" << endl;
	cout << "36-60: " << fixed << setprecision(2) << result3 * 100 << "%" << endl;
	cout << "60-: " << fixed << setprecision(2) << result4 * 100 << "%" << endl;
	return 0;
}
编程题#2:成绩判断
来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
注意: 总时间限制: 1000ms 内存限制: 6000kB
描述
输入一个0--100的分数,判断分数代表什么等级。
95<=分数<=100, 输出1
90<=分数<95,输出2
85<=分数<90,输出3
80<=分数<85,输出4
70<=分数<80,输出5
60<=分数<70输出6
分数 < 60;输出7.
输入
n
输出
m

//编程题#2:成绩判断
#include <iostream>
using namespace std;
int main()
{
	int n;
	cin >> n;
	if (95 <= n && n <= 100)
	{
		cout << "1" << endl;
	}
	else if (90<=n && n<95)
	{
		cout << "2" << endl;
	}
	else if (85 <= n && n < 90)
	{
		cout << "3" << endl;
	}
	else if (80 <= n && n < 85)
	{
		cout << "4" << endl;
	}
	else if (70 <= n && n < 80)
	{
		cout << "5" << endl;
	}
	else if (60 <= n && n < 70)
	{
		cout << "6" << endl;
	}
	else 
	{
		cout << "7" << endl;
	}

	return 0;
}


编程题#3:找出第k大的数
来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
注意: 总时间限制: 1000ms 内存限制: 65536kB
描述
用户输入N和K,然后接着输入N个正整数(无序的),程序在不对N个整数排序的情况下,找出第K大的数。注意,第K大的数意味着从大到小排在第K位的数。
输入
N
K
a1 a2 a3 a4 ..... aN
输出
b

关于这道题,题目要求不对N个整数排序,我还是用了先排序的方法。不排序的方法暂时不会,会回过头来再看。

//编程题#3:找出第k大的数
#include <iostream>
using namespace std;
int main()
{
	int n ,pos;
	n = pos = 0;
	cin >> n;
	cin >> pos;
	int a[100] = { 0 };
	for (int i = 0; i < n;i++)
	{
		int x = 0;
		cin >> x;
		a[i] = x;
	}
	for (int i = 0; i < n; i++)
		for (int j = i + 1; j < n;j++)
	{
		if (a[i] < a[j])
		{
			int change = 0;
			change = a[i];
			a[i] = a[j];
			a[j] = change;
		}
	}
	cout << a[pos-1] << endl;
    return 0;
}

编程题#4:人民币支付
来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
注意: 总时间限制: 1000ms 内存限制: 65536kB
描述
从键盘输入一指定金额(以元为单位,如345),然后输出支付该金额的各种面额的人民币数量,显示100元,50元,20元,10元,5元,1元各多少张,要求尽量使用大面额的钞票。
输入
一个小于1000的正整数。
输出
输出分行,每行显示一个整数,从上到下分别表示100元,50元,20元,10元,5元,1元人民币的张数

//编程题#4:人民币支付
#include <iostream>
using namespace std;
int main()
{
	int n, num1, num2, num3, num4,num5,num6,remain;
	num1=num2= num3= num4= num5= num6=remain=0;
	cin >> n;
	num1 = n / 100;
	remain = n - 100 * num1;
	num2 = remain / 50;
	remain -= 50 * num2;
	num3 = remain / 20;
	remain -= 20 * num3;
	num4 = remain / 10;
	remain -= 10 * num4;
	num5 = remain / 5;
	remain -= 5* num5;
	num6 = remain;
	cout << num1 << endl;
	cout << num2 << endl;
	cout << num3 << endl;
	cout << num4 << endl;
	cout << num5 << endl;
	cout << num6 << endl;
	return 0;
}




  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值