T78:方块转换------二维数组

代码实现:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
char a[10][10], b[10][10];
**//**读取原始图案
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> a[i][j];
**//**读取目标图案
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> b[i][j];
//检查旋转(#1-#3)
for (int r = 1; r <= 3; r++) {
bool match = true;
for (int i = 0; i < n && match; i++)
for (int j = 0; j < n && match; j++) {
// 根据旋转角度计算对应位置
int x, y;
if (r == 1) { x = j; y = n-1-i; } // 90度
else if (r == 2) { x = n-1-i; y = n-1-j; } // 180度
else { x = n-1-j; y = i; } // 270度
if (a[i][j] != b[x][y]) match = false;
}
if (match) {
cout << r << endl;
return 0;
}
}
**//检查#4:**反射
bool match = true;
for (int i = 0; i < n && match; i++)
for (int j = 0; j < n && match; j++)
if (a[i][j] != b[i][n-1-j]) match = false;
if (match) {
cout << 4 << endl;
return 0;
}
**//检查#5:**反射后再旋转
for (int r = 1; r <= 3; r++) {
match = true;
for (int i = 0; i < n && match; i++)
for (int j = 0; j < n && match; j++) {
// 先反射
int ref_j = n-1-j;
// 再旋转
int x, y;
if (r == 1) { x = ref_j; y = n-1-i; } // 90度
else if (r == 2) { x = n-1-i; y = n-1-ref_j; } // 180度
else { x = n-1-ref_j; y = i; } // 270度
if (a[i][j] != b[x][y]) match = false;
}
if (match) {
cout << 5 << endl;
return 0;
}
}
**//检查#6:**不改变
bool same = true;
for (int i = 0; i < n && same; i++)
for (int j = 0; j < n && same; j++)
if (a[i][j] != b[i][j]) same = false;
if (same) {
cout << 6 << endl;
return 0;
}
**//否则#7:**无效转换
cout << 7 << endl;
return 0;
}

个人思考:
这道题比较繁琐,先输入原始图案和目标图案,分别检查每种变换是否符合,其比较重要的一点是弄清楚每种变换的坐标关系,这可以通过多找几组数据找到其中的规律。
T81:求小数位数个数------字符串

代码实现:
#include <iostream>
#include <string>
using namespace std;
int main() {
string num;
while (cin >> num) {
int count = 0;
bool find = false;
for (int i = 0; i < num.length(); i++) {
char c = num[i];
if (find) {
count++;
}
if (c == '.') {
find = true;
}
}
cout << count << endl;
}
return 0;
}
个人思考:
这道题考察字符串的知识,用find来标记是否遇到小数点,如果没遇到find就是false,遇到就是true,然后根据find可以判断是否需要count++,然后再输出对应的值。
T82:进制转换------字符串

代码实现:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string function_N(int m,int N){
//处理特殊情况:十进制m为0的情况
if(m==0) return "0";
string result="";
// 进行进制转换
while(m>0){
int r=m%N;//余数
char digit;
//根据余数大小转换成相应字符
if(r<10){
digit='0'+r;
}
else{
digit='A'+(r-10);
}
**result.push_back(digit);//**将一个字符添加到字符串的末尾
m/=N;//更新m**,继续处理更高位**
}
**//**反转字符串,因为我们是按从低位到高位的顺序生成的
reverse(result.begin(),result.end());
return result;
}
int main(){
int m,N;
//循环读取多组测试数据
while(cin>>m>>N){
//转换并输出结果
cout<<function_N(m,N)<<endl;
}
return 0;
}

个人思考:
这道题需要知道十进制转其他进制的规则,需要通过不断取余来拼接起来,注意这里还需要翻转顺序,直接利用reverse函数可以,然后记得要包含<algorithm>头文件。因为考虑十六进制这种,所以还需要注意余数r小于10,就用'0'+r得到数字字符;大于等于10就用'A'+(r-10)得到对应大写字母。
英语翻译:
P54: 一次能处理16位、32位和64位数据的处理器的发展,提高了计算机的运行速度。计算机能够执行的可识别模式的完整集合(即全部操作指令列表),被称为它的指令集。这两个因素------一次可处理的位数和指令集的规模------都随着现代数字计算机的持续发展而不断增长。
processor:处理器;处理单元
instruction set:指令集
ongoing:正在进行的;持续的;未完成的
P55:III.硬件
现代数字计算机在概念上都是相似的,无论其尺寸大小。不过,我们可以根据成本和性能将它们划分为多个类别:
·个人计算机或 微型计算机**:** 一种成本相对较低的机器,通常是台式机尺寸(不过"笔记本电脑"小到可以放进公文包,而"掌上电脑"则可以装进口袋)。·工作站: 一种具备增强图形和通信能力的微型计算机,这使其特别适用于办公工作。·小型计算机: 通常价格过高,不适合个人使用,其能力更适合企业、学校或实验室。· 大型机**:** 一种大型、昂贵的机器,能够满足大型企业、政府部门、科研机构等的需求(其中最大、最快的这类计算机被称为超级计算机)。
conceptually:从概念上;在概念层面
Nevertheless:然而;尽管如此;不过
microcomputer:微型计算机;微机
desktop:台式机;桌面型计算机
laptops:笔记本电脑;膝上型电脑
briefcase:公文包;公事包
palmtops:掌上电脑;手持电脑
mainframe:大型机;主机(计算机)
enterprise:企业;大型企业
establishment:机构;单位;研究机构
or the like:诸如此类;等等;以及类似的事物
P56:数字计算机并非一台单一的机器,而是一个由五个截然不同的元素组成的系统:(1)中央处理单元(2)输入设备(3)存储设备(4)输出设备(5)通信网络,也称为总线,它将系统的所有元素连接起来,并使系统与外部世界相连。
distinct:清晰的;截然不同的;有区别的
bus:总线;数据总线
背单词:
