| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2259 人关注过本帖
标题:请问各位高手这个程序有什么错误?
只看楼主 加入收藏
荀减一
Rank: 1
等 级:新手上路
帖 子:19
专家分:2
注 册:2016-2-27
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:12 
请问各位高手这个程序有什么错误?
#include<stdio.h>
#define Y 5
void copy_arr(double sourse,double target1,int n);
void copy_ptr(double sourse,double target2,int n);
void main()
{
    double arr[5]={1.1,2.2,3.3,4.4,5.5};
    double cop1[5];
    double cop2[5];
    copy_arr(arr,cop1,5);
    copy_ptr(arr,cop2,5);
}
void copy_arr(double sourse,double target1,int n)
{
    int i;
    int m;
    m=0;
    for(i=0;i<5;i++)
        {
            cop1[i]=arr[m];
            m++;
        }
    for(i=0;i<5;i++)
    printf{"the array after copy is %f",cop1[i]};
}
void copy_ptr(double sourse,double target2,int n)
{
    double *pt;
    int i,m;
    pt=arr;
    for(i=0,m=0;i<5;i++)
    {   
        cop2[i]=*(pt+m);
        m++;
    }

    for(i=0;i<5;i++)
    printf{"the array after copy is %f",cop2[i]};
}
搜索更多相关主题的帖子: include double 
2016-02-27 13:04
蓝色风暴cl
Rank: 8Rank: 8
来 自:新疆
等 级:蝙蝠侠
威 望:3
帖 子:163
专家分:704
注 册:2015-9-6
收藏
得分:5 
错误    1    error C2440: “函数”: 无法从“double [5]”转换为“double”    d:\project\vs work\md5\md5\md5.c    11    1    MD5
    24    IntelliSense:  "double *" 类型的实参与 "double" 类型的形参不兼容    d:\project\vs work\MD5\MD5\MD5.c    11    11    MD5
    25    IntelliSense:  "double *" 类型的实参与 "double" 类型的形参不兼容    d:\project\vs work\MD5\MD5\MD5.c    11    16    MD5
错误    4    error C2440: “函数”: 无法从“double [5]”转换为“double”    d:\project\vs work\md5\md5\md5.c    12    1    MD5
    26    IntelliSense:  "double *" 类型的实参与 "double" 类型的形参不兼容    d:\project\vs work\MD5\MD5\MD5.c    12    11    MD5
    27    IntelliSense:  "double *" 类型的实参与 "double" 类型的形参不兼容    d:\project\vs work\MD5\MD5\MD5.c    12    16    MD5
错误    7    error C2065: “cop1”: 未声明的标识符    d:\project\vs work\md5\md5\md5.c    21    1    MD5
错误    8    error C2109: 下标要求数组或指针类型    d:\project\vs work\md5\md5\md5.c    21    1    MD5
错误    9    error C2065: “arr”: 未声明的标识符    d:\project\vs work\md5\md5\md5.c    21    1    MD5
    28    IntelliSense:  未定义标识符 "cop1"    d:\project\vs work\MD5\MD5\MD5.c    21    3    MD5
    29    IntelliSense:  未定义标识符 "arr"    d:\project\vs work\MD5\MD5\MD5.c    21    13    MD5
错误    10    error C2143: 语法错误 : 缺少“;”(在“{”的前面)    d:\project\vs work\md5\md5\md5.c    25    1    MD5
错误    12    error C2065: “cop1”: 未声明的标识符    d:\project\vs work\md5\md5\md5.c    25    1    MD5
错误    13    error C2109: 下标要求数组或指针类型    d:\project\vs work\md5\md5\md5.c    25    1    MD5
错误    14    error C2143: 语法错误 : 缺少“;”(在“}”的前面)    d:\project\vs work\md5\md5\md5.c    25    1    MD5
    30    IntelliSense:  应输入“;”    d:\project\vs work\MD5\MD5\MD5.c    25    9    MD5
错误    15    error C2065: “arr”: 未声明的标识符    d:\project\vs work\md5\md5\md5.c    31    1    MD5
    31    IntelliSense:  未定义标识符 "arr"    d:\project\vs work\MD5\MD5\MD5.c    31    7    MD5
