问题:生成如下的循环方阵,每行向左循环移动1位;
0 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0 1
3 4 5 6 7 8 9 0 1 2
4 5 6 7 8 9 0 1 2 3
5 6 7 8 9 0 1 2 3 4
6 7 8 9 0 1 2 3 4 5
7 8 9 0 1 2 3 4 5 6
8 9 0 1 2 3 4 5 6 7
9 0 1 2 3 4 5 6 7 8
#include <stdio.h>
int main() {
int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
printf("%d ", arr[j]);
}
printf("\n");
for (int j = 0; j < 9; j++) {
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
return 0;
}
#include <stdio.h>
int main() {
int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
for (int i = 0; i < 10; i++) {
for (int j = i; j < 10 + i; j++) {
printf("%d ", arr[j % 10]);
}
printf("\n");
}
return 0;
}
#include <stdio.h>
int main() {
int a[]={0,1,2,3,4,5,6,7,8,9};
int len=10,i,j,k,t;
for(i=0;i<len;i++)
{
for(k=0;k<len;k++)
{
printf("%d ",a[k]);
}
printf("\n");
t=a[0];
for(j=0;j<len-1;j++)
{
a[j]=a[j+1];
}
a[j]=t;
}
return 0;
}
供参考:
#include <stdio.h>
#include <string.h>
int main()
{
char s[] = "0123456789";
int i, j, len = strlen(s);
for (i = 0; i < len; i++) // 行
{
for (j = 0; j < len; j++) // 列
{
printf("%2c", s[(i + j) % len]);
}
printf("\n");
}
return 0;
}