冒泡排序不编译c

时间:2017-11-30 20:51:14

标签: c

我使用的是source.c,我使用与c ++相同的控制台,之前没有给我一个问题。它给我的问题是指向bubbleSort函数,但我正在一步一步地跟踪视频以使我的工作我怀疑我有一个指针错误或变量。 我是C编程的新手,往往会犯错,我找不到。任何帮助将不胜感激。

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

struct SalesRep  //creating sturcture
{
    char name[20];
    int Sales;
};

void bubbleSort(SalesRep *a,int n);


int main()
{
    int *a;  //dynamic array pointer
    int i,n;

    struct SalesRep *s;



printf("How many sales to be entered for dynamic array?");   //getting dynamic array info
scanf_s("%d",&n);

a=(int*)calloc(n,sizeof(int));

s=(SalesRep*)calloc(n,sizeof(SalesRep));

printf("Enter Sales rep name and sales:");
for(i=0;i<n;i++)
{
    printf("Enter name:\n");
    scanf("%s",s[i].name);
    printf("enter sales:\n");
    scanf("d%",&s[i].Sales);
}

printf("This is the information entered:\n");      //displaying info
{
    printf("%s: ",s[i].name);

    printf("Sales %d:\n",s[i].Sales);
}

bubbleSort(s,n);                  //function call of bubblesort


printf("This is the information entered:\n");            //see new information after bubblesort
{
    printf("%s: ",s[i].name);

    printf("Sales %d:\n",s[i].Sales);
}

free( s );

return 0;
}

void bubbleSort(SalesRep *a,int n)
{
    int i,j,temp;
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1;j++)
    {
        if((*(a+j)).Sales>(*(a+j+1)).Sales)
        {
            temp=(*(a+j)).Sales;
            (*(a+j)).Sales=(*(a+j+1)).Sales;
            (*(a+j+1)).Sales=temp;
        }
    }
}
}

错误:

 (11)error C2143: syntax error : missing ')' before '*'
 (11) error C2143: syntax error : missing '{' before '*'
 (11)error C2059: syntax error : 'type'
 (11)error C2059: syntax error : ')'
 (28)error C2065: 'SalesRep' : undeclared identifier
 (28)error C2059: syntax error : ')'
 (46)warning C4013: 'bubbleSort' undefined; assuming extern returning int
 (61)error C2143: syntax error : missing ')' before '*'
 (61)error C2143: syntax error : missing '{' before '*'
 (61)error C2059: syntax error : 'type'
 (61)error C2059: syntax error : ')'

1 个答案:

答案 0 :(得分:1)

使用C编译器编译时,您可能唯一缺少的是:

typedef struct SalesRep SalesRep;

与C ++不同,在C中,通过struct引入的代码(例如SalesRep中的struct SalesRep仅在被称为struct SalesRep时被识别为类型(而不是{ {1}}所有人)。 SalesRep允许您直接使用typedef作为类型(不带SalesRep - 前缀。

一旦解决了这个问题,所有其他问题就会消失,例如: struct原型中的错误,因此在调用bubbleSort,...

时缺少声明