大家好,我为班上的项目遇到了一些麻烦 我们刚刚开始学习C,我无法完成这项任务,它是一个泡泡分拣机。
我不熟悉我们刚刚学习的语法,但我认为代码本身(printValues
除外)正在工作......不确定如何做到这一点
它有几个错误,但第一个是
error: expected expression before 'if'
我也不确定`sort()
中的第二个for语句预期输出:
Before:
[7 3 9 4 6 1 2 8 5 ]
[3 7 9 4 6 1 2 8 5 ]
[3 7 4 9 6 1 2 8 5 ]
[3 7 4 6 9 1 2 8 5 ]
[3 7 4 6 1 9 2 8 5 ]
[3 7 4 6 1 2 9 8 5 ]
[3 7 4 6 1 2 8 9 5 ]
[3 7 4 6 1 2 8 5 9 ]
[3 4 7 6 1 2 8 5 9 ]
[3 4 6 7 1 2 8 5 9 ]
[3 4 6 1 7 2 8 5 9 ]
[3 4 6 1 2 7 8 5 9 ]
[3 4 6 1 2 7 5 8 9 ]
[3 4 1 6 2 7 5 8 9 ]
[3 4 1 2 6 7 5 8 9 ]
[3 4 1 2 6 5 7 8 9 ]
[3 1 4 2 6 5 7 8 9 ]
[3 1 2 4 6 5 7 8 9 ]
[3 1 2 4 5 6 7 8 9 ]
[1 3 2 4 5 6 7 8 9 ]
[1 2 3 4 5 6 7 8 9 ]
After:
[1 2 3 4 5 6 7 8 9 ]
到目前为止,这是我的代码:
#include <stdio.h>
#define MAX 9
//function prototypes
void printValues(){
printf("hi");
}//end printValues
void sort(){
int i;
int j;
for (i = 0; i < MAX-1; i++)
for (j = 0; j < MAX -1 - i)
if (*[i] > *[j + 1])
swap(*[j] *[j+1])
}//end sort
void swap(int*h, int*l){
int temp;
temp = *l
*l = *h
*h = temp
}//end swap
int values[] = {7, 3, 9, 4, 6, 1, 2, 8, 5};
int main(){
printf("Before: \n");
printValues();
sort();
printf("After: \n");
printValues();
return(0);
} // end main
答案 0 :(得分:1)
我明白了。
代码中的一些错误:
&
和*
;
放在它之后?这将是一个无操作循环!)printValues()
函数此外,*[i]
并不意味着什么。你已经拥有了数组,所以只需values[i]
即可。如果你想获得它的地址(做一个指针),你可以使用&符号。
另外......为此使用全局数组并不是一个好主意。如果将数组作为参数(指向它的指针)传递给sort函数,情况会好得多。
#include <stdio.h>
#define MAX 9
int values[] = {7, 3, 9, 4, 6, 1, 2, 8, 5};
//function prototypes
void printValues(){
int i;
printf("[");
for(i = 0; i < MAX; i++) {
printf(" %d ", values[i]);
}
printf("]\n");
}//end printValues
void swap(int* h, int* l){
int temp;
temp = *l;
*l = *h;
*h = temp;
}//end swap
void sort() {
int i;
int j;
for (i = 0; i < MAX-1; i++) {
for (j = 0; j < MAX - 1 - i; j++) {
if (values[j] > values[j + 1])
swap(&values[j], &values[j+1]);
}
}
}//end sort
int main(){
printf("Before: \n");
printValues();
sort();
printf("After: \n");
printValues();
return(0);
} // end main