my程序的目的是根据用户输入对数字进行排序。一切工作正常,直到用户想要输入6个以上的数据(inp = 5),而且我不确定为什么会这样。您可以查看一下并让我知道其背后的原因吗?
#include <stdio.h>
#include <stdlib.h>
int size =0;
void ascSort(int *a, int size, int temp) {
for(int i=1; i< size; i++){
for(int j=i; j>0; j--){
if(a[j-1]>a[j]){
temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
}
}
}
}
void descSort(int *a, int size, int temp) {
for(int i=1; i< size; i++){
for(int j=i; j>0; j--){
if(a[j-1]<a[j]){
temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
}
}
}
}
int main(){
char inpChar, isContinue='y';
int inp, temp=0;
int * a = malloc(0 * sizeof(*a));
do {
printf("How many numbers would you like to sort?\n");
fflush(stdin);
scanf("%d", &inp);
size = inp;
printf("%d\n", size);
a = realloc(a, size * sizeof(*a));
for(int i=0; i<size; i++){
//Below, I am printing 'size' for debugging purposes
printf("Type %d more numbers to sort ---- '%d'\n", inp, size);
fflush(stdin);
scanf("%d", &a[i]);
inp--;
}
printf("Please input a for ascending order and d for descending order\n");
fflush(stdin);
scanf(" %c", &inpChar);
switch (inpChar) {
case 'a':
ascSort(a, size, temp);
break;
case 'd':
descSort(a, size, temp);
break;
default: printf("Invalid character\n");
}
printf("Sorted Array: \n" );
for(int i=0; i<size; i++){
printf("%d\n", a[i]);
}
printf("Do you want to repeat? Type y/n\n");
fflush(stdin);
scanf(" %c", &isContinue);
} while(isContinue != 'n');
}
在“ inp”值增加到6后,“ inp”值显示完全没有预期的垃圾值。
注意,代码已更新并可以正常使用。现在,我的问题是如何改进此代码,以便可以将此代码转换为MIPS汇编语言?谢谢。