DHU上机打卡D31

1.水果价格

一家水果店出售四种水果,每公斤价格的苹果(代码为a)1.5元,橘子(代码为o)1.4元,香蕉(代码为b)1.48元,菠萝(代码为p)1.08元。编一个程序,使售货员只要在键盘上打入货品的代码及重量,计算机将显示货品名、单价、重量及总价。

个人总结:

1.left:左对齐;setw(n):设置输出宽度为 n 个字符;fixed + setprecision(2):固定输出 2 位小数,通过上述函数满足题目要求的输出结果,由于要用上述函数因此需用到头文件<iomanip>。

#include <iostream>

#include <iomanip>

using namespace std;

int main() {

int m;

int caseCount = 0;

while (cin >> m) {

if (caseCount > 0) {

cout << endl;

}

caseCount++;

double appleTotal = 0.0, orangeTotal = 0.0;

double bananaTotal = 0.0, pineappleTotal = 0.0;

double appleWeight = 0.0, orangeWeight = 0.0;

double bananaWeight = 0.0, pineappleWeight = 0.0;

const double APPLE_PRICE = 1.5;

const double ORANGE_PRICE = 1.4;

const double BANANA_PRICE = 1.48;

const double PINEAPPLE_PRICE = 1.08;

for (int i = 0; i < m; i++) {

char code;

double weight;

cin >> code >> weight;

switch (code) {

case 'a':

appleWeight += weight;

appleTotal += weight * APPLE_PRICE;

break;

case 'o':

orangeWeight += weight;

orangeTotal += weight * ORANGE_PRICE;

break;

case 'b':

bananaWeight += weight;

bananaTotal += weight * BANANA_PRICE;

break;

case 'p':

pineappleWeight += weight;

pineappleTotal += weight * PINEAPPLE_PRICE;

break;

default:

break;

}

}

double sumTotal = appleTotal + orangeTotal + bananaTotal + pineappleTotal;

double sumWeight = appleWeight + orangeWeight + bananaWeight + pineappleWeight;

cout << " apple orange banana pineapple sum" << endl;

cout << "price "

<< left << setw(7) << fixed << setprecision(2) << appleTotal

<< left << setw(7) << orangeTotal

<< left << setw(7) << bananaTotal

<< left << setw(10) << pineappleTotal

<< left << setw(7) << sumTotal

<< endl;

cout << "weight "

<< left << setw(7) << fixed << setprecision(2) << appleWeight

<< left << setw(7) << orangeWeight

<< left << setw(7) << bananaWeight

<< left << setw(10) << pineappleWeight

<< left << setw(7) << sumWeight

<< endl;

}

return 0;

}

2.繁殖问题

有一家生化所,一月份引入一对新生的小白鼠。这对小白鼠生长两个月后,在第三、第四、第五个月各繁殖一对新小白鼠,在第六个月停止繁殖,在第七个月则死亡。新生的小白鼠也如此繁殖。问在第N个月时,活的小白鼠有多少对?

个人总结:

1.定义dp[i][j]:第i个月时,月龄为j的小白鼠对数,设定j=7时代表当月死亡,memset(dp, 0, sizeof(dp)):将二维数组全部初始化为 0,避免随机值干扰;月龄迁移:dp[i][j+1] = dp[i-1][j] 表示「上月 j 月龄的白鼠,本月变为 j+1 月龄」;繁殖计算:newBorn = dp[i][3] + dp[i][4] + dp[i][5] 是核心 ------ 本月 3、4、5 月龄的白鼠,各繁殖 1 对新白鼠(1 月龄)。

#include <iostream>

#include <cstring>

using namespace std;

int main() {

int N;

while (cin >> N) {

long long dp[51][8];

memset(dp, 0, sizeof(dp));

dp[1][1] = 1;

for (int i = 2; i <= N; i++) {

for (int j = 6; j >= 1; j--) {

dp[i][j+1] = dp[i-1][j];

}

long long newBorn = dp[i][3] + dp[i][4] + dp[i][5];

dp[i][1] = newBorn;

}

long long total = 0;

for (int j = 1; j <= 6; j++) {

total += dp[N][j];

}

cout << total << endl;

}

return 0;

}

3.按要求输出序列

