枫林在线精华区>>程序设计>>C语言
[21347] 主题: 一个关于C语言的问题
作者: Numino (奥格)
标题: 一个关于C语言的问题
来自: 61.129.*.*
发贴时间: 2002年09月26日 17:24:09 (UTC +08:00)
长度: 755字
如何用C语言打印如下矩阵:(11*11)
 1 2 3 4 5 6 7 8 9 10 11
40 41………………………… 12
39 ……………………………… 13
38 ……………………………… 14
37 ……………………………… 15
36 ………………121…………… 16
35 ……………………………… 17
34 ……………………………… 18
33 ……………………………… 19
32 ……………………………… 20
31 30 29 28 27 26 25 24 23 22 21
 
~~~~~~~~~~~~~~~~~~~~
°∴・°∴°★.☆° .★・°∴°★.° .・。∴。∴°★.
     ° .★・・。∴°..・°∴・°∴°★.☆° .★・°∴°★.
       不是我想要做什么,而是病人需要我做什么
°..・°∴・°∴°★.☆° .★・°∴°★.° .・。∴°.
    .・°∴・°∴°★.☆° .★・°∴°★.°

~~~~~~~~~~~~~~~~~~~~

========== * * * * * ==========
作者: leaflet (Leaf)
标题: RE:一个关于C语言的问题
来自: 61.129.*.*
发贴时间: 2002年09月27日 10:37:41 (UTC +08:00)
长度: 961字
说一种比较复杂但更具通用性的解题思路:

1)设置一个13*13的数组,置0,最外圈置-1。
2)设置两个变量,分别表示当前位置的行和列;设置一个变量,表示当前所在位置元
素的值。
3)从数组的(1,1)位置开始,采用顺时针方向试探方法,对于相邻元素为0的赋比当
前元素增1的值,并以改元素作为进一步试探的出发点。该步骤可以采用递归或递代实
现(建议使用递代,效率高)。需要一个变量表示当前前进方向。
4)所有元素均为非0值时,自动回朔,赋值结束。
5)采用循环顺序输出最外圈除外的数组的值,就是所求结果。

=============================

奥格在其大作中写道:
如何用C语言打印如下矩阵:(11*11)
 1 2 3 4 5 6 7 8 9 10 11
40 41………………………… 12
39 ……………………………… 13
38 ……………………………… 14
37 ……………………………… 15
36 ………………121…………… 16
35 ……………………………… 17
34 ……………………………… 18
33 ……………………………… 19
32 ……………………………… 20
31 30 29 28 27 26 25 24 23 22 21



========== * * * * * ==========
作者: hello (随便说)
标题: foolish but simple solution
来自: 210.22.*.*
发贴时间: 2002年09月27日 21:26:05 (UTC +08:00)
长度: 679字
#include "stdio.h"
#define N 11
int main(int argc, char* argv)
{
    int i, j;
    for(i=0; i<N; i++){
        for(j=0; j<N; j++){
            if(i==0){
                printf("%3d", j+1);
            }else if(i==(N-1)){
                printf("%3d", N*3-2-j);
            }else{
                if(j==0){
                    printf("%3d", N*4-3-i);
                }else if(j==(N-1)){
                    printf("%3d", N+i);
                }else if(i==N/2 && j==N/2){
                    printf("%3d", N*N);
                }else{
                    printf(" .");
                }
            }
        }
        printf("\n");
    }
    return 0;
}
========== * * * * * ==========
作者: Numino (奥格)
标题: RE:
来自: 203.95.*.*
发贴时间: 2002年10月08日 14:11:14 (UTC +08:00)
长度: 806字
main()
{int a[11][11],i,j;
 for(i=0;i<11;i++){
  if(i>=0&&i<=5)
   a[i][i]=1+44*i-4*i*i;
  else
   a[i][i]=21+40*i-4*i*i;}
 for(i=0;i<11;i++)
  for(j=0;j<11;j++){
   if(i+j<=10&&i<=j)
    a[i][j]=a[i][i]+j-i;
   else if(i+j<=10&&i>j)
    a[i][j]=a[j+1][j+1]+j-i;
   else if(i+j>10&&i<=j)
    a[i][j]=a[j][j]+i-j;
   else
    a[i][j]=a[i][i]+i-j;}
 for(i=0;i<11;i++){
  for(j=0;j<11;j++){
   printf("%4d",a[i][j]);}
   printf("\n");}
 printf("\n");
}

~~~~~~~~~~~~~~~~~~~~
°∴・°∴°★.☆° .★・°∴°★.° .・。∴。∴°★.
     ° .★・・。∴°..・°∴・°∴°★.☆° .★・°∴°★.
       不是我想要做什么,而是病人需要我做什么
°..・°∴・°∴°★.☆° .★・°∴°★.° .・。∴°.
    .・°∴・°∴°★.☆° .★・°∴°★.°

~~~~~~~~~~~~~~~~~~~~

========== * * * * * ==========
作者: raccoon (益*--1eE...zzZ*潜航)
标题: RE:一个关于C语言的问题
来自: 61.152.*.*
发贴时间: 2003年07月22日 22:00:09 (UTC +08:00)
长度: 1633字
   晕,离楼上的那一贴也快半年了,不过还是发这贴,用的是VB

   原数组是在直角坐标系定义的
   就是以如图方式的数字排列,每一个整数点(x,y)都对应一个值,
先计算出这个值,存储在数组元素Num(x,y)中.






   最后只要按要求打印Num(x,y)即可.


程序如下,控件只有一个,就是Form
************************************************************
Option Explicit
Const N = 11
Dim x As Integer, y As Integer
Dim k As Integer '注释: 为简化行文而设k, k = (N-1)/2
Dim Num(-(N - 1) / 2 To (N - 1) / 2, -(N - 1) / 2 To (N - 1) / 2) '注释:数组定义
------------------------------------------------------------

Private Sub Form_click()
k = (N - 1) / 2

For x = -k To k
    For y = -k To k
        If y >= x And y <= -x - 1 Then
            Num(x, y) = (2 * -x - 1) ^ 2 - x - y '注释:其中-x=Abs(x)
        ElseIf y <= x And y <= -x Then
            Num(x, y) = (2 * -y - 1) ^ 2 - 3 * y + x '注释:其中-y=Abs(y)
        ElseIf y >= -x And y <= x Then
            Num(x, y) = (2 * x - 1) ^ 2 + 5 * x + y '注释:x=Abs(x)
        ElseIf y >= -x And y >= x Then
            Num(x, y) = (2 * y - 1) ^ 2 + 7 * y - x '注释:y=Abs(y)
        End If
    Next y
Next x


For y = k To -k Step -1 '注释:将数组处理后打印, N^2 + 1 - Num(x,y)
    For x = -k To k
        Print Format(N * N + 1 - Num(x, y), "@@@@");
    Next x
    Print
Next y

End Sub
************************************************************
 
                            








 
~~~~~~~~~~~~~~~~~~~~
※作者已于 2003-07-23 17:59:58 修改本文※

~~~~~~~~~~~~~~~~~~~~

========== * * * * * ==========
再上传一个能用的.gif (4253字节)

上级目录
Copyright © 2001-2025 枫林在线(www.FengLin.info)
All Rights Reserved