数组名作为函数参数.我编的这个错在那?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组名作为函数参数.我编的这个错在那?相关的知识,希望对你有一定的参考价值。

//用数组名作为函数参数,编写一个比较两个字符串s和t大小的函数strcomp(s,t),要求s小于t时返回-1,s等于t时返回0,s大于t时返回1。在主函数中任意输入4个字符串,利用该函数求最小字符串。
#include"stdio.h"
void sort(int num[],int n)

int i,j,k,t;
for(i=0;i<=n-1;i++)

k=i;
for(j=i+1;j<10;j++)
if(num[j]>num[i]) k=j;
if(k!=i)

t=num[i];
num[i]=num[k];
num[k]=t;


void main()
int i,num[10];
for(i=0;i<10;i++)
scanf("%d",&num[i]);
sort(num[],10);
for(i=0;i<10;i++)
printf("%4d\t",num[i]);



显示:error C2601: 'main' : local function definitions are illegal
这个错误又是什么意思?
各位……照你们的方法改了……错误多了一个
fatal error C1004: unexpected end of file found
原来那个继续保留。。。
题目复制错了。。是这个
编写函数实现将数组元素按从小到大的顺序排序,主函数从键盘输入10个整数存入数组,调用函数后输出数组的元素。

参考技术A #include"stdio.h"
void sort(int num[],int n)

int i,j,k,t;
for(i=8;i>=0;i--)

for(j=0;j<=i;j++)
if(num[j]>num[j+1])


t=num[j];
num[j]=num[j+1];
num[j+1]=t;



void main()
int i,num[10];
for(i=0;i<10;i++)
scanf("%d",&num[i]);
sort(num,10);
for(i=0;i<10;i++)
printf("%4d\t",num[i]);

这样就能实现了 不信 你试试本回答被提问者采纳
参考技术B

看注释

大括号不匹配

参数用的不对

算法有毛病。

#include"stdio.h"
void sort(int num[],int n)
 
    int i,j,k,t;
    for(i=0;i<=n-1;i++)
    
        k=i;
        for(j=i+1;j<n;j++)//改成n
            if(num[j]>num[k]) k=j;//改成num[k]
        if(k!=i)
        
            t=num[i];
            num[i]=num[k];
            num[k]=t;
        
    
//加一个大括号
void main()

    int i,num[10];
    for(i=0;i<10;i++)
        scanf("%d",&num[i]);
    sort(num,10);//去掉[]
    for(i=0;i<10;i++) 
        printf("%4d\\t",num[i]);

//删一个大括号

参考技术C 显示:error C2601: 'main' : local function definitions are illegal

这个错误的话

你试试看

int main()
int i,num[10];
for(i=0;i<10;i++)
scanf("%d",&num[i]);
sort(num[],10);
for(i=0;i<10;i++)
printf("%4d\t",num[i]);
return 0;


你程序里别的错误同上面两个人= =
参考技术D 上面的 与不配对
下面多了个
sort(num[],10);
在使用函数时,直接用数组名就可以sort(num,10);
第5个回答  2010-12-06 上面的 与不配对
下面多了个

c语言问题。我编的。初学函数。略懂指针。编了以下程序不知错在哪里。求高手帮忙

定义一个函数,功能是计算n个学生的成绩中,高于平均成绩的人数,并作为函数值。用主函数来调用它,统计50个学生成绩中,高于平均成绩的有多少人?
#include<stdio.h>

main()

int fun();
int i,j,num;
float s[5][10];
for(i=0;i<5;i++)
for(j=0;j<10;j++)
scanf("%f",&s[i][j]);
num=fun(s[5]);
printf("%d",num);
getch();

int fun(float x[5][10])

int i,j;
int num=0,a,s=0;
for(i=0;i<5;i++)
for(j=0;j<10;j++)
s+=x[i][j];
a=s/50;
for(i=0;i<5;i++)
for(j=0;j<10;j++)
if(x[i][j]>a)
num++;
return num;

错误主要有二种:一是函数声明时,没有参数。函数调用时参数使用错误,应该传地址否则无法传递数组。二是类型不匹配,不同类型运算C会自动隐式转换。如5/9的结果是0;
修改如下:
函数声明int fun();改成:int fun(float x[5][10]));
函数调用num=fun(s[5]);改成:num=fun(s);
int num=0,a,s=0;改成:int num=0; float a,s=0;
参考技术A 函数声明要写在main函数外面
即int fun();不能放在main函数中
参考技术B 你的a,b声明的大小是100x81,但在tra函数中,你又把它们当成m x n的二维数组来处理,当然出错了

以上是关于数组名作为函数参数.我编的这个错在那?的主要内容,如果未能解决你的问题,请参考以下文章

c语言问题。我编的。初学函数。略懂指针。编了以下程序不知错在哪里。求高手帮忙

数组作为函数参数怎么用C++

数组名作为函数的参数属于啥传递为啥

【C 语言】数组元素和数组名作为函数参数

c语言中数组名作为函数参数

C语言中,数组名作为函数参数,属于啥传递,为啥?