简单数组——一维数组、多维数组、非齐整数组
2010-04-02 00:20 Eric.Hu 阅读(401) 评论(0) 编辑 收藏 举报数组(array)是一组类型相同的变量的集合,可以通过一个公共的名称来访问其中的变量。它具有一个特殊的性质:作为对象来应用。
一维数组:
声明形式:type[] array-name=new type[size]
注:区分C与C++,方括号是在类型的后边而不是在数组名称的后边
初始化数组:
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][];
注意:指声明行数,声明维数;
如:
jagged[0] =new int[4];
jagged[1] =new int[3];
jagged[2] =new int[5];
数组扩展:
1. 数组的赋值引用:
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
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占用情况:
代码
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 将数字变为单词和中文
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