C语言功能模块连接题,出现了error C2601
#include<stdio.h>
#include<stdlib.h>
#define M 3
#define N 4
int n;
void transposition();
void range();
double average(double array[M][N]);
void multiply();
void menu(void);
void main()
{
short int flag=0;
system("color f0");
menu();
do
{ flag=1;
switch(getch())
{ case '1' : transposition();break; /*数组转置*/
case '2' : range ();break; /*数组排序 */
case '3' : double average ();break; /*数组平均*/
case '4' : multiply ();break; /*数组乘法 */
case '5' :exit(0); /*退出程序*/
default : printf("输入有误\n");
}
printf("按任意键继续\n");
getch();
menu();
}while (flag==1);
}
void menu(void)
{
system("cls");
printf("\n");
printf("*********欢迎进入数组运算系统**************\n");
printf(" 菜单 \n");
printf("数组转置------------------------------------1\n");
printf("数组排序------------------------------------2\n");
printf("数组平均-------------------------------------3\n");
printf("数组乘法-------------------------------------4\n");
printf("退出系统-------------------------------------5\n");
void transposition(void)
{
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},b[4][3];
int i,j;
printf("转置前矩阵:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
for(i=0;i<4;i++)
for(j=0;j<3;j++)
b[j][i]=a[i][j];
printf("转置后矩阵:\n");
{for(i=0;i<3;i++)
for(j=0;j<4;j++)
b[j][i]=a[i][j];
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
printf("%2d ",b[i][j]);
printf("\n");
}
}
printf("**********************************************\n");
printf("请输入您的选择\n");
}
void range(void)
{
int i;
float a[N],max,min;
printf("请输入%d个数:\n",N);
for(i=0;i<N;i++)
{
scanf("%f",&a[i]);
} //数据录入
max=min=a[0]; //假设第一个元素是最大值也是最小值
for(i=0;i<N;i++)
{
if(a[i]>max)
max=a[i];
else if(a[i]<min)
min=a[i];
}
printf("最大值为:%5.0f\n",max);
printf("最小值为:%5.0f\n",min);
}
double average(double array[M][N])
{
int i,j;
printf("请输入二维数组:\n");
for (i=0;i<3;i++)
{
for (j=0;j<4;j++)
{
scanf("%lf",&array[i][j]);
}
}
printf("二维数组平均值为:%lf\n",average(array));
double sum=0;
for (i=0;i<3;i++)
{
for (j=0;j<4;j++)
{
sum+=array[i][j];
}
}
return sum/(M*N);
}
void multiply(void)
{
int i,j,k,a[M][M],b[M][M],c[M][M];
/*为需要相乘的两个矩阵赋值:*/
printf("输入第一个矩阵:\n");
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("输入第二个矩阵:\n");
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
{
scanf("%d",&b[i][j]);
}
}
/*初始化c:*/
for (i = 0; i < M; i++)
for (j = 0; j < M; j++)
c[i][j] = 0;
for (i = 0; i<M; i++)
for (j = 0; j < M; j++)
{
c[i][j] = 0;
for (k = 0; k < M; k++)
c[i][j] += a[i][k] * b[k][j];
}
for (i = 0; i < M; i++)
for (j = 0; j < M; j++)
printf("%5d", c[i][j]);
printf("\n");
}
}
[/code]
C:\Program Files\Microsoft Visual Studio\MyProjects\355\355.cpp(20) : error C2065: 'getch' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\355\355.cpp(46) : error C2601: 'transposition' : local function definitions are illegal
C:\Program Files\Microsoft Visual Studio\MyProjects\355\355.cpp(80) : error C2601: 'range' : local function definitions are illegal
C:\Program Files\Microsoft Visual Studio\MyProjects\355\355.cpp(101) : error C2601: 'average' : local function definitions are illegal
C:\Program Files\Microsoft Visual Studio\MyProjects\355\355.cpp(125) : error C2601: 'multiply' : local function definitions are illegal
这是错误
[此贴子已经被作者于2018-5-31 17:43编辑过]