参考书籍:《C#程序设计实验指导与习题测试》

  • 掌握常量和变量的使用
  • 掌握运算符和表达式的使用
  • 掌握赋值语句的使用
  • 掌握顺序结构的程序流程
  • 掌握单分支语句的使用
  • 掌握双分支语句的使用
  • 掌握多分支语句的使用

实验1:常量、变量、运算符、表达式和赋值语句的使用

输出半径,求对应圆的周长、面积,对应球体的体积。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System;

namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
const double PI = 3.14159;
double r, permeter, area, volume;
//变量r,permeter,area,volume分别存放圆的半径,周长,面积以及对应球体的体积

Console.Write("请输入半径:");
String s = Console.ReadLine();
r = double.Parse(s);
//显性数据类型转换,将数字字符串转换成等效的双精度浮点数

Console.WriteLine("圆的半径为:{0}", r);
//获取用户输入,并打印出圆的半径的值

permeter = 2 * PI * r;
area = PI * r * r;
volume = 4 / 3 * PI * Math.Pow(r, 3);
//列出permeter、area、volume与r的关系表达式

Console.WriteLine("圆的周长是:{0}\n圆的面积是:{1}\n对应球体的体积是:{2}", permeter, area, volume);
//打印计算结果

Console.ReadLine();
//等待用户输入,目的是使程序"停下来"
}
}
}
1
2
3
4
5
请输入半径:5
圆的半径为:5
圆的周长是:31.4159
圆的面积是:78.53975
对应球体的体积是:392.69874999999996

实验2:求三角形的周长和面积

输入三角形的三条边,先判断是否可以构成三角形,如果可以,则求三角形的周长和面积,否则报错。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;

namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
double a, b, c;//存放三角形的三条边
double p, h, area;
//变量p用来存放三角形的周长,h存放三角形周长的一半,area用来存放三角形的面积

Console.Write("请输入三角形的第一条边a:");
String s = Console.ReadLine();
a = double.Parse(s);
Console.Write("请输入三角形的第二条边b:");
s = Console.ReadLine();
b = double.Parse(s);
Console.Write("请输入三角形的第三条边c:");
s = Console.ReadLine();
c = double.Parse(s);
//获取用户输入数据,并将字符串数据转换成双精度浮点型数据

//判断是否可以构成三角形,若能,用海伦公式计算三角形的面积
if (a > 0 && b > 0 && c > 0 && a + b > c && a + c > b && b + c > a)
{
Console.WriteLine("三角形的三条边分别为a={0}, b={1}, c={2}",a,b,c);
p = a + b + c;
h = p / 2;
area = Math.Sqrt(h * (h - a) * (h - b) * (h - c));
Console.WriteLine("三角形的周长为{0}\n三角形的面积为{1}", p, area);
}
else Console.WriteLine("无法构成三角形!");

Console.ReadKey();
}
}
}
1
2
3
4
请输入三角形的第一条边a:1
请输入三角形的第二条边b:1
请输入三角形的第三条边c:3
无法构成三角形!
1
2
3
4
5
6
请输入三角形的第一条边a:10
请输入三角形的第二条边b:24
请输入三角形的第三条边c:26
三角形的三条边分别为a=10, b=24, c=26
三角形的周长为60
三角形的面积为120
1
2
3
4
5
6
请输入三角形的第一条边a:10.2
请输入三角形的第二条边b:25.5
请输入三角形的第三条边c:33.3
三角形的三条边分别为a=10.2, b=25.5, c=33.3
三角形的周长为69
三角形的面积为95.15345500821303

实验3:分段函数的实现

输入x,根据如下公式计算分段函数y的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System;

namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
double x, y;
Console.Write("请输入x的值: ");
String s = Console.ReadLine();
x = double.Parse(s);

//方法一
y = (x * x - 3 * x) / (x + 1) + 2 * Math.PI + Math.Sin(x);
if(y<0)
{
y = Math.Log(-5 * x) + Math.Sqrt(Math.Abs(x) + Math.Pow(Math.E, 4)) - Math.Pow(x + 1, 3);
}
Console.WriteLine("方法一:y={0}", y);

//方法二
if(x>=0)
{
y = (x * x - 3 * x) / (x + 1) + 2 * Math.PI + Math.Sin(x);
}
if(x<0)
{
y = Math.Log(-5 * x) + Math.Sqrt(Math.Abs(x) + Math.Pow(Math.E, 4)) - Math.Pow(x + 1, 3);
}
Console.WriteLine("方法二:y={0}", y);

