C primer plus 第十章 练习12:
来源:互联网 发布:阿里云大厦是做什么的 编辑:程序博客网 时间:2024/06/07 03:54
/*======================================================================================= 编写一个程序,提示用户输入3个数集,每个数集包括5个double值。程序应当实现以下功能: a. 把输入信息存储到一个3*5的数组中 b. 计算出每个数集(包含5个数值)的平均值 c. 计算所有数值的平均数 d. 找出这15个数中的最大值 e. 打印出结果========================================================================================*/#include <stdio.h>void arr_3m5(double ar1[], double ar2[], double ar3[], double arr[][5], int x);void ar_p(double ar1[], int x);void all_p(double arr[][5], int x);void max_arr(double arr[][5], int x);void show_arr(double ar1[],double ar2[],double ar3[],double arr[][5],int x);int main(void){ double ar1[5]; double ar2[5]; double ar3[5]; double arr[3][5]; int i=0; printf("请输入ar1数集中的5个double值: \n"); fflush(stdout); for(i=0;i<5;i++) scanf_s("%lf", &ar1[i]); printf("请输入ar2数集中的5个double值: \n"); fflush(stdout); for(i=0;i<5;i++) scanf_s("%lf", &ar2[i]); printf("请输入ar3数集中的5个double值: \n"); fflush(stdout); for(i=0;i<5;i++) scanf_s("%lf", &ar3[i]); show_arr(ar1,ar2,ar3,arr,5); return 0;}void arr_3m5(double ar1[], double ar2[], double ar3[], double arr[][5], int x){ int i=0; int j=0; for(i=0;i<x;i++) arr[0][i] = ar1[i]; for(i=0;i<x;i++) arr[1][i] = ar2[i]; for(i=0;i<x;i++) arr[2][i] = ar3[i]; printf("数组arr3*5的数据为: \n"); for(i=0;i<3;i++){ for(j=0;j<x;j++){ printf("%g\t",arr[i][j]); } printf("\n"); }}void ar_p(double ar1[], int x){ double total=0; int i=0; for(i=0;i<x;i++) total += ar1[i]; printf("数集arr的平均值为%g.\n", total / x);}void all_p(double arr[][5], int x){ double total = 0; int i=0; int j=0; for(i=0;i<3;i++) for(j=0;j<x;j++) total += arr[i][j]; printf("数组arr_3m5的平均值为: %g.\n", total / 15);}void max_arr(double arr[][5], int x){ double max = 0; int i=0; int j=0; for(i=0;i<3;i++){ for(j=0;j<x;j++){ if(max<arr[i][j]) max = arr[i][j]; } } printf("数组arr_3m5的最大值为: %g.\n", max);}void show_arr(double ar1[],double ar2[],double ar3[],double arr[][5],int x){ arr_3m5(ar1,ar2,ar3,arr,5); ar_p(ar1,5); ar_p(ar2,5); ar_p(ar3,5); all_p(arr,5); max_arr(arr,5); return;}
以下为别人写的,可以借鉴!结构以及逻辑!
/* ============================================================================ 12.编写一个程序,提示用户输入3个数集,每个数集包括5个double值,程序应当实现下列所有功能 a.把输入的信息存储到一个3x5的数组中 b.计算出每个数集(包含5个数值)平均值 c.计算所有数值的平均值 d.找出这15个数中最大值 e.打印出结果 每个任务需要一个单独函数来实现(使用传统C处理数组的方法),对于任务b,需要编写计算并返回 一维数组的平均值函数,循环3次调用该函数来实现任务b,对于其他任务,函数应当把整个数组做为参 数,并且完成任务c和d的函数应当向它的调用函数返回答守案。 ============================================================================ */ #include <stdio.h> double lines(int m,int n,int s,const double (* rain)[5]); //返回二维数组中第s行的数据平均值 void inputnum(int m,int n,double (* rain)[5]); //向rain[m][n]输入数值 double getnum(void); //从键盘获取一个double数 double allnum(int m,int n,const double (* rain)[5]); //计算二维数组中所有数据的平均值 double allmax(int m,int n,const double (* rain)[5]); //返回二维数中最大的数值 int main(void) { double rain[3][5]; inputnum(3,5,rain); for(int i=0;i<3;i++){ printf("第%d个数集的平均值:%g\n",i+1,lines(3,5,i,rain)); } printf("数组的平均值为:%g \n",allnum(3,5,rain)); printf("数组中最大数值为:%g \n",allmax(3,5,rain)); return 0; } double lines(int m,int n,int s,const double (* rain)[5]){ double sums = 0; for(int i=0;i<n;i++){ sums += rain[s][i]; } return sums/n; } void inputnum(int m,int n,double (* rain)[5]){ printf("输入%dx%d二维数组的数据:\n",m,n); for(int i=0;i<m;i++){ printf("开始输入第%d数集:\n",i+1); for(int j=0;j<n;j++){ printf("第%d个数:",j+1); rain[i][j] = getnum(); } } printf("数据输入完成,如下所示:\n"); for(int i=0;i<m;i++){ printf("第%d数集: ",i+1); for(int j=0;j<n;j++){ printf("%g\t",rain[i][j]); } printf("\n"); } } double getnum(void){ double i; char ch; while(scanf("%lf",&i) != 1){ while((ch=getchar())!='\n'){ putchar(ch); } printf("输入错误,请重新输入\n"); } return i; } double allnum(int m,int n,const double (* rain)[5]){ double total = 0; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ total += rain[i][j]; } } return total / (double)(3*5); } double allmax(int m,int n,const double (* rain)[5]){ double tmax = rain[0][0]; for(int i=1;i<m;i++){ for(int j = 1;j<n;j++){ if(tmax < rain[i][j]){ tmax = rain[i][j]; } } } return tmax; }
0 0
- C primer plus 第十章 练习12:
- C primer plus 第十章 练习1:
- C primer plus 第十章 练习2:
- C primer plus 第十章 练习3:
- C primer plus 第十章 练习4:
- C primer plus 第十章 练习5:
- C primer plus 第十章 练习6:
- C primer plus 第十章 练习7:
- C primer plus 第十章 练习10:
- C primer plus 第十章 练习9:
- C primer plus 第十章 练习8:
- C primer plus 第十章 练习11:
- 《C Primer Plus 第五版》第十章编程练习
- 《c primer plus》编程练习回顾-第十章
- C primer plus(第五版)编程练习第十章
- c++.primer.plus第五版第十章编程练习答案
- C Primer Plus 第十章 编程练习 1-11题
- C ++ Primer Plus 第六版 第十章编程练习答案
- 上台阶-动态规划
- JDK和JRE概述
- enjoy java8 section2
- Structural Patterns Part 5/7: Facade Pattern
- poj 4980 拯救行动(变式bfs)
- C primer plus 第十章 练习12:
- MyBatis 使用经验总结
- 数据结构实验之链表三:链表的逆置
- 用户名不能为空的验证
- Oracle数据库安装完成后,点击sqlplus.exe或者客户端PLSQL Developer,总是显示无法登录解决方法
- Ext Combo 加载选项
- 正则表达式 找手机号
- 遍历某一指定目录下的文件和目录
- 【SPFA】遭遇战 VijosP1404