程式碼
#include <stdio.h>
int main(void) {
int a[11] = {1,4,6,9,13,16,19,28,40,100}; // 僅給 10 個初始值
int i, number, temp1, temp2, end, j;
puts("原始陣列(含自動歸零的第 11 元素):");
for (i = 0; i < 11; ++i) printf("%5d", a[i]);
putchar('\n');
printf("請輸入欲插入的數字:");
scanf("%d", &number);
end = a[9]; // 目前最大值(已排序假設)
if (number > end) {
a[10] = number;
} else {
for (i = 0; i < 10; ++i) {
if (a[i] > number) {
temp1 = a[i];
a[i] = number;
for (j = i + 1; j < 11; ++j) {
temp2 = a[j];
a[j] = temp1;
temp1 = temp2;
}
break;
}
}
}
puts("插入後陣列:");
for (i = 0; i < 11; ++i) printf("%6d", a[i]);
putchar('\n');
return 0;
}
執行結果
原始陣列(含自動歸零的第 11 元素):
1 4 6 9 13 16 19 28 40 100 0
重點
- C 標準規定:靜態/陣列/結構體部分初始化時,未指定元素自動以 0 初始化(整數為 0,指標為 NULL,浮點為 0.0)。
- 此特性常用於「預留空位」的演算法(如插入排序、動態陣列擴容)。
int a[11] = {0}; 可一次將全陣列歸零。