此代码是什么意思?本质上在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;
}
此代码通过读取计数n开始,然后读取n整数。
每个整数都假定在-100到399之间,我们在数组m中计数看到这些数字的次数(m会自动用零初始化)。如果用户键入的数字不在-100到399之间,则程序可能会崩溃:-)
最后一个循环确实做得很奇怪……它需要将数字-100到100,而不是打印为该数字保存的计数,而是打印数字本身的计数次数。因此,如果在输入中多次看到数字“ 7”,则输出“ 7 7 7”。
因此,从本质上讲,该程序看起来是一种愚蠢的排序算法,用于-100到100之间的整数。100到399之间的输入整数也被接受,但被忽略,而任何其他输入都可能导致程序崩溃: -)
您可以运行代码以确认我的解释是否成立(我自己没有尝试运行它。)>