第二次考试 总结

第二次考试如期的到来,但是在这次考试中我对自己的成绩很是不满意,首先最主要的是在自己会做的三个题竟然做错了,这不是因为自己不会做,我甚至说连代码都写好了,但是最后的结果却是错的,极度的打击到了我,当我知道了错了之后再重新的去看了题目之后,发现我竟然犯了以下的错误
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

猜你喜欢

转载自blog.csdn.net/wait_13/article/details/86543923