一道C语言功能模块连接题,在线等,挺急的!
程序代码:
#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"); } }
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:12编辑过]