代码改变世界

简单数组——一维数组、多维数组、非齐整数组

2010-04-02 00:20  Eric.Hu  阅读(401)  评论(0编辑  收藏  举报

数组(array)是一组类型相同的变量的集合,可以通过一个公共的名称来访问其中的变量。它具有一个特殊的性质:作为对象来应用。

 

一维数组:

声明形式:type[] array-name=new type[size]

注:区分C与C++,方括号是在类型的后边而不是在数组名称的后边

 

初始化数组:

int[] nums1 = new int[10];

int[] nums2;
nums2 
= new int[10];

int[] nums3 = {99,10,23,90,11,24,55,78,45,78};         //等价下边
int[] nums3 = new int[10]{99,10,23,90,11,24,55,78,45,78};     //new int[10]可省略

int[] nums4;
nums4 
= new int[10]{99,10,23,90,11,24,55,78,45,78};     //new int[10]不可省略

 

 

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

 多维数组:

 声明方式:

 type[,.......,] array-name = new type[size1,size2,......,sizeN]; 

注:区分C,C++,Java,多维数组是在方括号内以逗号区分,而不是以多个方括号区分 

 初始化:

int[,,] multidim = new int[4,30,3];

type[,,,] array-name={

{val,val,....},

{val,val,....},

.....

{val,val,....}

}

如:class Squares

{
    
public static void Main()
    {
        
int[,] sqrs={
        {
1,1},
        {
2,4},
        {
3,9},
        {
4,16},
        {
5,25},
        {
6,36},
        {
7,49},
        {
8,64},
        {
9,81},
        {
10,100}
        };
        
        
int i,j;
        
for(i=0;i<10,i++)
        {
            
for(j=0;j<2;j++)
                Console.Write(sqrs[i,j]
+"  ");
            Console.WriteLine();
        }
    }
}

 

 

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

非齐整数组:

 声明方式:

type[][] array-name = new type[size][];

注意:指声明行数,声明维数;

如:

int[][] jagged = new int[3][];
jagged[
0=new int[4];
jagged[
1=new int[3];
jagged[
2=new int[5];

 

 

 数组扩展:

1.  数组的赋值引用:

代码
class AssignARef{
    
public static void Main(){
        
static void Main(string[] args)
        {
            
int i;
            
int[] nums1 = new int[10];
            
int[] nums2 = new int[10];

            
for (i = 0; i < 10; i++) nums1[i] = i;

            
for (i = 0; i < 10; i++) nums2[i] = -i;

            Console.Write(
"Here is nums1:");
            
for (i = 0; i < 10; i++)
                Console.Write(nums1[i] 
+ "  ");
            Console.WriteLine();

            Console.Write(
"Here is nums2:");
            
for (i = 0; i < 10; i++)
                Console.Write(nums2[i] 
+ "  ");
            Console.WriteLine();

            nums2 
= nums1;              //将nums1引用赋值给nums2
            Console.Write("Here is nums2 after assignment:");
            
for (i = 0; i < 10; i++)
                Console.Write(nums2[i] 
+ "  ");
            Console.WriteLine();

            
//现在就可以通过nums2数组来操作nums1数组了
            nums2[3= 99;
            Console.Write(
"Here is nums1 after change through nums2:");
            
for (i = 0; i < 10; i++)
                Console.Write(nums1[i] 
+ "  ");
            Console.WriteLine();

            Console.ReadKey();
        }
    }
}

 


运行结果:

 

如结果所示,将nums1赋值给nums2后,两个数组引用变量都将指向相同对象。

 

 2.  非齐整数组的Length属性:

当Length属性用于非齐整数组时,会出现一些特殊情况。此时,可以获得每个单独数组的长度。

一下程序是模拟4个节点的网络中的CPU占用情况:

 代码

 1 class Jagged
 2     {
 3         static void Main(string[] args)
 4         {
 5             int[][] network_nodes = new int[4][];
 6             network_nodes[0= new int[3];
 7             network_nodes[1= new int[7];
 8             network_nodes[2= new int[2];
 9             network_nodes[3= new int[3];
10 
11             int i, j;
12 
13             for (i = 0; i < network_nodes.Length; i++)
14                 for (j = 0; j < network_nodes[i].Length; j++)
15                     network_nodes[i][j] = i * j + 70;
16             Console.WriteLine("Total number of network nodes:" + network_nodes.Length + "\n");
17 
18             for (i = 0; i < network_nodes.Length; i++)
19             {
20                 for (j = 0; j < network_nodes[i].Length; j++)
21                 {
22                     Console.Write("CPU usage at node" + i + " CPU " + j + "");
23                     Console.Write(network_nodes[i][j] + "%  ");
24                     Console.WriteLine();
25                 }
26                 Console.WriteLine();
27             }
28             Console.ReadKey();
29         }
30     }

 

运行结果:

 

 

 3  将数字变为单词和中文

 1  class ConvertDigitsToWords
 2     {
 3         static void Main(string[] args)
 4         {
 5             int num;
 6             int nextdigit;
 7             int numdigits;
 8             int numdigits1;
 9             int[] n=new int[20];
10 
11             string[] digits = { "zero""one""two""three""four""five""six""seven""eight""nine" };
12             string[] digits1 = { """""""""""""""""""" };
13 
14             num = 1908;
15             Console.WriteLine("Number:" + num);
16 
17             
18 
19             nextdigit = 0;
20             numdigits = 0;
21             numdigits1 = 0;
22 
23 
24             do{
25                 nextdigit=num%10;
26                 n[numdigits]=nextdigit;
27                 numdigits++;
28 
29                 n[numdigits1] = nextdigit;
30                 numdigits1++;
31                 num=num/10;
32             }
33             while(num>0);
34             numdigits--;
35             numdigits1--;
36 
37             Console.Write("Number in word of English: ");
38 
39             for (; numdigits >= 0; numdigits--)
40             {
41                 Console.Write(digits[n[numdigits]] + "  ");
42             }
43             Console.WriteLine();
44             Console.Write("Number in word of Chinese: ");
45             for (; numdigits1 >= 0; numdigits1--)
46             {
47                 Console.Write(digits1[n[numdigits1]] + "  ");
48             }
49             Console.ReadKey();
50         }
51     }

 

运行结果:

Number:1908

Number in word of English: one  nine  zero  eight
Number in word of Chinese: 一  九  零  八