//方法三
if (x >= 0)
{
y = (x * x - 3 * x) / (x + 1) + 2 * Math.PI + Math.Sin(x);
}
else
{
y = Math.Log(-5 * x) + Math.Sqrt(Math.Abs(x) + Math.Pow(Math.E, 4)) - Math.Pow(x + 1, 3);
}
Console.WriteLine("方法三:y={0}", y);

//方法四
y=(x>=0)? y = (x * x - 3 * x) / (x + 1) + 2 * Math.PI + Math.Sin(x): y = Math.Log(-5 * x) + Math.Sqrt(Math.Abs(x) + Math.Pow(Math.E, 4)) - Math.Pow(x + 1, 3);

Console.WriteLine("方法四:y={0}", y);

Console.ReadKey();
}
}
}
1
2
3
4
5
请输入x的值: 5
方法一:y=6.990927699183115
方法二:y=6.990927699183115
方法三:y=6.990927699183115
方法四:y=6.990927699183115

实验4:三个数比较大小

产生三个0~100(包含0和100)的随机数a,b,c

按从小到大的顺序排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System;

namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
int a, b, c;
int temp;

Random rNum = new Random();
a = rNum.Next(101);
b = rNum.Next(101);
c = rNum.Next(101);

Console.WriteLine("原始值: a={0}, b={1}, c={2}", a, b, c);

//冒泡排序的方法两两比较
if(a > b)
{
temp = a;
a = b;
b = temp;
}
if (a > c)
{
temp = a;
a = c;
c = temp;
}
if (b > c)
{
temp = b;
b = c;
c = temp;
}

Console.WriteLine("从小到大排序后: a={0}, b={1},c={2}", a, b, c);
Console.ReadKey();
}
}
}
1
2
原始值: a=15, b=59, c=59
从小到大排序后: a=15, b=59, c=59

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System;

namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
int a, b, c;
int Max, Min, Mid;

Random rNum = new Random();
a = rNum.Next(101);
b = rNum.Next(101);
c = rNum.Next(101);

Console.WriteLine("原始值: a={0}, b={1}, c={2}", a, b, c);

Max = Math.Max(Math.Max(a, b), c);
Min = Math.Min(Math.Min(a, b), c);
Mid = a + b + c - Max - Min;

Console.WriteLine("从小到大排序后: a={0}, b={1}, c={2}", Min, Mid, Max);
Console.ReadKey();
}
}
}
1
2
原始值: a=8, b=26, c=3
从小到大排序后: a=3, b=8, c=26

实验5:求解一元二次方程

输入一元二次方程组的三个系数a,b,c,求方程的解。

(当一元二次方程组中二次项系数a=0时,方程不再是一元二次方程,而是一元一次方程,这里有点歧义,此处的一元二次方程应该指的是形如$a x^{2}+b x+c=0$的方程)

分析:

方程 $a x^{2}+b x+c=0$ 的解有以下几种情况 :
(1) $a=0$ 和 $b=0,$ 无解
(2) $a=0$ 和 $b !=0,$ 有一个实根 $: x=-\frac{c}{b}$
(3) $b^{2}-4 a c=0,$ 有两个相等实根 : $x_{1}=x_{2}=-\frac{b}{2 a}$
(4) $b^{2}-4 a c>0,$ 有两个不等实根 $: x_{1}=\frac{-b+\sqrt{b^{2}-4 a c}}{2 a}, x_{2}=\frac{-b-\sqrt{b^{2}-4 a c}}{2 a}$
(5) $b^{2}-4 a c<0,$ 有两个共地复根 $: x_{1}=-\frac{b}{2 a}+\frac{\sqrt{4 a c-b^{2}}}{2 a} \mathrm{i}, x_{2}=-\frac{b}{2 a}-\frac{\sqrt{4 a c-b^{2}}}{2 a} \mathrm{i}_{}$

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
using System;

namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
double a, b, c;//存放方程的三个系数
double x1, x2;//存放实数解
double realPart, imagPart;//存放虚数解中的实部和虚部
double dlt = 0;//存放delta

Console.Write("请输入系数a: ");
String s = Console.ReadLine();
a = double.Parse(s);

Console.Write("请输入系数b: ");
s = Console.ReadLine();
b = double.Parse(s);

Console.Write("请输入系数c: ");
s = Console.ReadLine();
c = double.Parse(s);

