C语言谁能帮我写个for循环给二维数组赋值

用for循环把Scorecard[25][25]数组赋成图片中注释的样子,谢谢... 用for循环把Scorecard[25][25]数组赋成图片中注释的样子,谢谢 展开
 我来答
弈轩
2018-02-20 · 知道合伙人教育行家
弈轩
知道合伙人教育行家
采纳数:1029 获赞数:7542
电子设计大赛三等奖 优秀毕业生

向TA提问 私信TA
展开全部

如图


注释非常完整,代码请在网页端查看(哪有用手机看代码的,不好看)

#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 广告
在Excel中,使用`VLOOKUP`函数进行单一条件查找非常常见,但`VLOOKUP`本身并不直接支持双重条件。然而,你可以通过一些间接方法实现。一种方法是将两个条件合并为一个标识符(例如,通过连接或串联),然后在另一个区域中查找此标识符... 点击进入详情页
本回答由TableDI提供
匿名用户
2018-02-20
展开全部
直接写不就好了,别用循环了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

2018-02-20 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

#include<stdio.h>
int a[25][25];
int main()
{int i,j,k,k1;
 for(i=0;i<25;i++)
 {for(j=0;j<25;j++)
  {k=i<12?i:24-i;
   k1=j<12?j:24-j;
   if(k1<k)k=k1;
   k-=4;
   if(k<0)k=0;
   a[i][j]=k;
   printf("%-2d",a[i][j]);
  }
  printf("\n");
 }
 return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式