给定程序中,函数FUN的功能是建立一个N*M的矩阵,矩阵元素的规律是:最外层元素的值全部为1,从外向内第二元素的值全部为2,第三层全部为3,一次类推,例如,若N=5,生成矩阵为:1 1 1 1 1 1 2 2 2 11 2
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/05 20:34:55
![给定程序中,函数FUN的功能是建立一个N*M的矩阵,矩阵元素的规律是:最外层元素的值全部为1,从外向内第二元素的值全部为2,第三层全部为3,一次类推,例如,若N=5,生成矩阵为:1 1 1 1 1 1 2 2 2 11 2](/uploads/image/z/5171055-15-5.jpg?t=%E7%BB%99%E5%AE%9A%E7%A8%8B%E5%BA%8F%E4%B8%AD%2C%E5%87%BD%E6%95%B0FUN%E7%9A%84%E5%8A%9F%E8%83%BD%E6%98%AF%E5%BB%BA%E7%AB%8B%E4%B8%80%E4%B8%AAN%2AM%E7%9A%84%E7%9F%A9%E9%98%B5%2C%E7%9F%A9%E9%98%B5%E5%85%83%E7%B4%A0%E7%9A%84%E8%A7%84%E5%BE%8B%E6%98%AF%EF%BC%9A%E6%9C%80%E5%A4%96%E5%B1%82%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC%E5%85%A8%E9%83%A8%E4%B8%BA1%2C%E4%BB%8E%E5%A4%96%E5%90%91%E5%86%85%E7%AC%AC%E4%BA%8C%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC%E5%85%A8%E9%83%A8%E4%B8%BA2%2C%E7%AC%AC%E4%B8%89%E5%B1%82%E5%85%A8%E9%83%A8%E4%B8%BA3%2C%E4%B8%80%E6%AC%A1%E7%B1%BB%E6%8E%A8%2C%E4%BE%8B%E5%A6%82%2C%E8%8B%A5N%3D5%2C%E7%94%9F%E6%88%90%E7%9F%A9%E9%98%B5%E4%B8%BA%EF%BC%9A1+1+1+1+1+1+2+2+2+11+2)
给定程序中,函数FUN的功能是建立一个N*M的矩阵,矩阵元素的规律是:最外层元素的值全部为1,从外向内第二元素的值全部为2,第三层全部为3,一次类推,例如,若N=5,生成矩阵为:1 1 1 1 1 1 2 2 2 11 2
给定程序中,函数FUN的功能是建立一个N*M的矩阵,矩阵元素的规律是:最外层元素的值全部为1,从外向内第二
元素的值全部为2,第三层全部为3,一次类推,例如,若N=5,生成矩阵为:
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
C语言程序
给定程序中,函数FUN的功能是建立一个N*M的矩阵,矩阵元素的规律是:最外层元素的值全部为1,从外向内第二元素的值全部为2,第三层全部为3,一次类推,例如,若N=5,生成矩阵为:1 1 1 1 1 1 2 2 2 11 2
#include
const int m=10,n=10;
void main()
{
int i,j,x,y,p;
int a[n][m];
if(m
#include
#define N 5 //数组的行数
#define M 6 //数组的列数
main()
{
int i,j,a[N][M]={0};//先将数组值均赋值为0
for(j=0;j
for(i=0;i
全部展开
#include
#define N 5 //数组的行数
#define M 6 //数组的列数
main()
{
int i,j,a[N][M]={0};//先将数组值均赋值为0
for(j=0;j
for(i=0;i
a[j][i]=j+1;
if(a[N-1-j][i]==0)
a[N-1-j][i]=j+1;}
for(i=0;i
a[i][j]=j+1;
if(a[i][M-1-j]==0)
a[i][M-1-j]=j+1; }
}
for(i=0;i
printf("\n");}
}
我想的方法是先将数组所有元素赋值为0;在将第一圈赋值为1;第二圈赋值为2 ............。
通过值不为0就不改变其值,等于0的就把其值赋值为其圈数!
不知道有什么简单的方法没?可以讨论讨论!
谢谢下面的朋友给我的修改,那样效率能更高!但我运行了一下,当N>2M时就不能正确输出了!可能还有你没有想到的地方。根据你的提示将程序修改如下,效率更高!
#include
#define N 15 //数组的行数
#define M 15 //数组的列数
main()
{
int i,j,a[N][M]={0};//先将数组值均赋值为0
for(j=0;j
for(i=j;i
a[j][i]=j+1;
if(a[N-1-j][i]==0)
a[N-1-j][i]=j+1;}
for(i=j;i
a[i][j]=j+1;
if(a[i][M-1-j]==0)
a[i][M-1-j]=j+1; }
}
for(i=0;i
printf("\n");}
}
收起
#include
const int m=10,n=10;
void main()
{
int i,j,x,y,p;
int a[n][m];
p=n
for(i=0;i
x=i f...
全部展开
#include
const int m=10,n=10;
void main()
{
int i,j,x,y,p;
int a[n][m];
p=n
for(i=0;i
x=i for(j=0;j
y=j a[i][j]=x
}
for(i=0;i
for(j=0;j
printf("\n");
}
}
__________________________________________
#include "stdafx.h"
#include
#define N 7
#define M 7
void main()
{
int i,j,a[N][M]={0};
for(j=0;j<(N+1)/2;j++)
{
for(i=j;i
a[j][i]=j+1;
a[N-1-j][i]=j+1;
}
for(i=j+1;i
a[i][j]=j+1;
a[i][M-1-j]=j+1;
}
}
for(i=0;i
for(j=0;j
printf("\n");
}
getchar();
}
______________________________________________
对前两位的程序修改了一下。
分数请给前两位,不解释。
收起