C语言指针问题
编写一个程序,初始化一个double数组,然后把数组内容复制到另外两个数组(3个数组都需要在主程序中声明)。制作第一份拷贝的函数使用数组符号。制作第二份拷贝的函数使用指针...
编写一个程序,初始化一个double 数组,然后把数组内容复制到另外两个数组(3 个
数组都需要在主程序中声明)。制作第一份拷贝的函数使用数组符号。制作第二份拷贝的函
数使用指针符号,并使用指针的增量操作。把目标数组名和要复制的元素数目做为参数传递
给函数。也就是说,如果给定了下列声明,函数调用应该如下面所示:
double source [5]={1.1, 2.2, 3.3, 4.4, 5.5};
double targetl[5];
double target2 [5];
copy_arr (source, target1, 5);
copy_ptr (source, target1,5);
***************************************************************************************
#include<stdio.h>
void copy_arr(double[], double[], int);
void copy_ptr(double *, double *, int);
int main(void)
{
double source[] = { 1.1, 2.2, 3.3, 4.4, 5.5 };
double target1[5] = {0 };
double target2[5] = { 0 };
int i;
for (i = 0; i<5; i++)
printf("%d ", target1[i]);
printf("\n");
for (i = 0; i<5; i++)
printf("%d ", target2[i]);
printf("\n");
copy_arr(source, target1, 5);
copy_ptr(source, target2, 5);
for (i = 0; i<5; i++)
printf("%d ", target1[i]);
printf("\n");
for (i = 0; i<5; i++)
printf("%d ", target2[i]);
printf("\n");
return 0;
}
void copy_arr(double a[], double b[], int n)
{
int k;
for (k = 0; k < n; k++)
b[k] = a[k];
}
void copy_ptr(double *d, double *c, int m)
{
int j;
for (j = 0; j < m; j++)
*(c+j) = *(d+j);
}
*******************************************************************
上面是我的程序,但输出这样,哪里出了问题呢? 展开
数组都需要在主程序中声明)。制作第一份拷贝的函数使用数组符号。制作第二份拷贝的函
数使用指针符号,并使用指针的增量操作。把目标数组名和要复制的元素数目做为参数传递
给函数。也就是说,如果给定了下列声明,函数调用应该如下面所示:
double source [5]={1.1, 2.2, 3.3, 4.4, 5.5};
double targetl[5];
double target2 [5];
copy_arr (source, target1, 5);
copy_ptr (source, target1,5);
***************************************************************************************
#include<stdio.h>
void copy_arr(double[], double[], int);
void copy_ptr(double *, double *, int);
int main(void)
{
double source[] = { 1.1, 2.2, 3.3, 4.4, 5.5 };
double target1[5] = {0 };
double target2[5] = { 0 };
int i;
for (i = 0; i<5; i++)
printf("%d ", target1[i]);
printf("\n");
for (i = 0; i<5; i++)
printf("%d ", target2[i]);
printf("\n");
copy_arr(source, target1, 5);
copy_ptr(source, target2, 5);
for (i = 0; i<5; i++)
printf("%d ", target1[i]);
printf("\n");
for (i = 0; i<5; i++)
printf("%d ", target2[i]);
printf("\n");
return 0;
}
void copy_arr(double a[], double b[], int n)
{
int k;
for (k = 0; k < n; k++)
b[k] = a[k];
}
void copy_ptr(double *d, double *c, int m)
{
int j;
for (j = 0; j < m; j++)
*(c+j) = *(d+j);
}
*******************************************************************
上面是我的程序,但输出这样,哪里出了问题呢? 展开
展开全部
你输出的时候格式有问题
把printf中的%d 改为%lf 结果就是对的了
把printf中的%d 改为%lf 结果就是对的了
更多追问追答
追问
那%g是啥意思?
追答
%d是整数的格式
%f是float的格式
%lf是double的格式
%g是实数的格式,同时会根据你的具体数字自动选择是按照小数输出,还是按照科学计数法输出
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
30分钟彻底学会C语言指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请使用 printf("%lf",target[i] )进行输出
追问
那%g是啥意思?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询