C#二维数组答案.docx
《C#二维数组答案.docx》由会员分享,可在线阅读,更多相关《C#二维数组答案.docx(21页珍藏版)》请在冰豆网上搜索。
C#二维数组答案
c#程序设计基础必做习题集(5)
十三、二维数组
任务106:
编写程序定义一个二维数组arr,该数组一共有4行3列,如下表所示,请把下表中的所有对应数据利用赋值语句赋值到该二维数组arr中去:
arr第0列第1列第2列
18
25
7
9
13
118
1119
4327
91
8
2576
673
第0行
第1行
第2行
第3行
编写程序依次把第2行第1列、第0行第2列、第3行第0列的元素值显示出来。
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication2
{
classProgram
{
staticvoidMain(string[]args)
{
int[,]arr=newint[4,3];
arr[0,0]=18;
arr[0,1]=25;
arr[0,2]=7;
arr[1,0]=9;
arr[1,1]=13;
arr[1,2]=118;
arr[2,0]=1119;
arr[2,1]=4327;
arr[2,2]=91;
arr[3,0]=8;
arr[3,1]=2576;
arr[3,2]=673;
Console.WriteLine("第2行第1列的元素是:
{0}",arr[2,1]);
Console.WriteLine("第0行第2列的元素是:
{0}",arr[0,2]);
Console.WriteLine("第3行第0列的元素是:
{0}",arr[3,0]);
Console.ReadKey();
}
}
}
任务107:
编写程序定义一个二维数组arr,该数组一共有4行3列,如下表所示,请把下表中的所有对应数据利用赋值语句赋值到该二维数组arr中去:
arr第0列第1列第2列
180
2
71
91
139
114
119
437
86
9
276
73
第0行
第1行
第2行
第3行
按照以下要求编写程序:
(1)利用循环显示第0行的所有元素。
(2)利用循环显示第1列的所有元素。
(3)利用循环求第2行所有元素的和。
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication2
{
classProgram
{
staticvoidMain(string[]args)
{
int[,]arr=newint[4,3];
arr[0,0]=180;
arr[0,1]=2;
arr[0,2]=71;
arr[1,0]=91;
arr[1,1]=139;
arr[1,2]=114;
arr[2,0]=119;
arr[2,1]=437;
arr[2,2]=86;
arr[3,0]=9;
arr[3,1]=276;
arr[3,2]=73;
Console.Write("所有第0行的数据:
");
for(inti=0;i<=2;i++)
{
Console.Write(arr[0,i]+"");
}
Console.Write("\n所有第1列的数据:
");
for(inti=0;i<=3;i++)
{
Console.Write(arr[i,1]+"");
}
Console.Write("所有第2行的数据:
");
for(inti=0;i<=2;i++)
{
Console.Write(arr[2,i]+"");
}
Console.ReadKey();
}
}
}
任务108:
编写程序定义一个二维数组arr,该数组一共有4行3列,如下表所示,请把下表中的所有对应数据利用赋值语句赋值到该二维数组arr中去:
arr第0列第1列第2列
180
2
71
91
139
114
119
437
86
9
276
73
第0行
第1行
第2行
第3行
编写程序利用二重循环,把以上数组所有数组按照4行、3列的方式打印出来。
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication2
{
classProgram
{
staticvoidMain(string[]args)
{
int[,]arr=newint[4,3];
arr[0,0]=180;
arr[0,1]=2;
arr[0,2]=71;
arr[1,0]=91;
arr[1,1]=139;
arr[1,2]=114;
arr[2,0]=119;
arr[2,1]=437;
arr[2,2]=86;
arr[3,0]=9;
arr[3,1]=276;
arr[3,2]=73;
for(inti=0;i<=3;i++)
{
for(intj=0;j<=2;j++)
{
Console.Write(arr[i,j]+"");
}
Console.Write("\n");
}
Console.ReadKey();
}
}
}
任务109:
编写程序,定义一个4行,4列的二维数组,随机产生16个10到99之间的整数,放入其中,并把这4行4列的数据显示出来;把该数组的对角线元素显示出来,所谓的对角线元素如下图所示:
注意:
从左上到右下的称为正对角线元素,从左下到右上的称为斜对角线元素。
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication2
{
classProgram
{
staticvoidMain(string[]args)
{
int[,]arr=newint[4,4];
Randomrnd=newRandom();
Console.WriteLine("二维数组的内容如下:
");
for(inti=0;i<=3;i++)//产生随机数放入数组
{
for(intj=0;j<=3;j++)
{
arr[i,j]=rnd.Next(10,100);
Console.Write(arr[i,j]+"");
}
Console.Write("\n");
}
Console.Write("正对角线的元素有:
");
for(inti=0;i<=3;i++)
{
Console.Write(arr[i,i]+"");
}
Console.Write("\n斜对角线的元素有:
");
for(inti=0;i<=3;i++)
{
Console.Write(arr[3-i,i]+"");
}
Console.ReadKey();
}
}
}
任务110:
编写程序,定义一个4*4的二维数组,随机产生16个100到999之间的整数放入其中,并把这4行4列的数据显示出来;编写程序,把该二维数组每行的和、每列的和求出来。
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication2
{
classProgram
{
staticvoidMain(string[]args)
{
int[,]arr=newint[4,4];
Randomrnd=newRandom();
Console.WriteLine("二维数组的内容是:
");
for(inti=0;i<=3;i++)//产生并显示二维数组的内容
{
for(intj=0;j<=3;j++)
{
arr[i,j]=rnd.Next(100,1000);
Console.Write(arr[i,j]+"");
}
Console.Write("\n");
}
Console.Write("\n");
Console.WriteLine("每行的和如下:
");
for(inti=0;i<=3;i++)//求每行的和
{
intsum=0;
Console.Write("第{0}行的和=",i);
for(intj=0;j<=3;j++)
sum=sum+arr[i,j];
Console.WriteLine(sum);
}
Console.Write("\n");
Console.WriteLine("每列的和如下:
");
for(inti=0;i<=3;i++)//求每列的和
{
intsum=0;
Console.Write("第{0}列的和=",i);
for(intj=0;j<=3;j++)
sum=sum+arr[j,i];
Console.WriteLine(sum);
}
Console.ReadKey();
}
}
}
任务111:
编写程序,定义一个6*8的二维数组,随机产生48个10到99之间的整数,放入该二维数组中。
把该数组的内容按照6行8列的形式显示出来。
再求出该数组中的最大值和最小值。
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication2
{
classProgram
{
staticvoidMain(string[]args)
{
int[,]arr=newint[6,8];
Randomrnd=newRandom();
for(inti=0;i<=5;i++)//随机产生并显示数组的所有数据内容
{
for(intj=0;j<=7;j++)
{
arr[i,j]=rnd.Next(10,100);
Console.Write(arr[i,j]+"");
}
Console.Write("\n");
}
intmax=-100000;
intmin=+100000;
for(inti=0;i<=5;i++)
{
for(intj=0;j<=7;j++)
{
if(arr[i,j]>max)//求最大
max=arr[i,j];
if(arr[i,j]min=arr[i,j];
}
}
Console.WriteLine("最大值={0}",max);
Console.WriteLine("最小值={0}",min);
Console.ReadKey();
}
}
}
任务112:
编写程序,定义一个5*5的二维数组,该数组中每个元素的值是行下标和列下标的平方和,把这个二维数组的内容全部显示出来。
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication2
{
classProgram
{
staticvoidMain(string[]args)
{
int[,]arr=newint[5,5];
for(inti=0;i<=4;i++)//初始化数组内容
{
for(intj=0;j<=4;j++)
arr[i,j]=i*i+j*j;
}
for(inti=0;i<=4;i++)//显示数组内容
{
for(intj=0;j<=4;j++)
Console.Write(arr[i,j]+"");
Console.Write("\n");
}
Console.ReadKey();
}
}
}
任务113:
编写程序,定义一个10*10的二维数组,随机产生100个10到99之间的整数放入其中,请把该数组的内容全部显示出来。
再编写程序,对这个二维数组的每行进行升序排序,把排序后的二维数组的内容显示出来。
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication2
{
classProgram
{
staticvoidMain(string[]args)
{
int[,]arr=newint[10,10];
Randomrnd=newRandom();
Console.WriteLine("排序后的内容:
");
for(inti=0;i<=9;i++)//产生并显示数组
{
for(intj=0;j<=9;j++)
{
arr[i,j]=rnd.Next(10,99);
Console.Write(arr[i,j]+"");
}
Console.Write("\n");
}
for(intp=0;p<=9;p++)//对每行进行排序
{
for(inti=0;i<=8;i++)
{
for(intj=i+1;j<=9;j++)
{
if(arr[p,i]>arr[p,j])
{
inttemp=arr[p,i];
arr[p,i]=arr[p,j];
arr[p,j]=temp;
}
}
}
}
Console.WriteLine("排序后的内容:
");
for(inti=0;i<=9;i++)//显示排序数组
{
for(intj=0;j<=9;j++)
{
Console.Write(arr[i,j]+"");
}
Console.Write("\n");
}
Console.ReadKey();
}
}
}
方法二:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication2
{
classProgram
{
staticvoidMain(string[]args)
{
int[,]arr=newint[10,10];
Randomrnd=newRandom();
Console.WriteLine("排序前的内容:
");
for(inti=0;i<=9;i++)//产生并显示数组
{
for(intj=0;j<=9;j++)
{
arr[i,j]=rnd.Next(10,99);
Console.Write(arr[i,j]+"");
}
Console.Write("\n");
}
for(intp=0;p<=9;p++)//对每行进行排序
{
for(inti=0;i<9;i++)
for(intj=0;j<9-i;j++)
{
if(arr[p,j]>arr[p,j+1])
{
intt=arr[p,j];
arr[p,j]=arr[p,j+1];
arr[p,j+1]=t;
}
}
}
Console.WriteLine("排序后的内容");
for(inti=0;i<=9;i++)
{
for(intj=0;j<=9;j++)
Console.Write(arr[i,j]+"");
Console.WriteLine();
}
Console.ReadLine();
}
}
}
任务114:
编写程序把以下值通过赋值语句赋值给一个二维数组:
1265341235
4518235638
7190183392
2331633487
9583372291
请求出该二维数组每行的最大值和每列的最小值。
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication2
{
classProgram
{
staticvoidMain(string[]args)
{
int[,]arr=newint[5,5]{
{12,65,34,12,35},
{45,18,23,56,38},
{71,90,18,33,92},
{23,31,63,34,87},
{95,83,37,22,91}
};
Console.WriteLine("数组内容如下:
");//显示数组内容
for(inti=0;i<=4;i++)
{
for(intj=0;j<=4;j++)
Console.Write(arr[i,j]+"");
Console.Write("\n");
}
Console.WriteLine("每行的最大值如下:
");
for(inti=0;i<=4;i++)//求每行最大值
{
intmax=arr[i,0];
for(intj=1;j<=4;j++)
{
if(arr[i,j]>max)
max=arr[i,j];
}
Console.WriteLine("第{0}行的最大值={1}",i,max);
}
Console.WriteLine("每列的最小值如下:
");
for(inti=0;i<=4;i++)//求每列的最小值
{
intmin=arr[0,i];
for(intj=1;j<=4;j++)
{
if(arr[j,i]min=arr[i,j];
}
Console.WriteLine("第{0}列的最小值={1}",i,min);
}
Console.ReadKey();
}
}
}
任务115:
利用二维数组打如下的图形:
1
11
121
1331
14641
15101051
思路:
可以先考虑打印如下图形:
1
11
121
1331
14641
15101051
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication2
{
classProgram
{
staticvoidMain(string[]args)
{
int[,]arr=newint[6,6];
for(inti=0;i<=5;i++)//把第1列全部设为1
arr[i,0]=1;
for(inti=0;i<=5;i++)//把对角线设为1
arr[i,i]=1;
for(inti=2;i<=5;i++)//构造杨辉三角形
{
for(intj=1;j<=i-1;j++)
arr[i,j]=arr[i-1,j]+arr[i-1,j-1];
}
intp=30;
for(inti=0;i<=5;i++)
{//显示出来
for(intj=0;j
Console.Write("");
p=p-1;
for(intj=0;j<=i;j++)
Console.Write(arr[i,j]+"");
Console.Write("\n");
}
Console.ReadKey();
}
}
}