标题:函数调用出现cannot convert parameter 1 from 'int [10]' to 'int' 问题
只看楼主
troyzyc
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2016-7-4
结帖率:56.6%
已结贴  问题点数:6 回复次数:4 
函数调用出现cannot convert parameter 1 from 'int [10]' to 'int' 问题
这个程序目的是要把数组中10个元素的后边m个放到最前边,前边的(10-m)个元素放到后边。结果我的程序出了点问题:
#include<stdio.h>
#include<string.h>
int main()
{  
    void tran(int ,int m);
   
    int a[10],i,m,b[10];
    printf("please enter 10 numbers:\n");

    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
   
    printf("please enter m=\n");
    scanf("%d",&m);
    tran(a,m);                            在这里函数调用中出现“  'tran' : cannot convert parameter 1 from 'int [10]' to 'int'  ”这样的问题,请问大神怎么解决?   
    for(i=0;i<10;i++)
        printf("%d",b[i]);
return 0;
}
   
void tran(int a[],int m)
{  int j,k,b[10],r;
   for(j=10-m,k=0;j<10;j++,k++)
       b[k]=a[j];
   for(r=0;r<10-m;r++)
       b[r+m]=a[r];

}
搜索更多相关主题的帖子: convert include numbers cannot please 
2017-01-26 20:27
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:3 
第五行   void tran(int a[],int m);

早知做人那么辛苦!  当初不应该下凡
2017-01-26 20:33
troyzyc
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2016-7-4
得分:0 
回复 2楼 炎天
有两个问题:
1、第五行的void tran(int a[],int m); 中,如果没写“a【】”,在形参中不是可以的吗?我只要写出int表示类型就行了呀?
2、若加上a【】后,结果最后是-858993460-858993460-858993460-858993460-858993460-858993460-858993460-858993460-858993460-858993460这种答案,请问我该怎么改?
2017-01-26 20:42
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:0 
你原来的问题, 在tran()函数里定义int b[10]只在tran(){  }里有效,不对main()中的b[10]产生作用
程序代码:
#include<stdio.h>
#include<string.h>
int b[10];                 //定义全局b[10] 
int main()
{  
    void tran(int a[],int m);
    
    int a[10],i,m;
    printf("please enter 10 numbers:\n");

    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    
    printf("please enter m=\n");
    scanf("%d",&m);
    tran(a,m);                           
    for(i=0;i<10;i++)
        printf("%d ",b[i]);
return 0;
}
    
void tran(int a[],int m)
{  int j,k,r;                            //这里去掉b[10] 
   for(j=10-m,k=0;j<10;j++,k++)
       b[k]=a[j];
   for(r=0;r<10-m;r++)
       b[r+m]=a[r];

}


------------------------------2-----------------------------------------
程序代码:
#include<stdio.h>
#include<string.h>
int main()
{  
    void tran(int a[],int m, int b[]);
    
    int a[10],i,m,b[10];
    printf("please enter 10 numbers:\n");

    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    
    printf("please enter m=\n");
    scanf("%d",&m);
    tran(a,m,b);                              
    for(i=0;i<10;i++)
        printf("%d",b[i]);
return 0;
}
    
void tran(int a[],int m, int b[])
{  int j,k,r;
   for(j=10-m,k=0;j<10;j++,k++)
       b[k]=a[j];
   for(r=0;r<10-m;r++)
       b[r+m]=a[r];

}


[此贴子已经被作者于2017-1-26 20:58编辑过]


早知做人那么辛苦!  当初不应该下凡
2017-01-26 20:47
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:3 
对于标题的问题,
数组名a的类型为 int [],在作为参数写在函数原型里面时等价于int *
所以原型那行的第一参数应该写作int[]或者int*

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2017-01-27 15:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-473842-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.110267 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved