C语言谁能帮我写个for循环给二维数组赋值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言谁能帮我写个for循环给二维数组赋值相关的知识,希望对你有一定的参考价值。
用for循环把Scorecard[25][25]数组赋成图片中注释的样子,谢谢
如图
注释非常完整,代码请在网页端查看(哪有用手机看代码的,不好看)
#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没有注释,而且代码都尽量缩在一起了。
我的代码更加简单易懂,如果有不明白的请追问,甚至可以问楼上的代码是怎么理解的。
无重复赋值的改进版如下图,只要改小循环即可,效率更高。
![](https://image.cha138.com/20230501/379f6ccb18e148e4b3ac9637d0b6373e.jpg)
for(i=min ; i<max ;) //小循环 两行、两列同时赋值
//圈圈的四个角无重复赋值!前面是从 min赋值到max-1
Scorecard[min][i]=num; //第 min行 向右 赋值
Scorecard[i][max]=num; //第 max列 向下 赋值
i++; //中间插入i++后 就变成了 min+1赋值到max了
Scorecard[i][min]=num; //第 min列 向下 赋值
Scorecard[max][i]=num; //第 max行 向右 赋值
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;
java中何用for循环将一个二维数组的值付给另外一个二维数组
定义一个二维数组array1,数组元素为5,15,25,35,45,55,65,再定义一个同样大小的二维数组array2,利用循环将array1中的元素一一赋值给array2。
参考技术A import java.util.Arrays;public class CopyTest
public static void main(String[] args)
int [][]values=5,15,25,35,45,55,65;
int [][]cloned=new int [values.length][];
for(int i=values.length;--i>=0;)
cloned[i]=new int[values[i].length];
System.arraycopy(values, 0, cloned, 0, values[i].length);
for(int i=cloned.length;--i>=0;)
System.out.println(Arrays.toString(cloned[i]));
本回答被提问者采纳 参考技术B 别没事找事做了,用list或者map
以上是关于C语言谁能帮我写个for循环给二维数组赋值的主要内容,如果未能解决你的问题,请参考以下文章