输入的是1 2 3 4 5 6 7 8 9 10
看不懂为什么这么输出,每一行每一个数字为啥间隔那么大?整体呈三角形下来的怎么做到的?希望有人帮忙分析一下代码😭
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
为了更清晰地解释这个问题,我将提供一个简单的示例代码,并通过注释来解释每个部分的作用。
首先,让我们定义一个包含整数的数组number
:
#include <stdio.h>
int main() {
int number[100];
// 初始化数组
for(int i = 0; i < 100; ++i) {
number[i] = 0;
}
printf("请输入一些数字(-1表示结束):\n");
while(true) {
int x;
scanf("%d", &x);
if(x == -1) break; // 当用户输入了-1时退出循环
// 将输入的数字添加到数组中
number[x]++;
}
// 打印数组的总和
double sum = 0.0;
for(int i = 0; i < 100; ++i) {
sum += number[i];
}
printf("数组总和为:%f\n", sum);
return 0;
}
这段代码首先创建了一个长度为100的数组number
,然后提示用户输入一系列的数字,当输入了-1表示结束时,循环终止。在每次循环中,我们将输入的数字加到number
数组中对应的索引上。
接下来,我们计算数组的总和并打印它:
double sum = 0.0;
for(int i = 0; i < 100; ++i) {
sum += number[i];
}
printf("数组总和为:%f\n", sum);
这段代码利用了数组number
的特性,即每当有一个新的值被添加到数组中时,它的位置就会自动增加一。因此,数组的长度会随着用户的输入而变化。
现在,让我们尝试运行这个程序,并观察输出结果。