错误    17    error C2065: “cop2”: 未声明的标识符    d:\project\vs work\md5\md5\md5.c    34    1    MD5
错误    18    error C2109: 下标要求数组或指针类型    d:\project\vs work\md5\md5\md5.c    34    1    MD5
    32    IntelliSense:  未定义标识符 "cop2"    d:\project\vs work\MD5\MD5\MD5.c    34    3    MD5
错误    19    error C2143: 语法错误 : 缺少“;”(在“{”的前面)    d:\project\vs work\md5\md5\md5.c    39    1    MD5
错误    21    error C2065: “cop2”: 未声明的标识符    d:\project\vs work\md5\md5\md5.c    39    1    MD5
错误    22    error C2109: 下标要求数组或指针类型    d:\project\vs work\md5\md5\md5.c    39    1    MD5
错误    23    error C2143: 语法错误 : 缺少“;”(在“}”的前面)    d:\project\vs work\md5\md5\md5.c    39    1    MD5
    33    IntelliSense:  应输入“;”    d:\project\vs work\MD5\MD5\MD5.c    39    9    MD5
这是VS2013运行结果。

欢迎大家加好友哦,多找我聊聊吧!
2016-02-27 13:12
荀减一
Rank: 1
等 级:新手上路
帖 子:19
专家分:2
注 册:2016-2-27
收藏
得分:0 
回复 2楼 蓝色风暴cl
高手 能不能帮忙改一下或者帮忙提一下这里错误地方的知识点,我是新手
2016-02-27 13:17
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:15 
你的错误有:
1.数组作为参数,但写的方式不正确。
2.printf(),而不是printf{}。
3.子函数copy_arr,copy_ptr不可以访问main中的arr,cop1,cop2。

程序代码:
#include <stdio.h>
#include <stdlib.h>

void copy_arr(double sourse[],double target1[],int n);
void copy_ptr(double sourse[],double target2[],int n);

int main()
{
    double arr[5]={1.1,2.2,3.3,4.4,5.5};
    double cop1[5];
    double cop2[5];
    copy_arr(arr,cop1,5);
    copy_ptr(arr,cop2,5);

    return 0;
}
void copy_arr(double sourse[],double target1[],int n)
{
    int i;
    for(i=0;i<5;i++)
    {
        target1[i]=sourse[i];
    }

    printf("The array after copy_arr is:");
    for(i=0;i<5;i++)
    {
        printf("%.1f ",target1[i]);
    }
    printf("\n");
}
void copy_ptr(double sourse[],double target2[],int n)
{
    double *pt;
    int i,m;
    pt=sourse;
    for(i=0,m=0;i<5;i++)
    {
        target2[i]=*(pt+m);
        m++;
    }

    printf("The array after copy_ptr is:");
    for(i=0;i<5;i++)
    {
        printf("%.1f ",target2[i]);
    }
    printf("\n");
}

不过我猜你是想要下面的效果,要验证数组做为子函数的参数,其中的改变是会改变原本数组的内容,因为是数组是按地址传递的。
程序代码:
#include <stdio.h>
#include <stdlib.h>

void copy_arr(double sourse[],double target1[],int n);
void copy_ptr(double sourse[],double target2[],int n);

int main()
{
    int i;
    double arr[5]={1.1,2.2,3.3,4.4,5.5};
    double cop1[5]={0};
    double cop2[5]={0};
    copy_arr(arr,cop1,5);
    copy_ptr(arr,cop2,5);

    printf("The array cop1 after copy_arr is:");
    for(i=0;i<5;i++)
    {
        printf("%.1f ",cop1[i]);
    }
    printf("\n");

    printf("The array cop2 after copy_ptr is:");
    for(i=0;i<5;i++)
    {
        printf("%.1f ",cop2[i]);
    }
    printf("\n");

    return 0;
}
void copy_arr(double sourse[],double target1[],int n)
{
    int i;
    for(i=0;i<5;i++)
    {
        target1[i]=sourse[i];
    }
}
void copy_ptr(double sourse[],double target2[],int n)
{
    double *pt;
    int i,m;
    pt=sourse;
    for(i=0,m=0;i<5;i++)
    {
        target2[i]=*(pt+m);
        m++;
    }
}


[此贴子已经被作者于2016-2-27 14:02编辑过]


   唯实惟新 至诚致志
2016-02-27 13:46
蓝色风暴cl
Rank: 8Rank: 8
来 自:新疆
等 级:蝙蝠侠
威 望:3
帖 子:163
专家分:704
注 册:2015-9-6
收藏
得分:0 
回复 3楼 荀减一
版主大大  会给你满意的答案。