if(a==0)
{
if(b==0)
{
Console.WriteLine("方程无解!");
}
else
{
Console.WriteLine("此方程的解为:{0}", -c / b);
}
}

else
{
dlt = b * b - 4 * a * c;
if(dlt>0)
{
x1 = (-b + Math.Sqrt(dlt)) / (2 * a);
x2 = (-b - Math.Sqrt(dlt)) / (2 * a);
Console.WriteLine("此方程有两个不等式根,分别是{0}和{1}", x1, x2);
}

else if(dlt==0)
{
x1 = x1 = (-b + Math.Sqrt(dlt)) / (2 * a);
Console.WriteLine("此方程有两个相等的实根为:{0}", x1);
}

else
{
realPart = -b / (2 * a);
imagPart = Math.Sqrt(-dlt) / 2 * a;
Console.WriteLine("方程有两个虚根分别是{0}+{1}i 和 {0}-{1}i ", realPart, imagPart);
}
}
}
}
}
1
2
3
4
请输入系数a: 0
请输入系数b: 0
请输入系数c: 6
方程无解!
1
2
3
4
请输入系数a: 0
请输入系数b: 1
请输入系数c: 2
此方程的解为:-21
1
2
3
4
请输入系数a: 1
请输入系数b: -2
请输入系数c: 1
此方程有两个相等的实根为:1
1
2
3
4
请输入系数a: 1
请输入系数b: -1
请输入系数c: -6
此方程有两个不等式根,分别是3和-2
1
2
3
4
请输入系数a: 1
请输入系数b: -1
请输入系数c: 0.5
方程有两个虚根分别是0.5+0.5i 和 0.5-0.5i

实验6:switch语句实现多重分支结构

输入一个数字(1~7),对应输出内容(星期一 ~星期天)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;

namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
int i = 0;
Console.Write("请输入一个数字(1-7)>>>:");
String s = Console.ReadLine();
i = int.Parse(s);

switch(i)
{
case 1:
Console.WriteLine("您输入的数字对应的内容是:星期一");
break;
case 2:
Console.WriteLine("您输入的数字对应的内容是:星期二");
break;
case 3:
Console.WriteLine("您输入的数字对应的内容是:星期三");
break;
case 4:
Console.WriteLine("您输入的数字对应的内容是:星期四");
break;
case 5:
Console.WriteLine("您输入的数字对应的内容是:星期五");
break;
case 6:
Console.WriteLine("您输入的数字对应的内容是:星期六");
break;
case 7:
Console.WriteLine("您输入的数字对应的内容是:星期天");
break;
default:
Console.WriteLine("输入错误!");
break;
}
Console.ReadKey();
}
}
}
1
2
请输入一个数字(1-7)>>>:0
输入错误!
1
2
请输入一个数字(1-7)>>>:7
您输入的数字对应的内容是:星期天

实验7:if语句和switch分支结构

使用if语句和switch语句输出下面的分段函数

switch语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;

namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
int salary = 0;
int c = 0;
double f = 0;

Console.Write("请输入salary的值:");
String s = Console.ReadLine();
salary = int.Parse(s);

if(salary>1500)
{
c = 15;
}
else
{
c = (salary - 1) / 100;
}

switch(c)
{
case 0:
case 1:
case 2:
case 3:
f = 0.5 / 100 * salary;
break;

case 4:
case 5:
f = 1.0 / 100 * salary;
break;

case 6:
case 7:
f = 1.5 / 100 * salary;
break;

case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
f = 2.0 / 100 * salary;
break;

case 15:
f = 3.0 / 100 * salary;
break;
}

Console.WriteLine("f={0}", f);
Console.ReadKey();
}
}
}
1
2
请输入salary的值:666
f=9.99
1
2
请输入salary的值:99999
f=2999.97

if语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
using System;

namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
int salary = 0;
double f = 0;

Console.Write("请输入salary的值:");
String s = Console.ReadLine();
salary = int.Parse(s);

if(salary>0&&salary<=400)
{
f = 0.5 / 100 * salary;
}
else if(salary > 400 && salary <= 600)
{
f = 1.0 / 100 * salary;
}
else if (salary > 600 && salary <= 800)
{
f = 1.5 / 100 * salary;
}
else if (salary > 800 && salary <= 1500)
{
f = 2.0 / 100 * salary;
}
else
{
f = 3.0 / 100 * salary;
}
Console.WriteLine("f={0}", f);
Console.ReadKey();
}
}
}


1
2
请输入salary的值:666
f=9.99
1
2
请输入salary的值:99999
f=2999.97