【2】
编写一个程序,初始化一个double数组,然后把数组内容复制到另外两个数组(3个数组都需要在主程序中声明)。制作第一份拷贝的函数使用数组符号。制作第二份拷贝的函数使用指针符号,并使用指针的增量操作。把目标数组名和要复制的元素数目作为参数传递给函数。也就是说,如果给定了下列声明,函数调用应该如下面所示:
double source[5]={1.1,2.2,3.3,4.4,5.5};
double target1[5];
double target2[5];
copy_arr(source,target1,5);
copy_ptr(source,target1,5);
运行不能.我尽力了!上交.
#include "stdio.h"
void copy_arr(double source[5],double target1[5],int n);
void copy_ptr(double source[5],double target2[5],int n);
main()
{
double source[5]={1.1,2.2,3.3,4.4,5.5};
double target1[5];
double target2[5];
copy_arr(source,target1,5);
copy_ptr(source,target2,5);
}
void copy_arr(double source[5],double target1[5],int n)
{ int i=o;
while(i<5)
{ target1[i]=source[i];
printf("target1[%d]=%d",i,target1[i]);
i++;} }
void copy_ptr(double source[5],double target2[5],int n)
{ int *ptr=&source,i=0;
while(i<5)
{ *(ptr+i)=souces+i;
printf("target2[%d]=%d",i,target2[i]);
i++;}}
【3】编写一个函数,返回一个int数组中存储的最大数值,并在一个简单的程序中测试这个函数.
#include <stdio.h>
int biggest(int a,int n);
main() { int max;
int a[7]={100,81,14,2,109,60,59};
max=biggest(a[0],7);
printf("the biggest number is %d",max);}
int biggest(int a,int n)
{ int i,max=0;
int * pa=&a;
for(i=0;i<n;i++)
if(*(pa+i)>max)
max=*(pa+i);
return max;}
【4】编写一个函数,返回一个double数组中存储的最大数值的索引,并在一个简单程序中测试这个函数。
#include <stdio.h>
int biggest(int a,int n);
main() { double max;
double a[7]={100.0,81.0,14.0,2.0,109.0,60.0,59.0};
max=biggest(a[0],7);
printf("the biggest number is %d",max);
}
int biggest(int a,int n)
{ int i,max=0,m;
int * pa=&a;
for(i=0;i<n;i++)
if(*(pa+i)>max)
{ max=*(pa+i);
m=i;}
return m;}
【5】编写一个函数,返回一个double数组中最大的和最小的数之间的差值,并在一个简单的程序中测试这个函数。
#include <stdio.h>
double biggest(double a,int n);
main() {double max;
double a[7]={100.0,81.0,14.0,2.0,109.0,60.0,59.0};
max=biggest(a[0],7);
printf("%f",max);
}
double biggest(double a,int n)
{ int i,max=0,m,min=a;
int * pa=&a;
for(i=0;i<n;i++)
if(*(pa+i)>max)
max=*(pa+i);
for(i=0;i<n;i++)
if(*(pa+i)<min)
min=*(pa+i);
return max-min;}
【6】编写一个程序,初始化一个二维double数组,并利用练习2中的任一函数来把这个数组复制到另一个二维数组(因为二维数组是数组的数组,所以可以使用处理一维数组的函数来复制数组的每个子数组)。
#include <stdio.h>
void copy(double shuzu[2][2],double target[2][2],int n);
void main(){
double shuzu[2][2]={100,90,80,70};
double target1[2][2];
copy(shuzu,target1,2);
}
void copy_arr(double shuzu[2][2],double target[2][2],int n)
{ int i,j;
for(j=0;j<n;j++)
for(i=0;i<n;i++)
{ target[j][i]=shuzu[j][i];
printf("target[%d][%d]=%d",j,i,target[j][i]);}}
【7】利用练习2中的复制函数,把—个包含7个元素的数组内第3到第5元素复制到一个包含3个元素的数组中。函数本身不需要修改,只需要选择合适的实际参数(实际参数不需要是数组名和数组大小,而只须是数组元素的地址和需要复制的元素数目)。
#include <stdio.h>
void copy(int fuzhi[3],int shuzu[7],int n)
{ int i;
int *ptr;
ptr=shuzu;
for(i=0;i<n;i++)
{fuzhi[i]=shuzu[i];
printf(" the fuzhi[%d] is %d\n",i,*(ptr+i));
} }
void main(){
int shuzu[7]={1,2,3,4,5,6,7};
int fuzhi[3];
copy(fuzhi,shuzu+2,3);}