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 dp518;

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

dp11 = 1;

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

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

dpij+1 = dpi-1j;

}

long long newBorn = dpi3 + dpi4 + dpi5;

dpi1 = newBorn;

}

long long total = 0;

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

total += dpNj;

}

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 << numsi;

}

cout << endl;

}

return 0;

}

翻译:

  1. 人机交互

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

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

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

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

相关推荐
2301_7736436219 小时前
ceph池
开发语言·ceph·python
两年半的个人练习生^_^19 小时前
JMM 进阶:彻底理解 CAS 实现原理
java·开发语言
wuminyu19 小时前
Java锁机制之park和unpark源码剖析
java·linux·c语言·jvm·c++
梦梦代码精19 小时前
为什么这个开源的AI平台会火?有点东西。。。
人工智能·算法·机器学习·docker·开源
半个烧饼不加肉19 小时前
JS 底层探究-- 事件循环
开发语言·前端·javascript
随意起个昵称19 小时前
线性dp-综合刷题1(Not Alone)
算法·动态规划
asdfg125896319 小时前
C 语言中产生伪随机数的标准做法
c语言·开发语言
玖玥拾19 小时前
C/C++ 基础笔记(十一)类的进阶
c语言·c++·设计模式·
KobeSacre19 小时前
JUC 概述
java·开发语言
-森屿安年-19 小时前
1137. 第 N 个泰波那契数
c++·动态规划