写出这个程序,并且解答(语言-c++)

img


img


这个该怎么写呢
要求写出图中的代码并且给予解答,如何把这个程序写出来

运行结果:

img

C++代码和C代码分别如下:
C++代码:


#include <iostream>
#include <iomanip>
using namespace std;
typedef struct _student
{
    char name[16];
    int score;
}Student;
int main()
{
    Student stu[51], t;
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> stu[i].name >> stu[i].score;
    }
    //排序
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = 0; j < n - 1 - i; j++)
        {
            if (stu[j].score < stu[j + 1].score)
            {
                t = stu[j];
                stu[j] = stu[j + 1];
                stu[j + 1] = t;
            }
        }
    }
    //输出
    for (int i = 0; i < n; i++)
    {
        cout << setw(15) << stu[i].name;
        cout << setw(5) << stu[i].score << endl;
    }
    return 0;
}

C代码:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

typedef struct _student
{
    char name[16];
    int score;
}Student;
int main()
{
    Student stu[51], t;
    int n, i = 0, j = 0;
    scanf("%d", &n);
    for ( i = 0; i < n; i++)
    {
        scanf("%s %d", stu[i].name, &stu[i].score);
    }
    //排序
    for ( i = 0; i < n - 1; i++)
    {
        for ( j = 0; j < n - 1 - i; j++)
        {
            if (stu[j].score < stu[j + 1].score)
            {
                t = stu[j];
                stu[j] = stu[j + 1];
                stu[j + 1] = t;
            }
        }
    }
    //输出
    for ( i = 0; i < n; i++)
    {
        printf("%15s%5d\n", stu[i].name, stu[i].score);
    }
    return 0;
}


发文字出来呢

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7514145
  • 这篇博客也不错, 你可以看下迭代递推计算均值、方差的无偏估计(含C++实现)
  • 除此之外, 这篇博客: 最新腾讯面试题汇总--C++后端开发岗(部分含答案)中的 缓存穿透,缓存雪崩,缓存击穿,缓存过期策略 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 缓存穿透

    缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大且不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。 解决方案:

    1. 接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截; 从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,缓存有效时间可以设置短点,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个id暴力攻击
    • 缓存击穿

    缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力 解决方案: 设置热点数据永远不过期 加互斥锁降低从数据库中读取数据频率

    • 缓存雪崩

    缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机。和缓存击穿不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库 解决方案:

    1. 缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。
    2. 如果缓存数据库是分布式部署,将热点数据均匀分布在不同搞得缓存数据库中。
    3. 设置热点数据永远不过期。
  • 您还可以看一下 翁龙老师的青少儿编程NOIP信息学奥赛通关必备-C++语法专题(含真题解析)-变量(下)课程中的 变量的引入小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    根据问题内容和参考资料给出的代码,这个问题需要编写一个C++程序及其解决方案。由于问题内容没有具体的需求,我将根据参考资料中的示例代码给出一个简单的C++程序,并解释如何编写该程序。

    #include <iostream>
    using namespace std;
    
    // 定义一个函数,用于计算两个数的和
    int sum(int a, int b) {
        return a + b;
    }
    
    int main() {
        int num1, num2;
        cout << "请输入两个整数:" << endl;
        cin >> num1 >> num2;
    
        int result = sum(num1, num2);
        cout << "两个数的和为:" << result << endl;
    
        return 0;
    }
    

    以上是一个简单的C++程序,该程序实现了计算两个整数的和并打印输出结果。下面是该程序的解决方案:

    1. 首先,我们使用#include指令包含了iostream头文件,以便使用输入输出流对象和相关的函数。
    2. 使用using namespace std;语句,将std命名空间下的函数和对象引入当前作用域,省略了std::前缀,使得我们可以直接使用cout、cin等对象。
    3. 定义了一个名为sum的函数,用于计算两个整数的和,并将结果返回。该函数接受两个参数a和b,并通过return语句返回它们的和。
    4. 在主函数main中,通过使用cin对象从控制台输入两个整数num1和num2。
    5. 调用sum函数,传入num1和num2的值,并将返回值赋给result变量。
    6. 使用cout对象打印输出result变量的值。

    该程序的运行过程如下,输出结果为两个整数的和:

    请输入两个整数:
    3
    5
    两个数的和为:8
    

    以上就是一个简单的C++程序以及解决方案。如果问题需要其他的具体需求,请提供更多的信息,我将进一步帮助你编写相应的程序和解决方案。