这一题有一个bug,正确答案判断的有瑕疵。下面我具体说一下。
#include
int main() {
int a[10];
int i, j, n;
for (i = 0; i < 9; i++) {
scanf("%d", &a[i]);
}
scanf("%d", &n);
for (i = 0; i < 10; i++) {
if (n < a[i]) {
for (j = 1; j < 10; j++) {
if (10 - j == i) {
a[i] = n;
break;
}
a[10 - j] = a[10 - j - 1];
}
break;
}
}
for (i = 0; i < 10; i++) {
if (i == 9) {
printf("%d\n", a[i]);
break;
}
printf("%d ", a[i]);
}
return 0;
}
把上面这一串代码提交,显示100%正确。但这组代码有问题:如果输入的n比前9个值都大的,则无法将其记录,最终输出的值是前9个按序排好和一个0.
#include
int main() {
int a[10];
int i, j, n;
for (i = 0; i < 9; i++) {
scanf("%d", &a[i]);
}
scanf("%d", &n);
for (i = 0; i < 10; i++) {
if (n < a[i]) {
for (j = 1; j < 10; j++) {
if (10 - j == i) {
a[i] = n;
break;
}
a[10 - j] = a[10 - j - 1];
}
break;
}
if (n > a[8]) {
a[9] = n;
break;
}
}
for (i = 0; i < 10; i++) {
if (i == 9) {
printf("%d\n", a[i]);
break;
}
printf("%d ", a[i]);
}
return 0;
}
其实正确的代码是这个。这个交上去也是100%正确。