此代码是什么意思?您可以用注释重写此代码吗

问题描述 投票:-9回答:1

此代码是什么意思?本质上在m [x + 100],第二和第三循环中。附:谢谢,如果您阅读此代码:3

#include <stdio.h>

    using namespace std;

    int n, x, m[500];

    int main () {
        scanf ("%d", &n);
        for (int i = 1; i <= n; ++ i) {
            scanf ("%d", &x); 
            ++ m[x + 100];
        }
        for (int i = 0; i <= 200; ++ i) 
            for (int j = 1; j <= m[i]; ++ j) 
                printf ("%d ", i - 100);
        return 0;    
    }
c++
1个回答
0
投票

此代码通过读取计数n开始,然后读取n整数。

每个整数都假定在-100到399之间,我们在数组m中计数看到这些数字的次数(m会自动用零初始化)。如果用户键入的数字不在-100到399之间,则程序可能会崩溃:-)

最后一个循环确实做得很奇怪……它需要将数字-100到100,而不是打印为该数字保存的计数,而是打印数字本身的计数次数。因此,如果在输入中多次看到数字“ 7”,则输出“ 7 7 7”。

因此,从本质上讲,该程序看起来是一种愚蠢的排序算法,用于-100到100之间的整数。100到399之间的输入整数也被接受,但被忽略,而任何其他输入都可能导致程序崩溃: -)

您可以运行代码以确认我的解释是否成立(我自己没有尝试运行它。)>

© www.soinside.com 2019 - 2024. All rights reserved.