输出负数
#include <stdio.h>int main() {
int N, i, j, temp;
scanf("%d", &N);
int a;
for (i = 0; i < N; i++) {
scanf("%d", &a[ i]);
}
for (i = 0; i < N - 1; i++) {
for (j = 0; j < N - i - 1; j++) {
if (a > a) {
temp = a;
a = a;
a = temp;
}
}
}
for (i = 0; i < N; i++) {
printf("%d ", a[ i]);
}
printf("\n");
return 0;
}
这段代码有几个问题。首先,C语言中不允许使用变量来定义数组的长度,因此 int a 是错误的。其次, a 和 a 也是不合法的数组定义。正确的做法是使用动态内存分配或者固定大小的数组。另外,为了避免数组越界,应该确保在使用 scanf 函数时不会超出数组界限。最后,为了完善代码的健壮性,应该添加对输入数据的有效性检查。 在C语言中,数组的长度必须是一个常量表达式,而不是一个变量。因此,你不能这样定义一个大小由用户输入决定的数组。如果你需要一个大小可变的数组,可以使用动态内存分配函数malloc来实现。
下面是一个使用malloc函数动态分配数组内存并按顺序输出的示例:
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
int main() {
int N, i;
int *a;
printf("请输入N的值:");
scanf("%d", &N);
// 分配内存空间
a = (int *)malloc(N * sizeof(int));
// 读取输入
printf("请输入%d个数:", N);
for (i = 0; i < N; i++) {
scanf("%d", &a);
}
// 排序
qsort(a, N, sizeof(int), compare);
// 输出结果
printf("从小到大的顺序输出:");
for (i = 0; i < N; i++) {
printf("%d ", a);
}
printf("\n");
// 释放内存
free(a);
return 0;
}
这段代码首先使用malloc函数动态分配了一个大小为N的整型数组,然后使用qsort函数进行排序,最后输出排序后的结果。希望这能够帮助到你。 ??? 陶远航 发表于 2023-11-19 11:56
???
话说密码贴是怎么读到内容的 tommyyu 发表于 2023-11-19 12:05
话说密码贴是怎么读到内容的
不知道,我没看见
页:
[1]