4.1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace c4._1
{
class Program
{
static void Main(string[] args)
{
Program test = new Program();
double [] height = new double[10]{156, 150, 167, 178, 180, 176, 173, 154, 155, 158 };
Console.WriteLine("学生身高如下");
test.show(height);
double max = 0.0;
double min = 0.0;//C#不允许未初始化的变量!
test.maxWithMin(height,ref max,ref min);//必须用引用传递
double avg=test.avg(height);
Console.Write("平均身高={0},最高身高={1},最低身高={2}", max, min, avg);
int n = test.heigher(height, avg);
Console.WriteLine("\n高于平均身高的学生人数={0}", n);
Console.ReadKey();
}
public void show(double[] arr)
{
foreach (double i in arr)
{
Console.Write(" {0}", i);
}
Console.WriteLine();
}
public void maxWithMin(double []arr,ref double min,ref double max)
{
max=arr[0];
min=arr[0];
//int size = arr.Length;
for (int i = 0; i < arr.Length; i++)
{
if (max < arr[i])
max = arr[i];
if (min > arr[i])
min = arr[i];
}
}
public double avg(double[] arr)
{
double average;
double sum=0;
for(int i=0;i<arr.GetLength(0);i++)
sum+=arr[i];
average=sum*1.0/arr.GetLength(0);
return average;
}
public int heigher(double[] arr, double avg)
{
int count = 0;
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] > avg)
count++;
}
return count;
}
}
}
4.2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace c4._2
{
class Program
{
static void Main(string[] args)
{
int []score = new int[]{ 80, 90, 67, 89, 78, 85, 45, 69, 77, 95 };
(new Program()).show(score);
Console.ReadKey();
}
public void show(int[] score)
{
int bad = 0;
int min = 0;
int good = 0;
int well=0;//90-100
foreach (int i in score)
{
if (i>=90)
well++;
else if(i>=80)
good++;
else if(i>=60)
min++;
else
bad++;
}
int size=score.Length;
Console.WriteLine("优(90-100)分数段的学生人数={0},所占百分比={1}%",well,well*100.0/size);
Console.WriteLine("良(80-89)分数段的学生人数={0},所占百分比={1}%",good,good*100.0/size);
Console.WriteLine("中(60-79)分数段的学生人数={0},所占百分比={1}%",min,min*100.0/size);
Console.WriteLine("差(0-59)分数段的学生人数={0},所占百分比={1}%",bad,bad*100.0/size);
}
}
}
4.3
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace c4._3
{
class Program
{
static void Main(string[] args)
{
int[] num = new int[10];
Program p=new Program();
Console.WriteLine("原始数组:");
p.randIt(num);
p.show(num);
p.sort(num);
Console.WriteLine();
Console.WriteLine("降序数组");
p.show(num);
Console.ReadKey();
}
public void randIt(int[] num)
{
Random randNum = new Random();
for (int i = 0; i < num.Length; i++)
{
num[i]= randNum.Next(101);//101??
}
}
public void sort(int[] arr)
{
for(int i=0;i<arr.Length;i++)
for (int j = 0; j < arr.Length-i-1; j++)//看清楚j的终止条件
{
if (arr[j]< arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j +1] = temp;
}
}
}
public void show(int[] arr)
{
foreach (int i in arr)
{
Console.Write("{0} ", i);
}
}
}
}
4.4
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace c4._4
{
class Program
{
static void Main(string[] args)
{
int[] num = new int[10];
Program p = new Program();
Console.WriteLine("原始数组:");
p.randIt(num);
p.show(num);
p.sort(num);
Console.WriteLine();
Console.WriteLine("降序数组");
p.show(num);
Console.ReadKey();
}
public void randIt(int[] num)
{
Random randNum = new Random();
for (int i = 0; i < num.Length; i++)
{
num[i] = randNum.Next(101);//101??
}
}
//这是选择排序的算法
public void sort(int[] arr)
{
for (int i = 0; i < arr.Length; i++)
for (int j = i; j < arr.Length; j++)//看清楚j的终止条件
{ //选择跟冒泡有点不同,是先排第一个,然后往后排
if (arr[i] < arr[j])
{
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
public void show(int[] arr)
{
foreach (int i in arr)
{
Console.Write("{0} ", i);
}
}
}
}
4.5
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//using System.Array;
namespace c4._5
{
class Program
{
static void Main(string[] args)
{
int[,] A = new int[4,4];
int[,] B = new int[4, 4];
int[,] C = new int[4, 4];
int[,] D = new int[4, 4];
Program p = new Program();
p.RandIt(A, 50, 100);
p.RandIt(B, 0, 10);
Console.WriteLine("数组A的内容:");
p.show(A);
Console.WriteLine("数组B的内容:");
p.show(B);
Console.WriteLine("上三角显示数组A的内容:");
p.showTriangle(A,0);
Console.WriteLine("下三角显示数组B的内容:");
p.showTriangle(B,1);
p.add(A, B, C);
Console.WriteLine("数组A+B的结果:");
p.show(C);
Console.WriteLine("数组A-B的结果:");
p.dec(A, B, C);
p.show(C);
Console.ReadKey();
}
public void dec(int[,] a, int[,] b, int[,] c)
{
int ax = a.GetLength(0);
int ay = a.GetLength(1);
int bx = b.GetLength(0);
int by = b.GetLength(1);
int cx = c.GetLength(0);
int cy = c.GetLength(1);
if (ax == bx && ax == cx && ay == by && by == cx)
{
for (int i = 0; i < ax; i++)
for (int j = 0; j < bx; j++)
c[i, j] = a[i, j] - b[i, j];
}
else
Console.WriteLine("Can't add it !");
}
public void add(int[,] a, int[,] b, int[,] c)
{
int ax = a.GetLength(0);
int ay = a.GetLength(1);
int bx = b.GetLength(0);
int by = b.GetLength(1);
int cx = c.GetLength(0);
int cy = c.GetLength(1);
if (ax == bx && ax == cx && ay == by && by == cx)
{
for (int i = 0; i < ax; i++)
for (int j = 0; j < bx; j++)
c[i, j] = a[i, j] + b[i, j];
}
else
Console.WriteLine("Can't add it !");
}
public void RandIt(int[,] arr, int randNumMin,int randNumMax)
{
int sizeX = arr.GetLength(0);
int sizeY = arr.GetLength(1);
Random rand=new Random();
for (int i = 0; i < sizeX; i++)
{
for (int j = 0; j < sizeY; j++)
{
arr[i,j] = rand.Next(randNumMin, randNumMax);
}
}
}
public void showTriangle(int[,] arr, int flag)//flag=0,上三角,=1,下三角
{
int sizeX = arr.GetLength(0);
int sizeY = arr.GetLength(1);
string ch=" ";
for (int i = 0; i < sizeX; i++)
{
for (int j = 0; j <sizeY; j++)
{
if(flag==0)//上三角
{
if (i<=j)
Console.Write("{0,4}", arr[i, j]);
else {
//for (int f = 0; f < j * 10;f++ )
Console.Write("{0,4}",ch);
}
}
else if(flag==1)//下三角
{
if (i>=j)
Console.Write("{0,4}", arr[i, j]);
else
Console.Write("{0,4}",ch);
}
}
Console.WriteLine();
}
}
public void show(int [,]num)
{
int sizeX = num.GetLength(0);
int sizeY = num.GetLength(1);
for (int i = 0; i < sizeX; i++)
{
for (int j = 0; j < sizeY; j++)
{
Console.Write(" {0}", num[i,j]);
}
Console.WriteLine();
}
Console.WriteLine();
}
}
}
4.6
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace c4._6
{
class Program
{
const int MAX= 10;
static void Main(string[] args)
{
Program.showTriangle(MAX);
Console.ReadKey();
}
public static void showTriangle(int LINE)
{
int [,]triangle=new int[LINE,LINE];
for (int i = 0; i < LINE; i++)//先令每一个元素都为1
for (int j = 0; j < LINE; j++)
triangle[i, j] = 1;
for (int i = 0; i < LINE; i++)//构造杨辉三角
for (int j = 1; j < i; j++)//每排第一个和最后一个不变
triangle[i, j] = triangle[i - 1, j] + triangle[i - 1, j - 1];
//其他的为上一层头顶和左边一个之和
for (int i = 0; i < LINE; i++)
{
for (int j = 0; j <= i; j++)
Console.Write(" {0,4}", triangle[i, j]);
Console.WriteLine();
}
}
}
}
4.7
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace c4._7
{
class Program
{
static void Main(string[] args)
{
int[] a = new[] { 80, 90, 67, 89, 78, 85, 45, 69, 77, 95 };
Console.WriteLine("数组的维数:{0}", a.Rank);
Console.WriteLine("数组的长度(元素总数):{0}", a.Length);
Program p = new Program();
Console.WriteLine("排序前的内容:");
p.show(a);
Console.WriteLine("排序后的内容:");
Array.Sort(a);
p.show(a);
Console.WriteLine("反转后的内容:");
Array.Reverse(a);//利用反向迭代器
p.show(a);
Console.ReadKey();
}
public void show(int[] a)
{
foreach(int i in a)
Console.Write("{0,4}",i);
Console.WriteLine();
}
}
}
4.8
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace c4._8
{
unsafe class Program
{
static void Main(string[] args)
{
int a, b, c;
int *pa,pb,pc;//三个都是指针?c#真是个神奇的东东啊
Console.Write("请输入整数a:");
String s=Console.ReadLine();
a = int.Parse(s);
Console.Write("请输入整数b:");
s = Console.ReadLine();
b = int.Parse(s);
Console.Write("请输入整数c:");
s = Console.ReadLine();
c = int.Parse(s);
Console.WriteLine("原始数据:a={0},b={1},c={2}", a, b, c);
pa = &a;
pb = &b;
pc = &c;
if (a > b) swap(pa,pb);
if (a > c) swap(pa, pc);
if (b > c) swap(pb, pc);
Console.WriteLine("升序排序:a={0},b={1},c={2}", a, b, c);
Console.ReadKey();
}
public static void swap(int* a, int* b)
{
int temp = *a ;
*a = *b;
*b = temp;
}
}
}