10.13 编程练习

阅读: 评论:0

10.13 编程练习

10.13 编程练习

1.修改程序清单10.07中的程序rain,使它不适用数组下标,而是使用指针进行计算(程序中仍然需要声明并初始化数组)
#include <stdio.h>
#define MONTHS 12
#define YEARS 5
int main(void)
{const float rain[YEARS][MONTHS]={{4.3, 4.3, 4.3, 3.0, 2.0, 1.2, 0.2, 0.2, 0.4, 2.4, 3.5, 6.6,},{8.5, 8.2, 1.2, 1.6, 2.4, 0.0, 5.2, 0.9, 0.3, 0.9, 1.4, 7.3,},{9.1, 8.5, 6.7, 4.3, 2.1, 0.8, 0.2, 0.2, 1.1, 2.3, 6.1, 8.4,},{7.2, 9.9, 8.4, 3.3, 1.2, 0.8, 0.4, 0.0, 0.6, 1.7, 4.3, 6.2,},{7.6, 5.6, 3.8, 2.8, 3.8, 0.2, 0.0, 0.0, 0.0, 1.3, 2.6, 5.2,},};int year, month;float subtot,total,sum;for(year=0,total=0.0;year<YEARS;year++){for(month=0,subtot=0.0;month<MONTHS;month++){subtot+=*(*(rain+year)+month);}printf("%d年降水总量为%0.2f,本年月平均降水量为%0.2fn",year+1,subtot,subtot/MONTHS);total+=subtot;}printf("%d年的降水总量是%0.2f,五年年降水平均值为%.2fn",YEARS,total,total/YEARS);for(month=0;month<MONTHS;month++){for(year=0,sum=0.0;year<YEARS;year++){sum+=*(*(rain+year)+month);}printf("每年%d月份的降水平均值为%0.1fn",month+1,sum/YEARS);	} return 0;
}


2.编写一个程序,初始化第一个double数组,然后把数组内容复制到另外两个数组(3个数组都需要在主程序中声明)。制作第一份拷贝的函数使用数组符号。制作第二份拷贝的函数使用指针符号,并使用指针的增量操作。把目标数组名和要复制的元素数目作为参数传递给函数。也就是说,如果给定下列声明,函数调用应该如下面所示。
#include <stdio.h>  
void copy_arr(const double source[],double target1[],int size);  
void copy_ptr(const double *source,double *target2,double *end);  
void print(const double ar[],int size); 
int main(void)  
{  double source[5]={1.1,2.2,3.3,4.4,5.5};  double target1[5];  double target2[5];  int size=5;  printf("source array:n");  print(source,size);  copy_arr(source,target1,size);  printf("target1 array:n");  print(target1,size);      copy_ptr(source,target2,source+size);  printf("target2 array:n");  print(target2,size);  return 0;  
}  
void copy_arr(const double source[],double target1[],int size)  
{  int i;  for(i=0;i<size;i++)  target1[i]=source[i];  
}  
void copy_ptr(const double *source,double *target2,double *end)  
{  while(source<end){*target2=*source;source++;target2++;} 
}  
void print(const double ar[],int size)  
{  int i;  for(i=0;i<size;i++)  printf("%.1f  ",ar[i]);  printf("n");  
}  


3.编写一个函数,返回int数组中存储的最大值,并在一个简单的程序中测试这个函数
#include <stdio.h>
void print(int ar[],int *end);  
int max(int ar[],int *end);
int main(void)
{const int SIZE=5;int array[SIZE]={3, 6, 9, 2, 5, };print(array,array+SIZE);printf("数组中最大的数是%dn",max(array,array+SIZE));return 0;}
void print(int ar[],int *end) 
{  for(;ar<end;ar++){printf("%d  ",*ar);}printf("n");  
}  int max(int ar[],int *end)
{int max=*ar;for(ar+=1;ar<end;ar++){if(*ar>max)max=*ar;	}return max;
}


4.编写一个函数,返回一个double数组中存储的最大值的索引,并在一个简单程序中测试这个函数
#include <stdio.h>  
void print(double ar[],double *end);  
int max_index(double ar[],int size);
int main(void)
{const int SIZE=5;double array[SIZE]={3.0, 6.1, 9.3, 2.7, 5.5, };print(array,array+SIZE);printf("数组中最大数的下标是%d.n",max_index(array,SIZE));return 0;}
void print(double ar[],double *end) 
{  for(;ar<end;ar++){printf("%.2f  ",*ar);}printf("n

本文发布于:2024-01-28 15:13:29,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064260158313.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23