个人学习笔记, 如有错误之处,还请各位大佬批评指正!
参考书籍:《C#程序设计实验指导与习题测试》
笔记同步发表在我的个人博客上,欢迎访问!传送门
实验目的
- 掌握常量和变量的使用
- 掌握运算符和表达式的使用
- 掌握赋值语句的使用
- 掌握顺序结构的程序流程
- 掌握单分支语句的使用
- 掌握双分支语句的使用
- 掌握多分支语句的使用
文章目录
实验1:常量、变量、运算符、表达式和赋值语句的使用
输出半径,求对应圆的周长、面积,对应球体的体积。
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();
//等待用户输入,目的是使程序"停下来"
}
}
}
请输入半径:5
圆的半径为:5
圆的周长是:31.4159
圆的面积是:78.53975
对应球体的体积是:392.69874999999996
实验2:求三角形的周长和面积
输入三角形的三条边,先判断是否可以构成三角形,如果可以,则求三角形的周长和面积,否则报错。
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();
}
}
}
请输入三角形的第一条边a:1
请输入三角形的第二条边b:1
请输入三角形的第三条边c:3
无法构成三角形!
请输入三角形的第一条边a:10
请输入三角形的第二条边b:24
请输入三角形的第三条边c:26
三角形的三条边分别为a=10, b=24, c=26
三角形的周长为60
三角形的面积为120
请输入三角形的第一条边a:10.2
请输入三角形的第二条边b:25.5
请输入三角形的第三条边c:33.3
三角形的三条边分别为a=10.2, b=25.5, c=33.3
三角形的周长为69
三角形的面积为95.15345500821303
实验3:分段函数的实现
输入x,根据如下公式计算分段函数y的值
y = { x 2 − 3 x x + 1 + 2 π + sin x x ⩾ 0 ln ( − 5 x ) + 6 ∣ x ∣ + e 4 − ( x + 1 ) 3 x < 0 y=\left\{\begin{array}{ll} \frac{x^{2}-3 x}{x+1}+2 \pi+\sin x & x \geqslant 0 \\ \ln (-5 x)+6 \sqrt{|x|+\mathrm{e}^{4}}-(x+1)^{3} & x<0 \end{array}\right. y={ x+1x2−3x+2π+sinxln(−5x)+6∣x∣+e4−(x+1)3x⩾0x<0
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();
}
}
}
请输入x的值: 5
方法一:y=6.990927699183115
方法二:y=6.990927699183115
方法三:y=6.990927699183115
方法四:y=6.990927699183115
实验4:三个数比较大小
产生三个0~100(包含0和100)的随机数a,b,c,按从小到大的顺序排序后输出
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();
}
}
}
原始值: a=15, b=59, c=56
从小到大排序后: a=15, b=56, c=59
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();
}
}
}
原始值: 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 ax2+bx+c=0的方程)
分析:
方程 a x 2 + b x + c = 0 a x^{2}+b x+c=0 ax2+bx+c=0 的解有以下几种情况 :
(1) a = 0 a=0 a=0 和 b = 0 , b=0, b=0, 无解
(2) a = 0 a=0 a=0 和 b ! = 0 , b !=0, b!=0, 有一个实根 : x = − c b : x=-\frac{c}{b} :x=−bc
(3) b 2 − 4 a c = 0 , b^{2}-4 a c=0, b2−4ac=0, 有两个相等实根 : x 1 = x 2 = − b 2 a x_{1}=x_{2}=-\frac{b}{2 a} x1=x2=−2ab
(4) b 2 − 4 a c > 0 , b^{2}-4 a c>0, b2−4ac>0, 有两个不等实根 : x 1 = − b + b 2 − 4 a c 2 a , x 2 = − b − b 2 − 4 a c 2 a : x_{1}=\frac{-b+\sqrt{b^{2}-4 a c}}{2 a}, x_{2}=\frac{-b-\sqrt{b^{2}-4 a c}}{2 a} :x1=2a−b+b2−4ac,x2=2a−b−b2−4ac
(5) b 2 − 4 a c < 0 , b^{2}-4 a c<0, b2−4ac<0, 有两个共地复根 : x 1 = − b 2 a + 4 a c − b 2 2 a i , x 2 = − b 2 a − 4 a c − b 2 2 a i : 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}_{} :x1=−2ab+2a4ac−b2i,x2=−2ab−2a4ac−b2i
using System;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
double a, b, c;//存放方程的三个系数
double x1, x2;//存放实数解
double realPart, imagPart;//存放虚数解中的实部和虚部
double dlt;//存放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);
}
}
}
}
}
请输入系数a: 0
请输入系数b: 0
请输入系数c: 6
方程无解!
请输入系数a: 0
请输入系数b: 1
请输入系数c: 2
此方程的解为:-21
请输入系数a: 1
请输入系数b: -2
请输入系数c: 1
此方程有两个相等的实根为:1
请输入系数a: 1
请输入系数b: -1
请输入系数c: -6
此方程有两个不等式根,分别是3和-2
请输入系数a: 1
请输入系数b: -1
请输入系数c: 0.5
方程有两个虚根分别是0.5+0.5i 和 0.5-0.5i
实验6:switch语句实现多重分支结构
输入一个数字(1~7),对应输出内容(星期一 ~ 星期天)
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-7)>>>:0
输入错误!
请输入一个数字(1-7)>>>:7
您输入的数字对应的内容是:星期天
实验7:if语句和switch分支结构
使用if语句和switch语句输出下面的分段函数值
f = { 0.5 % ∗ salary salary ⩽ 400 1 % ∗ salary 401 ⩽ salary ⩽ 600 1.5 % ∗ salary 601 ⩽ salary ⩽ 800 2 % ∗ salary 801 ⩽ salary ⩽ 1500 3 % ∗ salary salary > 1500 \text { } f=\left\{\begin{array}{ll} 0.5 \% * \text { salary } & \text { salary } \leqslant 400 \\ 1 \% * \text { salary } & 401 \leqslant \text { salary } \leqslant 600 \\ 1.5 \% * \text { salary } & 601 \leqslant \text { salary } \leqslant 800 \\ 2 \% * \text { salary } & 801 \leqslant \text { salary } \leqslant 1500 \\ 3 \% * \text { salary } & \text { salary }>1500 \end{array}\right. f=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧0.5%∗ salary 1%∗ salary 1.5%∗ salary 2%∗ salary 3%∗ salary salary ⩽400401⩽ salary ⩽600601⩽ salary ⩽800801⩽ salary ⩽1500 salary >1500
switch语句
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();
}
}
}
请输入salary的值:666
f=9.99
请输入salary的值:99999
f=2999.97
if语句
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();
}
}
}
请输入salary的值:666
f=9.99
请输入salary的值:99999
f=2999.97