C++/C语言,下列二维数组怎么赋值,难道一个一个赋值吗?求大神指教。
6个回答
展开全部
#include<stdio.h>
#define N 10
void main (void)
{
int a[N][N];
int i,j,n,k,s,c=1;
i=5,j=4;
a[i][j]=c++;
n=1;
while(1)
{
if(n%2==0)
s=-1;
else
s=1;
for(k=0;k<n;k++)
{
j+=s;
if(j>=N || j<0)
goto __end;
a[i][j]=c++;
}
for(k=0;k<n;k++)
{
i+=-s;
if(i>=N || i<0)
goto __end;
a[i][j]=c++;
}
n++;
}
__end:
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%-4d", a[i][j]);
printf("\n");
}
return 0;
}
展开全部
看了下答案,虽然有人回答了,但是还是贴一下我的,感觉c++少用goto的好,我的逻辑有点像贪吃蛇,控制开头转向一直绕进去
#include <iostream>
#include <iomanip>
using namespace std;
enum Direcation {
right = 0,
down,
left,
up
};
//这里可以随意改表格宽度,多少都行,只是大于18就不好显示了
#define LENGTH 10
void main()
{
int start =LENGTH * LENGTH;
int array[LENGTH][LENGTH]={0};
Direcation direcation = Direcation::right;
for (int i = 0;start>0 ; ) {
for (int j = 0;start>0 ; ) {
array[i][j] = start--;
switch (direcation) {
case Direcation::right:
//j==9是最后一列,在前判断保证不溢出,或者array[i][j+1] !=0就是后面的列已经使用过,转向下
if(j==LENGTH-1 || array[i][j+1] !=0)
{
direcation = Direcation::down;
i++;
}else{
j++;
}
break;
case Direcation::down:
if(i==LENGTH-1 || array[i+1][j] !=0)
{
direcation = Direcation::left;
j--;
}else{
i++;
}
break;
case Direcation::left:
if(j==0 || array[i][j-1] !=0)
{
direcation = Direcation::up;
i--;
}else{
j--;
}
break;
case Direcation::up:
if(i==0 || array[i-1][j] !=0)
{
direcation = Direcation::right;
j++;
}else{
i--;
}
break;
default:
break;
}
}
}
for (int i = 0; i < LENGTH; ++i) {
for (int j = 0; j < LENGTH; ++j) {
cout<<setw(4)<<array[i][j];
}
cout<<endl;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这100个数字间是有逻辑关系的,从1-100是逆时针+1的,可以用条件语句+循环赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个二维数组 其实是另外一种问题,其实在意义在于如何使用下标,最二维数组进行顺时针的遍历。 遍历完成后只需从100开始递减赋值就行了。
你学C多久了,谁给你出的题目?
email:905049286@qq.com
你学C多久了,谁给你出的题目?
email:905049286@qq.com
追问
没学多久,做了半年j2ee开发,今年考的复旦大学计算机研究生,准备复试呢,这是去年复旦研究生复试机试题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
找各行数字的规律能少写几行 但有找的功夫或许都生敲完了 很纠结
比如第一行
int A[10][10];
for(int i=0;i<10;i++)
{
A[0][i]=100-i;
}
第一行完了 这样子
比如第一行
int A[10][10];
for(int i=0;i<10;i++)
{
A[0][i]=100-i;
}
第一行完了 这样子
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询