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;
}
翻译:
- 人机交互
人机界面为人们使用计算机提供了手段。人机界面的一个例子是键盘,它能让人类向计算机输入指令,并在特定应用程序中输入文本。关于人机交互的研究具有多样性,这与计算机用户和应用程序的多样性相适应。然而,一个共同的主题是开发更优的界面以及对其有效性的实验评估。例如,包括为残疾人士改善计算机访问性、简化程序使用、开发用于虚拟现实的三维输入和输出设备、改进手写和语音识别、以及为飞机仪表开发抬头显示器,其中关键信息,如速度、高度和航向,会显示在飞行员窗口面前的屏幕上。研究的一个领域被称为"可视化",其内容是通过图形方式展示大量数据,以便人们能够理解其关键特性。
五、计算机科学与其他学科的关联
理论计算机科学的许多研究方法都源自数学和逻辑学。数值计算领域的研究与数学中的数值分析研究存在交叉。计算机架构师与负责设计计算机电路的电气工程师密切合作。
除了这些历史上的联系之外,人工智能研究与心理学、神经生理学以及语言学之间也存在着紧密的联系。人机交互研究也与心理学有所关联。机器人工程师在设计新机器人时会与机械工程师和生理学家合作。
