Type mismatch in redeclaration of 'sort'

#define N 100
#include<stdio.h>
main(){
int a[N][N],i,j;
int n=0;
printf("ji shu (3~100)n=");
do{
scanf("%d",&n);
}while(n<3&&n>100&&n%2!=0);
sort(a[N][N],n);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%5d",a[i][j]);
}
prinf("\n");
}
}
void sort(int array[N][N],int n){
array[0][n/2-1]=1;
}
这个程序错误Type mismatch in redeclaration of 'sort' 是什么问题 我只是通过函数void sort()调整一个2维数组 应该怎么做

#include <stdio.h>
#include <stdlib.h>
#define N 100

int main()
{ int a[N][N],i,j;
int n=0;
void sort(int [][N], int);//这儿要先声明,要不后面那个调用会当作默认声明处理了
printf("ji shu (3~100)n=");
do{
scanf("%d",&n);
}while(n<3&&n>100&&n%2!=0);
sort(a,n); //第一个参数直接数组名就可以
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%5d",a[i][j]);
}
printf("\n");
}

system("pause");
return (0);
}
void sort(int array[N][N],int n){
array[0][n/2-1]=1;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-07-05
Type mismatch in redeclaration of 'sort'
意思是你重新声明了'sort',
而且 前后两次声明的类型不一致。

Type --类型
mismatch -- 不一致,不匹配
redeclaration of 'sort' -- 重新声明了'sort'

原因是函数 void sort()的定义在主函数 main() 后面出现,按C语言规定,在主函数之前,必须有函数的原型声明:
#include<stdio.h>
#define N 100
void sort(int array[N][N],int n);
main(){ }
void sort(int array[N][N],int n)
{ ..}
否则,编译器误解成“重新声明”
-------------------------------
调用应当是:
sort(a,n);
------------------------------
输入语句,应当先要求输入n,判断n
再用
for (j=0;j<n;j++)
for (i=0;i<n;i++)scanf("%d",&a[j][i]);
输入 a[][]
--------------------------------
sort 的意思是 排队分类。
array[0][n/2-1]=1; 也许达不到分类的目的
第2个回答  2008-07-01
sort(a,n)
前面要放数组名,a,不是a[n][n]
不过sort本身是C的内部函数,建议换一个名字

还有,自定义的函数或者写在用之前,或者在前面有定义,不然找不到函数的。
第3个回答  2008-07-01
1.既然是奇数,怎么条件里还有n%2!=0
应该是n%2==0
2.传值方式不对,sort(a[N][N],n);
不能直接传二维数组,应该传数组的首地址
即为sort(a,n)
3.应该在前面也定义一下
void sort(int ,int )
p.s ji shu 是奇数的意思吧
第4个回答  2008-07-01
帮你改好了。运行测试过!
1.初始化问题,a[N][N]={0}
2.while(n>3 && n<100,你看一下你的这里,下次小心。
3. sort(a,n);这个地方错误,说明动手太少了呀,要多动动手哦
祝楼主成功,好运!

#include<stdio.h>

#define N 100

void sort(int array[N][N],int n);

void main(){
int a[N][N]={0},i,j;
int n=0;
printf("ji shu (3~100)n=");
do{
scanf("%d",&n);
}while(n>3 && n<100 && n%2!=0);
sort(a,n);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%5d",a[i][j]);
}
printf("\n");
}
}

void sort(int array[][N],int n){
array[0][n/2-1]=1;
}
第5个回答  2008-07-02
#include<stdio.h>

#define N 100

//要把函数的实现放在前面,然后才能调用它(或者先声明,再调用,再实现)
void sort(int array[N][N],int n)
{
array[0][n/2-1]=1;
}

main()
{
int a[N][N],i,j;
int n=0;

printf("ji shu (3~100)n=");
do
{
scanf("%d",&n);
}while(n<3&&n>100&&n%2!=0);
sort(a,n); ////////////////////////调用的时候,要把数组a弱化成指针
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
}

最严重的问题:
声明了数组a,并没有给它赋值,然后就使用了!这样显然是错误的!
就算初始化为0,也是不对的,因为它根本达不到楼主编写程序的目的!
大家正在搜