• 每日一练--IT冷知识&C/C++--第八天


    目录

    讽刺的名字

    Unix 诞生

    RISC-V 的掌门人

    计算出现次数最多的整数及其出现次数

    字符串相乘

    找x


    讽刺的名字

    Symantec 公司曾发布一款个人信息安全产品 Norton Antivirus,也便是大名鼎鼎的诺顿杀毒;在美国,诺顿是市场占有率第一的杀毒软件。但事实上,诺顿杀毒软件的名字却来源于一个不相信电脑病毒存在的程序员,这个程序员曾出版《计算机概论》,为计算机的发展带来了许多贡献。

    这位程序员的名字叫什么?

    A詹姆·诺顿(Jame Norton)
    B彼得·诺顿(Peter Norton)
    C玛丽·诺顿(Mary Norton)
    D爱德华·诺顿(Edward Norton)

    答案:彼得·诺顿(Peter Norton) 


    Unix 诞生

    Unix 是一个多任务、多用户的计算机操作系统家族,前身为 1964 年启动的 Multics;由于 Multics 项目缓慢,1969 年贝尔实验室退出项目,由三名程序员完成了对其衍生作品 Unix 的自研。Unix 直接影响了如今流行的所有操作系统。

    以下哪一位程序员没有参与开发 Unix?

    A肯·汤普森
    B道格拉斯·麦克罗伊
    C蒂姆·伯纳斯·李
    D丹尼斯·里奇

    答案:蒂姆·伯纳斯·李


    RISC-V 的掌门人

    RISC-V 是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),简单解释为开源软件运动相对应的一种“开源硬件”;如今 RISC-V 基金会的创始人在广东的清华-伯克利深圳学院(TBSI)建立了 RISC-V 的国际开源实验室,而这个人也是 2017 年的图灵奖得主。

    这个人是谁?

    A唐纳德·克努特(Donald ErvinKnuth)
    B约翰·巴克斯(John Backus)
    C约翰·轩尼诗(John Hennessy)
    D大卫·帕特森(David Patterson)

    答案:大卫·帕特森(David Patterson)


    计算出现次数最多的整数及其出现次数

    【问题描述】 输入一组无序的整数,编程输出其中出现次数最多的整数及其出现次数。
    【输入形式】
    先从标准输入读入整数的个数(大于等于1,小于等于100),然后在下一行输入这些整数,各整数之间以一个空格分隔。
    【输出形式】
    在标准输出上输出出现次数最多的整数及其出现次数,两者以一个空格分隔;若出现次数最多的整数有多个,则按照整数升序分行输出。
    【样例输入】
    10
    0 -50 0 632 5813 -50 9 -50 0 632
    【样例输出】
    -50 3
    0 3
    【样例说明】
    输入了10个整数,其中出现次数最多的是-50和0,都是出现3次。

    以下程序实现了这一功能,请你填补空白处的内容:

    1. #include <stdio.h>
    2. int main()
    3. {
    4. int a[50], b[50], c[50], n, i, j, t, max;
    5. scanf("%d", &n);
    6. for (i = 0; i < n; i++)
    7. {
    8. scanf("%d", &a[i]);
    9. }
    10. for (i = 1; i < n; i++)
    11. for (j = 0; j < n - 1; j++)
    12. {
    13. if (a[j] > a[j + 1])
    14. {
    15. t = a[j];
    16. a[j] = a[j + 1];
    17. a[j + 1] = t;
    18. }
    19. }
    20. j = 0;
    21. t = -1;
    22. for (i = 0; i < n - 1; i++)
    23. {
    24. ____________________;
    25. }
    26. b[j] = n - 1 - t;
    27. c[j] = n - 1;
    28. max = b[0];
    29. for (i = 1; i <= j; i++)
    30. {
    31. if (max < b[i])
    32. {
    33. max = b[i];
    34. }
    35. }
    36. for (i = 0; i <= j; i++)
    37. if (b[i] == max)
    38. {
    39. t = c[i];
    40. printf("%d %d\n", a[t], b[i]);
    41. }
    42. return 0;
    43. }
    Aif (a[i] != a[i + 1])
    {
        b[j] = i + t;
        c[j] = i + 1;
        t = i;
        j++;
    }
    Bif (a[i] != a[i + 1])
    {
        b[j] = i + t;
        c[j] = i - 1;
        t = i;
        j++;
    }
    Cif (a[i] != a[i + 1])
    {
        b[j] = i + t;
        c[j] = i;
        t = i;
        j++;
    }
    Dif (a[i] != a[i + 1])
    {
        b[j] = i - t;
        c[j] = i;
        t = i;
        j++;
    }

     答案:

    1. if (a[i] != a[i + 1])
    2. {
    3. b[j] = i - t;
    4. c[j] = i;
    5. t = i;
    6. j++;
    7. }

    字符串相乘

    给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

    示例 1:

    输入: num1 = "2", num2 = "3"
    输出: "6"

    示例 2:

    输入: num1 = "123", num2 = "456"
    输出: "56088"

    说明:

    1. num1 和 num2 的长度小于110。
    2. num1 和 num2 只包含数字 0-9
    3. num1 和 num2 均不以零开头,除非是数字 0 本身。
    4. 不能使用任何标准库的大数类型(比如 BigInteger)直接将输入转换为整数来处理

    以下程序实现了这一功能,请你填补空白处内容:

    1. #include <bits/stdc++.h>
    2. using namespace std;
    3. class Solution
    4. {
    5. public:
    6. string multiply(string num1, string num2)
    7. {
    8. string res(num1.length() + num2.length(), '0');
    9. for (int i = num2.length() - 1; i >= 0; i--)
    10. {
    11. int j, carry = 0;
    12. for (j = num1.length() - 1; j >= 0; j--)
    13. {
    14. _____________________;
    15. }
    16. res[i + j + 1] = carry + '0';
    17. }
    18. int i;
    19. for (i = 0; i < res.length() - 1; i++)
    20. {
    21. if (res[i] != '0')
    22. {
    23. break;
    24. }
    25. }
    26. return res.substr(i);
    27. }
    28. };
    Acarry += (num1[j] - '0') * (num2[i] - '0') + (res[i + j + 1] - '0');
    res[i + j + 1] = carry % 10 + '0';
    carry /= 10;
    Bcarry += (num1[j] - '0') * (num2[i] - '0') + (res[i + j - 1] - '0');
    res[i + j - 1] = carry % 10 + '0';
    carry %= 10;
    Ccarry += (num1[j] - '0') * (num2[i] - '0') + (res[i + j] - '0');
    res[i + j] = carry % 10 + '0';
    carry %= 10;
    Dcarry += (num1[j] - '0') * (num2[i] - '0') + (res[i + j] - '0');
    res[i + j] = carry % 10 + '0';
    carry /= 10;

     答案:

    1. carry += (num1[j] - '0') * (num2[i] - '0') + (res[i + j + 1] - '0');
    2. res[i + j + 1] = carry % 10 + '0';
    3. carry /= 10;

    找x

    题目描述

    输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。

    输入

    测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。

    输出

    对于每组输入,请输出结果。

    样例输入

    1. 4
    2. 1 2 3 4
    3. 3

    样例输出

    2

    以下程序实现了这一功能,请你填补空白处的内容:

    1. #include <iostream>
    2. using namespace std;
    3. int main()
    4. {
    5. int n = 0;
    6. cin >> n;
    7. int *ptr = new (nothrow) int[n];
    8. for (auto i = 0; i < n; i++)
    9. {
    10. cin >> ptr[i];
    11. }
    12. int x = 0;
    13. cin >> x;
    14. auto j = 0;
    15. auto status = 0;
    16. for (; j < n; ++j)
    17. {
    18. ______________;
    19. }
    20. if (status == 0)
    21. {
    22. j = -1;
    23. }
    24. cout << j << endl;
    25. delete[] ptr;
    26. cin.get();
    27. cin.get();
    28. return 0;
    29. }
    Aif (ptr[j] <= x)
    {
        status = 1;
        continue;
    }
    Bif (ptr[j] == x)
    {
        status = 1;
        continue;
    }
    Cif (ptr[j] == x)
    {
        status = 1;
        break;
    }
    Dif (ptr[j] >= x)
    {
        status = 1;
        continue;
    }

     答案:

    1. if (ptr[j] == x)
    2. {
    3. status = 1;
    4. break;
    5. }

  • 相关阅读:
    基于 Docker 搭建开发环境
    如何集成 Spring Boot实现 MyCat读写分离?
    287_C++_TaskQueue管理任务队列和定时器(头文件.h)
    SCI论文还迟迟动不了笔?2/3区仅1个月25天录用,看看经验之谈
    交换机端口安全实验
    MySQL 的索引和事务
    C++ STL迭代器失效问题
    jdk8排序如何防止字段为空?
    健康打卡每日提醒累了?那就让自动化帮你---HiFlow,应用连接自动化助手
    吃透这份“腾讯限量版”Java架构笔记,要个40k不过分吧
  • 原文地址:https://blog.csdn.net/mooczhimahu/article/details/126581998