第二次考试如期的到来,但是在这次考试中我对自己的成绩很是不满意,首先最主要的是在自己会做的三个题竟然做错了,这不是因为自己不会做,我甚至说连代码都写好了,但是最后的结果却是错的,极度的打击到了我,当我知道了错了之后再重新的去看了题目之后,发现我竟然犯了以下的错误
1.题目看错(这是大忌,这个都错了怎么做)
2.代码中应该写变量写成了常量(最主要是自己知道怎么写的)这个错误是超级不该的,该打该打
3.代码的细节没处理好。
附上这次的题目
第一题:
请写出加法竖式中的第一个数和第二个数,两个数之间用空格分隔开。不同字母代表的数字均不相同,首位数字不能为零。如有多组解,输出 ABCD 代表的数更小的那组。
ABCD+EFG=EGAB
第二题:
一共有 4 张 2 元,3 张 3 元,2 张 5 元,一共能用这些钱币凑出多少种不同的钱数(不包含 0 元,三张 2 元和两张 3 元凑出的钱数是相同的)?
第三题:
对于一个数的二进制表示,交换其高低位顺序。比如,对于整数 123523532 的二进制表示:
00000111 01011100 11010001 11001100
交换后的结果为:
11001100 11010001 01011100 00000111
代码框中的代码是一种实现,请分析并填写缺失的代码。
在其他题目使用C++ 语言作答的同学请选择C 语言完成这道代码填空题的作答。
#include <stdio.h>
void print(unsigned int x) {
for (int i = 31; i >= 0; --i) {
if (x&(1UL<<i)) printf("1");
else printf("0");
if (i % 8 == 0) {
if (i) printf(" ");
else printf("\n");
}
}
}
int main() {
unsigned int x;
scanf("%ud", &x);
print(x);
// 在下方填入一行代码
print(x);
return 0;
}
第四题:
给定一个长度为 n 的数组,每次操作可以将数组中不超过 k 个连续的数同时减一。
问最少需要多少次操作,才能让每个数都小于等于 0。
输入格式
第一行输入两个空格分隔的整数 n(1 ≤ n ≤ 100), K(1 ≤ K ≤ n)
第二行输入 n 个用空格分隔的整数 ai(-1000 ≤ ai ≤1000)
输出格式
输出一个整数,表示需要的最少操作次数
样例输入
4 3
1 2 3 4
样例输出
5
第五题:
有一个 3×3 的平面魔方,在平面魔方中,每个格子里分别无重复地写上 1-9 这 9 个数字。一共有 4 种对平面魔方的操作:
1.选择某一行左移
2.选择某一行右移
3.选择某一列上移
4.选择某一列下移
初始状态为
123
456
789
比如选择第一行左移,魔方会变成下面这样
231
456
789
现在给出魔方的一个状态,问你能否将魔方复原成初始状态。如果可以,计算最少操作次数。
输入格式
输入三行,每行三个 1 到 9 之间的整数。
输出格式
如果能还原成初始状态,输出最小的操作次数,否则输出 -1
样例输入
412
756
389
样例输出
2
我只解决了(1)(2)(4),知道的可以解答
(1) https://blog.csdn.net/wait_13/article/details/86543999
(2) https://blog.csdn.net/wait_13/article/details/86544053
(4) https://blog.csdn.net/wait_13/article/details/86544115