用指针作为函数参数,编写一个计算任意m行n列二维数组中各元素的平均值。利用这一函数,输入5个学生三门课的成绩,计算所有成绩的平均分。
(越简单越好!!我是初学者。)要C语言的!!!
我要整个题目的程序啊......
我用vc6.0的
Cpp1.cpp
D:\学习\vc++\cpp文件\Cpp1.cpp(18) : error C2664: 'average' : cannot convert parameter 1 from 'int [2][3]' to 'int ** '
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
执行 cl.exe 时出错.
我蒙了.....望求整个程序!!
楼下harkyu189高手,是真正写过代码的人!
也是我在百度知道碰到的第一位可以说是(在下不是!)理解了数组和指针的人!
》代码作如下修改,VS2010编译通过!
》奉劝楼主,不要认为编译通过就一切OK,你得真正明白
》第一楼 烧掉回忆2011 的代码为什么错误
》要想理解C,得从错误,从调试中学习!
#include
float average(int a[], int rows, int cols) //使用a[],*a也可,目的:把二维数组当一维数组使用
{
float sum = 0;
int i, j;
for(i = 0; i < rows; i++)
for(j = 0; j < cols; j++)
sum += a[i * cols + j]; //去掉了强制转换
return sum / (rows * cols);
}
int main(void)
{
int a[2][3] = {5, 7, 5, 6, 7, 3};
printf("avg = %f\n", average(a[0], 2, 3)); //记住:使用a[0]传递首地址!
return 0;
}
题外话:楼主这一贴极具价值!希望C初学者都能看到...本人也是C初学者
还是那句话,帮助别人就是帮助自己!
用C++编写一个程序,计算一个二维数组中所有元素的平均值(用指针...
float a[M][N]={{1,2,3},{4,5,6},{7,8,9}}; \/\/定义一个M行N列的二维数组.float ave=0; \/\/累加总成绩,计算平均值.\/*方法1: 转化成一维指针*\/ float *p=(float *)a;for(int i = 0; i < M * N; ++i){ cout << *( p + i ) << " "; \/\/输出二维数...
...求二维数组每行元素的平均值。要求用函数和指针实现)
\/*求二维数组每行元素的平均值。(要求用函数和指针实现)*\/#include<stdio.h>void fun(int a[3][4]){int (*p)[4],i,j;float ave,s;for(i=0;i<3;i++){p=&a[i];s=0;for(j=0;j<4;j++)s+=(*p)[j];ave=s\/4;printf("第%d行元素的平均值为%f\\n",i,ave);}}int ma...
2011年全国计算机等级考试2级C语言机试题库
给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。如输入一个数:27638496,新的数为729第一空:{ t=*n%10; 第二空:if(t%2!=0)第三空:*n=x;2.程序修改 给定程序modi1.c中函数fun的功能是:计算n!
1 用指针数组和指针移动的方法求二维数组a[M][N]各行的最大值,并将各...
1. 开辟一个指针数组(其实就是数组,数组存的是指针)比如 int * p_a[M],然后将这个数组里面的 每一个元素都指向该行最大的元素,最后逆指针操作取出对应的值,存放在b[M]中。2. 可以看看书上面的strcat和strcpy函数。多写代码,不要太轻易求人,这样才会有很大的进步。
输入一个二维数组,求每行的平均值。。。C语言要怎么写?
如果用指针还可以做成动态数组,不用的话只能固定开辟。另外程序没判断数组越界,不要输入超过MAXCOL和MAXROW的列和行数。include<stdio.h> define MAXROW 200 define MAXCOL 200 int main(void){ printf("type row and col,split with\\" \\":");int row,col;scanf("%d%d",&row,&col);int ...
编写一个函数,将二维数组(n*m)转置.在main函数中调用该函数并输出结果...
方法很多。看前面都有答了。就写个指针的方法:用指向指针的指针来实现倒置后的二维数组。倒置后原数组不变。include <stdio.h>#include <malloc.h>#define ROW 2#define CLO 3int **fzz(int a[][CLO]);void printfARR(int **arr);int main(){ int i,j,arr[ROW][CLO]={{1,2,3}...
C语言求一个二维组每行每列的最大值 并放在一个新数组中 ,用指针做?
行列最大值,方法很多,一般循环遍历属于就可以了。既然你要用指针来做,我就用指针来写。利用数组元素地址连贯性来做。include <stdio.h> define MXR 4\/\/最大行数 define MXC 3\/\/最大列数 int main(){ int i=0,mr,mc,*p=NULL,*ps=NULL;int nums[MXR][MXC]={{8,6,7},{2,6,3},...
...函数的功能是: 将M行N列的二维数组中的数据, 按列的顺序依次放到一维...
函数使用两个嵌套的for循环以列为顺序遍历二位数组,将其中每一个数据元素都存储进准备好的一维数组中。因为c语言函数无法将整个数组作为返回值,故函数会返回一个指向一维数组的指针。具体代码如图:
指向二维数组的指针做函数参数
p可以这样定义:int (*p[2])[3][3]; \/\/ 表明p是一个长度为2的数组,数组里面每个成员是指针,指针指向的成员是3*3二维数组。fun可以这样定义:void fun (int (*p[])[3][3] ){ } 但这种定义不容易看懂,一般是先定义成员,再定义数组:typedef int Element[3][3];typedef Element* P...
c语言用指针找二维数组中的最大值和下标
void InputArray(int *p,int m,int n);int FindMax(int *p,int m,int n,int *pRow,int *pCol);int main(){ int a[10][10];int m,n;int max,r,c;printf("Input m,n:\\n");scanf("%d,%d",&m,&n);InputArray(a[0],m,n);max=FindMax(a[0],m,n,&r,&c);printf("max...