第十一话.写程序时身边坐了一只胖太,分分钟想一巴掌呼死她!

【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);}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值