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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言谁能帮我写个for循环给二维数组赋值相关的知识,希望对你有一定的参考价值。

用for循环把Scorecard[25][25]数组赋成图片中注释的样子,谢谢

如图


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

#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没有注释,而且代码都尽量缩在一起了。
我的代码更加简单易懂,如果有不明白的请追问,甚至可以问楼上的代码是怎么理解的。

无重复赋值的改进版如下图,只要改小循环即可,效率更高。

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行 向右 赋值

参考技术A 直接写不就好了,别用循环了。 参考技术B

#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;

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循环给二维数组赋值的主要内容,如果未能解决你的问题,请参考以下文章

c语言循环赋值

C语言如何给用函数二维数组动态赋值

在matlAB中,用for循环赋值的问题

二维数组怎么赋值

C语言,怎么用for 循环给数组赋值 ? 说的简单详细点, 谢谢了

c++中用for循环对二维数组赋值可以吗,就是自己手动输入数据