欢迎大家加好友哦,多找我聊聊吧!
2016-02-27 18:31
荀减一
Rank: 1
等 级:新手上路
帖 子:19
专家分:2
注 册:2016-2-27
收藏
得分:0 
回复 4楼 qq1023569223
您真的太厉害了,请问我可以加您QQ吗
2016-02-27 23:20
哒哒哒啦啦啦
Rank: 1
等 级:新手上路
帖 子:75
专家分:4
注 册:2016-2-26
收藏
得分:0 
回复 4楼 qq1023569223
照猫画虎改了一下,不知为何总报错。。。

#include<stdio.h>
void copy_arr(double sourse[],double target1[],int n);
void copy_ptr(double sourse[],double target2[],int n);
void main()
{
    double cop1[5]={0};
   int i;
    double arr[5]={1.1,2.2,3.3,4.4,5.5};
    double cop2[5]={0};
    copy_arr(arr,cop1,5);
    copy_ptr(arr,cop2,5);
    for(i=0;i<5;i++)
    printf("the array after copy is %.1f\n",cop1[i]);
    for(i=0;i<5;i++)
    printf("the array after copy is %.1f\n",cop2[i]);

}
void copy_arr(double sourse[],double target1[],int n)
{

    double source[5];
    int i;
    for(i=0;i<5;i++)
        {
            target1[i]=source[i];
        }
}
void copy_ptr(double sourse[],double target2[],int n)
{
    double source[5];
    double *pt;
    int i;
    pt=source;
    for(i=0,;i<5;i++)                                            //这句咋会没用呢。。。
        target2[i]=*(pt+i);
}
--------------------Configuration: 11 - Win32 Debug--------------------
Compiling...
as.cpp
C:\11\as.cpp(37) : error C2059: syntax error : ';'
C:\11\as.cpp(37) : warning C4552: '<' : operator has no effect; expected operator with side-effect
C:\11\as.cpp(37) : error C2143: syntax error : missing ';' before ')'
执行 cl.exe 时出错.
2016-02-28 11:06
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
回复 7楼 哒哒哒啦啦啦
程序代码:
#include<stdio.h>

void copy_arr(double sourse[],double target1[],int n);
void copy_ptr(double sourse[],double target2[],int n);

void main()
{
    int i;
    double arr[5]={1.1,2.2,3.3,4.4,5.5};
    double cop1[5]={0};
    double cop2[5]={0};
    
    copy_arr(arr,cop1,5);
    copy_ptr(arr,cop2,5);
    
    for(i=0;i<5;i++)
    printf("the array after copy is %.1f\n",cop1[i]);

    for(i=0;i<5;i++)
    printf("the array after copy is %.1f\n",cop2[i]);

}

void copy_arr(double sourse[],double target1[],int n)
{

    //double source[5];
    int i;
    for(i=0;i<5;i++)
    {
        target1[i]=source[i];
    }
}

void copy_ptr(double sourse[],double target2[],int n)
{
    //double source[5];
    double *pt;
    int i;
    pt=source;
    for(i=0;i<5;i++)  //多了个,
    {
        target2[i]=*(pt+i);
    }  
}


[此贴子已经被作者于2016-2-28 13:30编辑过]


   唯实惟新 至诚致志
2016-02-28 13:26
荀减一
Rank: 1
等 级:新手上路
帖 子:19
专家分:2
注 册:2016-2-27
收藏
得分:0 
回复 8楼 qq1023569223
为什么这两个函数里边不用声明sourse
void copy_arr(double sourse[],double target1[],int n)
{
    int i;
    for(i=0;i<5;i++)
    {
        target1[i]=sourse[i];
    }
}
void copy_ptr(double sourse[],double target2[],int n)
{
    double *pt;
    int i,m;
    pt=sourse;
    for(i=0,m=0;i<5;i++)
    {
        target2[i]=*(pt+m);
        m++;
    }
}
而8楼的需要,而且输出的内容是错误的?
2016-02-28 16:52
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
回复 9楼 荀减一
参数传递过来直接使用就可以,不用再定义,输出对不对,你自己思考。

   唯实惟新 至诚致志
2016-02-28 16:56
快速回复:请问各位高手这个程序有什么错误?
数据加载中...
 
   



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

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