下面这个C语言程序为什么在VS2010中大量报错,却能在VC++6.0中顺利运行?
(直接插入排序函数及文件调用)(错误集中在结构体类型、未声明的标识符等)#include"c1.h"//头文件,这个不报错#defineLT(a,b)((a)<(b))s...
(直接插入排序函数及文件调用)
(错误集中在结构体类型、未声明的标识符等)
#include"c1.h" //头文件,这个不报错
#define LT(a,b)((a)<(b))
struct redtype
{
int key;
int otherinfo;
};
#define maxsize 30
struct SqList
{
redtype r[maxsize+1];
int length;
};
void InsertSort(SqList &L)
{
int i, j;
for(i=2; i<=L.length; ++i)
if LT(L.r[i].key, L.r[i-1].key)
{
L.r[0]=L.r[i];
for(j=i-1; LT(L.r[0].key, L.r[j].key); --j)
L.r[j+1]=L.r[j];
L.r[j+1]=L.r[0];
}
}
void Print(SqList &L)
{
int i;
for(i=1; i<=L.length; ++i)
printf("(%d,%d)", L.r[i].key, L.r[i].otherinfo);
printf("\n");
}
void Input(FILE*f, redtype &c)
{
fscanf(f,"%d %d", &c.key, &c.otherinfo);
}
void main()
{
FILE *f;
SqList m1;
int i;
f=fopen("f9-1.txt", "r");
fscanf(f, "%d", &m1.length);
for(i=1; i<=m1.length; ++i)
Input(f, m1.r[i]);
fclose(f);
printf("排序前:\n");
Print(m1);
InsertSort(m1);
printf("直接插入排序后:\n");
Print(m1);
} 展开
(错误集中在结构体类型、未声明的标识符等)
#include"c1.h" //头文件,这个不报错
#define LT(a,b)((a)<(b))
struct redtype
{
int key;
int otherinfo;
};
#define maxsize 30
struct SqList
{
redtype r[maxsize+1];
int length;
};
void InsertSort(SqList &L)
{
int i, j;
for(i=2; i<=L.length; ++i)
if LT(L.r[i].key, L.r[i-1].key)
{
L.r[0]=L.r[i];
for(j=i-1; LT(L.r[0].key, L.r[j].key); --j)
L.r[j+1]=L.r[j];
L.r[j+1]=L.r[0];
}
}
void Print(SqList &L)
{
int i;
for(i=1; i<=L.length; ++i)
printf("(%d,%d)", L.r[i].key, L.r[i].otherinfo);
printf("\n");
}
void Input(FILE*f, redtype &c)
{
fscanf(f,"%d %d", &c.key, &c.otherinfo);
}
void main()
{
FILE *f;
SqList m1;
int i;
f=fopen("f9-1.txt", "r");
fscanf(f, "%d", &m1.length);
for(i=1; i<=m1.length; ++i)
Input(f, m1.r[i]);
fclose(f);
printf("排序前:\n");
Print(m1);
InsertSort(m1);
printf("直接插入排序后:\n");
Print(m1);
} 展开
展开全部
具体都有哪些错误啊
上传个图也好啊
还有结构体struct SqList声明中的那个redtype应该写成struct redtype
同样你的函数包括函数的参数,变量的声明中结构体的名字也错了
SqList改成struct SqList redtype改成struct redtype
还有你cl.h文件内容是什么啊
另外你这是c++吧
如果是c语言的话函数形参中不能使用&,这个在c++中是允许的是对变量的引用
但c语言中就不适用了,改成*,表示为指针变量
上传个图也好啊
还有结构体struct SqList声明中的那个redtype应该写成struct redtype
同样你的函数包括函数的参数,变量的声明中结构体的名字也错了
SqList改成struct SqList redtype改成struct redtype
还有你cl.h文件内容是什么啊
另外你这是c++吧
如果是c语言的话函数形参中不能使用&,这个在c++中是允许的是对变量的引用
但c语言中就不适用了,改成*,表示为指针变量
追问
您能修改下这个C程序,让它在vs中运行吗?(可传送至知道)
另外,c1.h的内容是一堆常用的头文件集合,那个不报错。
答案可以加分。
追答
#include <stdio.h>
#define LT(a,b)((a)<(b))
typedef struct redtype
{
int key;
int otherinfo;
}redtype;
#define maxsize 30
typedef struct SqList
{
redtype r[maxsize+1];
int length;
}SqList;
百度说太多了无法提交,已经把修改后的代码私信给你了
因为我不用win所以没有vs,但代码已经可以在gcc下编译通过
我想在vs下编译通过应该是不成问题的
但我没运行过,这就不管我事了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询