| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4080 人关注过本帖
标题:函数调用出现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: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1685
专家分:4252
注 册:2007-12-27
收藏
得分:3 
对于标题的问题,
数组名a的类型为 int [],在作为参数写在函数原型里面时等价于int *
所以原型那行的第一参数应该写作int[]或者int*

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2017-01-27 15:24
快速回复:函数调用出现cannot convert parameter 1 from 'int [10]' to 'int' ...
数据加载中...
 
   



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

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