C编程难度

时间:2015-01-23 15:45:13

标签: c

大家好,我为班上的项目遇到了一些麻烦 我们刚刚开始学习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

1 个答案:

答案 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