求解C语言编程题!!!!急,明天考试了= =
利用“素材”中的函数构建一个完整的系统,系统主题自拟,系统至少包含3个功能。
素材:
void welcome()
{ printf("\n\t\t\t*****************************\n");
printf("\t\t\t* *\n");
printf("\t\t\t* 欢迎使用矩阵计算系统 *\n");
printf("\t\t\t* *\n");
printf("\t\t\t*****************************\n");
}
void mainmenu()
{
printf("\n\n\n");
printf("\t\t\t*******************************\n");
printf("\t\t\t* 1.----输入 *\n");
printf("\t\t\t* 2.----转置 *\n");
printf("\t\t\t* 3.----求外围元素和 *\n");
printf("\t\t\t* 4.----退出系统 *\n");
printf("\t\t\t*******************************\n");
}
void f1()
{
printf("功能1\n");
}
void f2()
{
printf("功能2\n");
}
void f3()
{
printf("功能3\n");
}
void sele()
{
int k;
while(1)
{system("cls");welcome();getch();system("cls");
mainmenu();
scanf("%d",&k);
while((k>4||k<1))
{system("cls");mainmenu();scanf("%d",&k);}
switch(k)
{case 1:
f1();
break;
case 2:
f2();
break;
case 3:
f3();break;
case 4:printf("谢谢使用,再见\n");exit(0);
}}
}
void input(int a[][10],int n,int m)/*矩阵输入*/
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
}
void output(int a[][10],int n,int m)/*矩阵输出*/
{
int i,j;
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
void transpose(int a[][10],int n)/*矩阵转置*/
{
int i,j,temp;
for(i=0;i<n;i++)
for(j=0;j<i;j++)
{temp=a[i][j];a[i][j]=a[j][i];a[j][i]=temp;}
}
sum(int a[][10],int n,int m)/*求外围元素之和*/
{int i,j,sum=0;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(i==0 || i==n-1 || j==0 || j==m-1)
sum=sum+a[i][j];
return sum;
}
void jzc(int a[][3],int b[][2],int c[][2])/*两矩阵相乘*/
{int i,j,k;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
{ c[i][j]=0;
for(k=0;k<3;k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
} 展开
#include <stdio.h>
#include <conio.h>
#include <mem.h>
//方便输入,行N定为3,列M也定为三
#define N 3
#define M 3
//申明二维数组
static int a[10][10];
//申明函数
void sele();
void input(int a[][10],int n,int m);
void output(int a[][10],int n,int m);
void transpose(int a[][10],int n);
//主函数
int main()
{
//把数组初始化一下
memset(a,0,sizeof(a));
//进入选择菜单
sele();
return 0;
}
void welcome()
{ printf("\n\t\t\t*****************************\n");
printf("\t\t\t* *\n");
printf("\t\t\t* 欢迎使用矩阵计算系统 *\n");
printf("\t\t\t* *\n");
printf("\t\t\t*****************************\n");
}
void mainmenu()
{
printf("\n\n\n");
printf("\t\t\t*******************************\n");
printf("\t\t\t* 1.----输入 *\n");
printf("\t\t\t* 2.----转置 *\n");
printf("\t\t\t* 3.----求外围元素和 *\n");
printf("\t\t\t* 4.----退出系统 *\n");
printf("\t\t\t*******************************\n");
}
void f1()
{
printf("功能1\n");
printf("输入矩阵\n");
input(a,N,M);
printf("您输入的矩阵:\n");
output(a,N,M);
getch();
}
void f2()
{
printf("功能2\n");
printf("转置\n");
transpose(a,N);
printf("转置后的矩阵:\n");
output(a,N,M);
getch();
}
void f3()
{
printf("功能3\n");
printf("求外围元素和\n");
printf("外围元素和=%d\n",sum(a,N,M));
getch();
}
void sele()
{
int k=0;
while(1)
{
system("cls");
welcome();
//getch();
//system("cls");
mainmenu();
scanf("%d",&k);
while((k>4||k<1))
{system("cls");mainmenu();scanf("%d",&k);}
switch(k)
{case 1:
f1();
break;
case 2:
f2();
break;
case 3:
f3();break;
case 4:printf("谢谢使用,再见\n");exit(0);
}}
}
void input(int a[][10],int n,int m)/*矩阵输入*/
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
}
void output(int a[][10],int n,int m)/*矩阵输出*/
{
int i,j;
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
void transpose(int a[][10],int n)/*矩阵转置*/
{
int i,j,temp;
for(i=0;i<n;i++)
for(j=0;j<i;j++)
{temp=a[i][j];a[i][j]=a[j][i];a[j][i]=temp;}
}
sum(int a[][10],int n,int m)/*求外围元素之和*/
{int i,j,sum=0;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(i==0 || i==n-1 || j==0 || j==m-1)
sum=sum+a[i][j];
return sum;
}