明明的爸爸是一位著名的数学家。他在明明很小的时候就发现明明有过人的数学天赋,因此有意培养他对数学的兴趣。一次,明明的爸爸为了培养明明对数字的敏感,和明明玩起了一个数字游戏,这个游戏的名称叫"按要求输出序列"。在游戏中,明明的爸爸给了明明一串数字,要求明明首先把这串数字中重复出现的数字删除到仅剩一个,即相同的数字只保留一个,然后将这串数字从小到大进行排序。明明很快就理解了游戏的规则,开始玩起来。明明的爸爸首先给了明明三个数字:3、2、1;明明很快就回答说:"1、2、3"。明明的爸爸惊讶于明明的反应能力,开始加大游戏的难度,给出了由6个数字组成的数字串:2、1、4、3、5、2;明明眼珠子一转,脱口而出:"1、2、3、4、5"(由于"2"出现了两次,因此要删除一个,然后再排序输出。)。明明的爸爸意识到简单的数字串难不住明明,于是决定给出很长的一串数字串来考明明。但与此同时,明明爸爸面对这很长的数字串也无法一时计算出最后的结果,于是就求助于你,让你帮他写一个程序,用来计算出数字串最后的结果。

明明的爸爸的问题可以归结为:给你一个数字串,里面有n个数字,首先对数字串中的数字进行处理,删除重复出现的数字(重复出现的数字只保留一个),然后对数字串从小到大进行排序,最后输出排序后的字符串。

个人总结:

1.该题适合用long long进行范围的确定,防止数据溢出,遍历输入的每个数字,先检查是否已在nums数组中,存在去重,不存在则加入,用sort(nums.begin(), nums.end())进行排序,注意其默认升序排序。

#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

int main() {

int n;

while (cin >> n) {

vector<long long> nums;

for (int i = 0; i < n; i++) {

long long num;

cin >> num;

bool isExist = false;

for (long long x : nums) {

if (x == num) {

isExist = true;

break;

}

}

if (!isExist) {

nums.push_back(num);

}

}

sort(nums.begin(), nums.end());

for (int i = 0; i < nums.size(); i++) {

if (i > 0) {

cout << " ";

}

cout << nums[i];

}

cout << endl;

}

return 0;

}

翻译:

  1. 人机交互

人机界面为人们使用计算机提供了手段。人机界面的一个例子是键盘,它能让人类向计算机输入指令,并在特定应用程序中输入文本。关于人机交互的研究具有多样性,这与计算机用户和应用程序的多样性相适应。然而,一个共同的主题是开发更优的界面以及对其有效性的实验评估。例如,包括为残疾人士改善计算机访问性、简化程序使用、开发用于虚拟现实的三维输入和输出设备、改进手写和语音识别、以及为飞机仪表开发抬头显示器,其中关键信息,如速度、高度和航向,会显示在飞行员窗口面前的屏幕上。研究的一个领域被称为"可视化",其内容是通过图形方式展示大量数据,以便人们能够理解其关键特性。

五、计算机科学与其他学科的关联

理论计算机科学的许多研究方法都源自数学和逻辑学。数值计算领域的研究与数学中的数值分析研究存在交叉。计算机架构师与负责设计计算机电路的电气工程师密切合作。

除了这些历史上的联系之外,人工智能研究与心理学、神经生理学以及语言学之间也存在着紧密的联系。人机交互研究也与心理学有所关联。机器人工程师在设计新机器人时会与机械工程师和生理学家合作。

相关推荐
问好眼1 小时前
《算法竞赛进阶指南》0x01 位运算-3.64位整数乘法
c++·算法·位运算·信息学奥赛
GEO行业研究员1 小时前
《认知锚定与路径锁死:基于爱搜光年模型的AI决策链条风险放大机制监测》
人工智能·算法·ai搜索优化·geo优化·医疗geo·医疗geo优化
wefg12 小时前
【算法】单调栈和单调队列
数据结构·算法
岛雨QA2 小时前
图「Java数据结构与算法学习笔记12」
数据结构·算法
rit84324992 小时前
全变分正则化图像去噪的MATLAB实现
开发语言·matlab
勇往直前plus2 小时前
python格式化字符串
开发语言·前端·python
czxyvX2 小时前
020-C++之unordered容器
数据结构·c++
岛雨QA2 小时前
多路查找树「Java数据结构与算法学习笔记11」
数据结构·算法
_Li.2 小时前
Simulink - 6DOF (Euler Angles)
人工智能·算法·机器学习·游戏引擎·cocos2d