C语言谁能帮我写个for循环给二维数组赋值
3个回答
展开全部
如图
注释非常完整,代码请在网页端查看(哪有用手机看代码的,不好看)
#include<stdio.h>
#define N 25 //生成的矩阵的阶数(行、列数),注意!必须为奇数
void main()
{
int Scorecard[N][N];
if(N%2==1) //N必须为奇数
{
int num=8; //要赋值的数字 初始为矩阵正中心的数字(提问者设的是8)
int max=N/2,min=max; //大循环中 从中心向外一圈圈赋值的 最大(max)、最小(min)行数。
Scorecard[max][max]=num; //先赋值中心。提示:数组下标为(整形)25/2=12则为第13行(数组下标是从0开始数的)。
do{ //大循环:一圈圈赋值,扩大圈圈
int i; //用于小循环的临时变量
if(num>0)num--; //num逐圈减小,直到为0
max++; min--; //行列的最大最小值调整(扩大圈圈)
for(i=min ; i<=max ;i++) //小循环 两行、两列同时赋值
{
Scorecard[min][i]=num; //第 min行 赋值
Scorecard[max][i]=num; //第 max行 赋值
Scorecard[i][min]=num; //第 min列 赋值
Scorecard[i][max]=num; //第 max列 赋值
} //圈圈的四个角会重复赋值两次,方便理解,当然可以改进到无重复赋值。
}while(min>0); //当min减少到0时,说明第一行和最后一行都赋值完毕了
}
//打印验证结果
{int i,j; //用于打印遍历的行i列j
for(i=0; i<N ; i++)
{
for(j=0; j<N ; j++) printf("%d ",Scorecard[i][j]); //打印数字
printf("\n"); //打印完一行要换行
}
}
}
更多追问追答
追问
谢谢
追答
楼上代码看似很简短,其实是TA没有注释,而且代码都尽量缩在一起了。
我的代码更加简单易懂,如果有不明白的请追问,甚至可以问楼上的代码是怎么理解的。
TableDI
2024-07-18 广告
2024-07-18 广告
在Excel中,使用`VLOOKUP`函数进行单一条件查找非常常见,但`VLOOKUP`本身并不直接支持双重条件。然而,你可以通过一些间接方法实现。一种方法是将两个条件合并为一个标识符(例如,通过连接或串联),然后在另一个区域中查找此标识符...
点击进入详情页
本回答由TableDI提供
2018-02-20
展开全部
直接写不就好了,别用循环了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询