用c语言编写一个主程序,生成一个菜单界面,当输入1时,调用矩阵赋值函数,为5*5的矩阵赋初值;当输入2时,调用矩阵转置函数,对该矩阵进行转置操作;当输入3时,将该矩阵上三角所有元素值变成0;当输入4时,求该矩阵对角线所有元素的平均值;当输入4时,将该矩阵下对角线元素变成1,当输入0时,退出程序。
时间: 2023-06-09 13:03:36 浏览: 86
ChitGPT: 好的,您想要编写一个主程序生成一个菜单界面,根据输入调用不同函数进行矩阵操作,对吧?
以下是一个示例代码,您可以参考一下:
```c
#include <stdio.h>
void init_matrix(int matrix[5][5]);
void transpose_matrix(int matrix[5][5]);
void set_upper_tri_zero(int matrix[5][5]);
float get_average_diagonal(int matrix[5][5]);
void set_lower_diagonal(int matrix[5][5]);
int main()
{
int matrix[5][5];
int choice = -1;
while (choice != 0)
{
printf("===== 矩阵操作菜单 =====\n");
printf("1. 矩阵赋值\n");
printf("2. 矩阵转置\n");
printf("3. 上三角清零\n");
printf("4. 计算对角线平均值\n");
printf("5. 下对角线赋值\n");
printf("0. 退出程序\n");
printf("请输入数字选择操作:");
scanf("%d", &choice);
switch (choice)
{
case 1:
init_matrix(matrix);
break;
case 2:
transpose_matrix(matrix);
break;
case 3:
set_upper_tri_zero(matrix);
break;
case 4:
printf("对角线平均值为:%f\n", get_average_diagonal(matrix));
break;
case 5:
set_lower_diagonal(matrix);
break;
case 0:
printf("程序已退出。\n");
break;
default:
printf("输入不合法,请重新输入。\n");
break;
}
}
return 0;
}
void init_matrix(int matrix[5][5])
{
printf("请输入一个5x5的矩阵:\n");
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
scanf("%d", &matrix[i][j]);
}
}
printf("矩阵已赋值:\n");
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
void transpose_matrix(int matrix[5][5])
{
int temp;
for (int i = 0; i < 5; i++)
{
for (int j = i + 1; j < 5; j++)
{
temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
printf("矩阵已转置:\n");
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
void set_upper_tri_zero(int matrix[5][5])
{
for (int i = 0; i < 5; i++)
{
for (int j = i + 1; j < 5; j++)
{
matrix[i][j] = 0;
}
}
printf("上三角已清零:\n");
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
float get_average_diagonal(int matrix[5][5])
{
float sum = 0;
int count = 0;
for (int i = 0; i < 5; i++)
{
sum += matrix[i][i];
count++;
}
return sum / count;
}
void set_lower_diagonal(int matrix[5][5])
{
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < i; j++)
{
matrix[i][j] = 1;
}
}
printf("下对角线已赋值为1:\n");
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
```
请问对您有帮助吗?
阅读全文