C# .net实验报告

【目录】

一、实验目的................................................................................................................ 2

二、实验要求................................................................................................................ 2

三、 实验内容.............................................................................................................. 2

任务1 判断每个输入的数是否可被3,5和7整除,并将整除状态输出。 .................... 2

任务2 练习使用for、while、do while、foreach in等循环语句。 ..................................... 3

任务3 绘图输出y=a*sin(c*x + b) ......................................................................................... 3

四、 实验步骤.............................................................................................................. 4

任务1 判断每个输入的数是否可被3,5和7整除,并将整除状态输出。 .................... 4

任务2 练习使用for、while、do while、foreach in等循环语句。 ..................................... 5

任务3 绘图输出y=a*sin(c*x + b) ......................................................................................... 8

五、实验结果.............................................................................................................. 10

六、实验体会及思考题讨论...................................................................................... 16

实验体会: ............................................................................................................................. 16

思考题讨论: ......................................................................................................................... 17

七、附件...................................................................................................................... 19

附件一:(任务一程序代码) ............................................................................................... 19

附件二:(任务二——三角形程序代码) ........................................................................... 20

附件三:(任务二——背靠背三角形程序代码) ............................................................... 21

附件四:(任务二——菱形程序代码) ............................................................................... 22

附件五:(任务二——倒置三角形程序代码) ................................................................... 23

附件六:(任务三——三角函数程序代码) ....................................................................... 24 1

一、实验目的

配合课程教学,通过实际上机练习,熟练掌握和运用C#基本语法,能运用它进行控制台应用程序设计;熟悉VISUAL STUDIO.NET开发平台;熟悉控制台应用程序的调试经验和技巧。

二、实验要求

实现试验内容提要中规定的各项需求;独立(或合作或在别人协助下或老师指导下)创造性地完成试验,严禁抄袭;试验结束,提交试验报告。

基于VISUAL STUDIO.NET平台开展试验,学会如何建立控制台应用的项目工程。

掌握以下语法知识:

(1)数据类型;

(2)运算符、表达式、语句;

(3)数组、字符串、迭代器;

(4)异常处理与预处理指令;

(5)类与接口;

(6)事件与委托。

三、实验内容

任务1 判断每个输入的数是否可被3,5和7整除,并将整除状态输出。 要求:

(1) 掌握VISUAL C#.NET的基本调试技巧。演示调试情况,会跟踪变量的值,

会设置和取消断点,会跟踪如何进入函数内部

(2) 对每个输入数,分别输出对3,5和7的整除状态;

(3) 能实现多次输入输出,最好能有一些输入提示;

(4) 亦可同时输入和处理多个数,并输出多个数的整除状态。

(5) 考虑使用switch或if。

小组成员任务分配:

倪鑫负责用自己的方式编出相应程序,并负责注释程序;

蒋树志负责用自己的方式编出相应程序;

梅傲霜负责用自己的方式编出相应程序;

张希望负责编出相应程序,该报告中使用的程序是是我编写的程序;

2

任务2 练习使用for、while、do while、foreach in等循环语句。

输出字符三角形

A AAA AAAAA AAAAAAA AAAAAAAAA

B BBB BBBBB 输出字符菱形

A AAA AAAAA AAAAAAA AAAAAAAAA AAAAAAA AAAAA AAA A B BBB BBBBB BBB B

输出背靠背字符三角形

W W WW WW WWW WWW WWWW WWWW B B BB BB BBB BBB

输出交替字符倒三角形

STSTS STS S

STSTSTSTSTSTSTSTSTS STSTSTSTSTSTSTSTS STSTSTSTSTSTSTS STSTSTSTSTSTS STSTSTSTSTS STSTSTSTS STSTSTS STSTS STS S

要求:

(1) 上述循环语句至少使用1次; (2) 至少有1题采用了string类实现; (3) 至少有1题采用了集合类实现; 小组成员任务分配:

倪鑫负责用自己的方式编出第三个图形的程序,并负责注释所有程序程序; 梅傲霜负责用自己的方式编出第一、二个图形的程序;

张希望负责用自己的方式编出1-4程序,该报告中使用的程序是是我编写的程序; 任务3 绘图输出y=a*sin(c*x + b) 要求:

3

(1) 系数a, b和c是可以变化的,可考虑是从键盘输入的,或通过Main方法

参数传递的;

(2) x的取值范围在0~4π之间,x,y值采用四舍五入;

提示:根据输入参数,先生成一组数据(x, y),可考虑循环生成,四舍五入;在相应位置输出*或#。

小组成员任务分配:

倪鑫负责配合我方式编出相应程序,并负责注释程序;

张希望负责查阅资料编出相应程序,该报告中使用的程序是张希望编写的程序; * * * * * * * * * * * * * * * * * # # # # # # # # #

四、实验步骤

任务1 判断每个输入的数是否可被3,5和7整除,并将整除状态输出。

(6) 对每个输入数,分别输出对3,5和7的整除状态;

(7) 能实现多次输入输出,最好能有一些输入提示;

(8) 亦可同时输入和处理多个数,并输出多个数的整除状态。

(9) 考虑使用switch 或if。

编写思路:首先得有自负的输入,利用循环语句对每个数字进行相应的处理,并输出结果;

① for (int count = 0; count >= 0; count++)//采用循环的方式,使得用户可以输入无限个数进行判断。

该代码能够实现可同时输入和处理多个数字,并且输出多个数字的整除状态;

② Console.WriteLine("请输入您想要处理的整数:");

4

number = int.Parse(Console.ReadLine());//接收用户输入的字符串,并转换为整型 输入数字,并作相应提示;

③ if (number == 0) break;

设置程序退出功能,避免程序出现无限循环;

④ else {

if (number % 3 == 0)//判断与3相除是否有余数

Console.WriteLine("{0} 可以被3整除。", number); else

Console.WriteLine("{0}不可以被3整除!!!", number); if (number % 5 == 0)//判断与5相除是否有余数

Console.WriteLine("{0} 可以被5整除。", number); else

Console.WriteLine("{0}不可以被5整除!!!", number); if (number % 7 == 0)//判断与7相除是否有余数

Console.WriteLine("{0} 可以被7整除。", number); else

Console.WriteLine("{0}不可以被7整除!!!", number); }

对每个输入数,分别输出对3,5和7的整除状态;

⑤ Console.ReadLine(); 每输出一个结果就另起一行输出结果;

⑥ Console.ReadKey(); 避免程序闪退;

任务2 练习使用for、while、do while、foreach in等循环语句。

输出字符三角形 输出背靠背字符三角形

A

AAA W W

AAAAA WW WW

AAAAAAA

WWW WWW

AAAAAAAAA WWWW WWWW

B B B

BBB

BB BB

BBBBB BBB BBB

输出字符菱形 输出交替字符倒三角形

A STSTS

AAA STS

AAAAA S

AAAAAAA STSTSTSTSTSTSTSTSTS

AAAAAAAAA STSTSTSTSTSTSTSTS

AAAAAAA STSTSTSTSTSTSTS

AAAAA STSTSTSTSTSTS

AAA STSTSTSTSTS

A STSTSTSTS

B STSTSTS

BBB STSTS

BBBBB STS

BBB S

B 5

要求:

(4) 上述循环语句至少使用1次;

(5) 至少有1题采用了string类实现;

(6) 至少有1题采用了集合类实现;

编写思路:首先根据图形的形状选择相应的循环语句,判断是利用直接输出还是利用数组遍历输出图像,然后是利用数学知识处理图像输出的形状;

三角形:

① Console.WriteLine("请输入三角形的行数");

i = int.Parse(Console.ReadLine());//接收用户输入的字符串,并转换为整型 利用输入的行数不同实现输出不同行数的三角形;

② for (int b = 1; b <= i; b++)//b为行数,从第一行开始遍历,直到用户输入的行数 {

for(int a=1;a<=i-b;a++)

{

Console.Write(" ");//图形上输出空格的位置

}

for(int c=1;c<=2*b-1;c++)

{

Console.Write("A");//图形上输出字母的位置

}

利用for循环输出图形中的空格和相应的字符;

③ Console.ReadLine(); 每输出一个结果就另起一行输出结果;

④ Console.ReadKey(); 避免程序闪退;

背靠背字符三角形:

① Console.WriteLine("请输入背靠背字符三角形的行数:");

i = int.Parse(Console.ReadLine());//接收用户输入的字符串,并转换为整型 利用输入的行数不同实现输出不同行数的背靠背三角形;

② for (int b = 1; b <= i; b++)

{

for(int a=1;a<=i-b;a++)

{

Console.Write(" ");//图形最中间的空格位置

}

for(int c=1;c<=2*b-1;c++)

{

if(c==b)

Console.Write(" ");//图形中对成的空格位置

else

Console.Write("w");//图形中对成的w字母位置

}

利用for循环输出图形中的空格和相应的字符;

6

③ Console.ReadLine(); 每输出一个结果就另起一行输出结果;

④ Console.ReadKey(); 避免程序闪退;

菱形:

① Console.WriteLine("请输入菱形的行数:");

i = int.Parse(Console.ReadLine());//接收用户输入的字符串,并转换为整型 利用输入的行数不同实现输出不同行数的菱形;

② for (int b = 1; b <= i; b++)

{

if (b <= (i + 1) / 2)

{

for (int a = 1; a <= (i + 1) / 2 - b; a++)

{

Console.Write(" ");//输出图像上的空格

}

for (int c = 1; c <= 2 * b - 1; c++)

{

Console.Write("A");//输出图像上的字母A

}

}

输出菱形的上半部分图形;

else

{

for (int d = 1; d <= b-(i+1)/2; d++)

{

Console.Write(" ");//对称输出图像上的空格

}

for (int e = 1; e <= 2 * (i - b) + 1; e++)

{

Console.Write("A");//对称输出图像上的字母A

}

}

输出菱形的下半部分;

③ Console.ReadLine(); 每输出一个结果就另起一行输出结果;

④ Console.ReadKey(); 避免程序闪退;

倒三角形:

① Console.WriteLine("请输入倒三角形的行数:");

i = int.Parse(Console.ReadLine());//用于接收用户输入的字符串并转换为整型 利用输入的行数不同实现输出不同行数的倒三角形;

② for (int b = 1; b <= i; b++)

{

for(int a=1;a<b;a++)

{

Console.Write(" ");//输出图像上的空格

}

7

for(int c=1;c<=2*(i-b)+1;c++)

{

if (c% 2 == 1)

Console.Write("S");//输出图像上的s字母

else

Console.Write("T");//输出图像上的t字母

}

利用for循环输出图形中的空格和相应的字符;

③ Console.ReadLine(); 每输出一个结果就另起一行输出结果;

④ Console.ReadKey(); 避免程序闪退;

任务3 绘图输出y=a*sin(c*x + b)

要求:

(3) 系数a, b和c是可以变化的,可考虑是从键盘输入的,或通过Main方法

参数传递的;

(4) x的取值范围在0~4π之间,x,y值采用四舍五入;

提示:根据输入参数,先生成一组数据(x, y),可考虑循环生成,四舍五入;在相应位置输出*或#。

① double a, b, c;

Console.WriteLine("请输入a的值:");

a = double.Parse(Console.ReadLine());//获取a的值

Console.WriteLine("请输入b的值:");

b = double.Parse(Console.ReadLine());//获取b的值

Console.WriteLine("请输入c的值:");

c = double.Parse(Console.ReadLine());//获取c的值

利用输入函数获取参数a、b、c的值;

② a = (int)a;

b = (int)b;

c = (int)c;//分别将a、b、c的值转化为整型

对于获取的a、b、c的值进行整形话处理,减小参数的精度,方便获取y的值;

③ int x = 0,i,j;

string[,] arr = new string[(int)(2 * a + 3), (int)(17 * c)];//定义用来输出值得数组 定义用来输出特殊点的数组;

④ for (i = 0; i < (int)(2 * a + 3); i++)

{

for (j = 0; j < (int)(17 * c); j++)

arr[i, j] = " ";//利用嵌套的for循环语句对数组进行赋值

}

对用来输出特殊点的数组进行初始化赋值;

⑤ for (x = 0; x <= 16; x++)//针对需要输出的点的个数对x进行赋值

{

8

switch (x)

{

case 0: y = 0; break; case 1:

y = 0.5; break; case 2:

y = 0.707; break; case 3:

y = 0.866; break; case 4:

y = 1.0; break; case 5:

y = 0.866; break; case 6:

y = 0.707; break; case 7:

y = 0.5; break; case 8: y = 0; break; case 9:

y = -0.5; break; case 10:

y = -0.707; break; case 11:

y = -0.866; break; case 12:

y = -1.0; break; case 13:

y = -0.866; break;

9

case 14:

y = -0.707;

break;

case 15:

y = -0.5;

break;

case 16:

y = 0;

break;//设置x的特殊点

}

对于三角函数的一个周期有17个特殊点,可以将三角函数的所有点具化(亦可具化9、13个点不等。可以根据需要进行设置);

⑥ y = Math.Abs(a *y-Math.Abs(a));//对所得y值进行处理,以便将其作为输出数组的行值,进行图形的输出;

⑦ if ((y - (int)y) <= 0.5)

y = (int)y;

else y = (int)y + 1;//对y值进行四舍五入处理

⑧ arr[(int)y, x] = "*";//将对应的(x,y)点输出“*”

⑨ for (i = 0; i < (int)(2 * a + 3); i++)

{

for (j = 0; j < (int)(17 * c); j++)

{

Console.Write("{0}", arr[i, j]);//遍历数组输出图形;

⑩ Console.ReadLine(); 每输出一个结果就另起一行输出结果;

11 Console.ReadKey(); 避免程序闪退;

五、实验结果

任务一:程序运行图如下:

处理一个数字如下图;

Cnet实验报告

10

处理多个数字如下图;

Cnet实验报告

任务二:

Cnet实验报告

程序对比图:

根据输入不同的行数可得到不同的图形

Cnet实验报告

:

11

背对背三角形:

Cnet实验报告

根据输入不同的行数可得到不同的背靠背三角形图

形 :

Cnet实验报告

Cnet实验报告

Cnet实验报告

12

菱形:

程序对比图:

根据输入不同的行数可得到不同的菱形图形 :

Cnet实验报告

Cnet实验报告

13

倒置三角形:

程序对比图:

根据输入不同的行数可得到不同的菱形图形

Cnet实验报告

Cnet实验报告

:

Cnet实验报告

14

任务三:

* * *

* *

* *

* * * * * * * * * *

根据输入不同的参数值可以得到不同的三角函数图形:

Cnet实验报告

Cnet实验报告

15

六、实验体会及思考题讨论

实验体会:

通过对Visual C#的学习,熟悉了Visual C#的环境,并能够创建用户界面以及使用一些传统和高级的控件,同时还学会了如何使用数据和连接数据库。

在Visual C#中,使用工具箱来创建让用户能够与程序进行交互的界面,并在事件处理程序中编写代码,使程序可以执行一定的功能。这些是使用Visual C#开发应用程序的基本功能,甚至最复杂的程序也是使用这些基本方法创建的:创建界面,然后添加代码使程序可以执行。当然,编写正确的代码来实现所要求的功能是很复杂的。

在Visual C#中有很多不同的设计窗口,我们首先要学习其中几个设计窗口,比如:如何使用“属性”窗口获取和设置属性,如何使用“解决方案管理器”管理项目,如何使用工具箱添加控件。这些技能是我们以后经常要用到的,对我们以后学习和使用Visual C#会很有帮助的。

对于对象和事件。对象是将数据和功能封装在一起的编程结构,对象有属性,它们描述了对象的特征。有些属性可在设计时使用“属性”窗口进行设置,大部分属性也可用Visual C#代码在运行时设置。在Visual C#中有一个事件驱动的编程模型,事件的发生顺序并并没 16

有预先确定;用户可以通过与程序交互来触发特定的事件(如单击按钮等),从而完全的控制要执行哪些代码。

对于窗体和控件。使用窗体不仅仅是设置属性,窗体是动态的画布,我们可以在上面构建用户界面。没用控件,用户将不能与窗体进行交互。在Visual C#中我们学习了很多控件,比如,文本框控件,标签控件,button控件,image list控件,menu strip控件等。标签控件是用来显示静态文本(用户不能修改的文本),文本框控件用于显示可编辑的文本。Button控件用来触发事件,在button控件中可添加代码。Image list控件是一个很有用的控件,它使得在多个控件之间共享图像更容易。Menu strip控件用来为程序构建菜单,有了菜单栏工具栏能为应用程序提供很大便利。

对于使用用户系统中的数据,我们可以通过使用OpenFileDialog控件和SaveFileDialog控件来打开以及保存用户系统中的文件。

在使用数据库中,学习了两种数据库的连接:一种是OleDBConnection,用于建立到OLEDB数据源的连接;一种是SqlConnection,用于建立到SQL Server数据源的连接。在数据库连接中有三种常用的对象:DataSet,DataTable,DataAdapter。DataSet:数据在内存中的表示;,DataTable:存储数据结果集,用于操作和导航;,DataAdapter:用于填充DataSet。现在很多的应用程序都是用数据库,数据库的应用是很广泛的,想要成为一个优秀的编程人员要熟练掌握数据库编程。

在代码调试过程阶段,对于两种基本错误:编译错误和运行错误(异常)。编译错误比较好解决,因为程序会准确告诉你哪一行有编译错误,而且通常会提供关于如何修正错误的有用信息。而异常错误如果处理不当的话,将使应用程序崩溃。

这学期Visual C#的课程结束了,但Visual C#中有待我们学习的还很多很多,在以后的工作学习中还应该继续学习,不断完善自己。

思考题讨论:

如何添加和移除文件的访问控制列表?

要在文件中添加或从文件中移除访问控制列表 (ACL) 项,必须从文件或目录中获得 FileSecurity 或 DirectorySecurity 对象,对其进行修改,然后重新应用回相应的文件或目录。

在文件中添加或移除 ACL 项

调用 GetAccessControl 方法以获取包含文件的当前 ACL 项的 FileSecurity 对象。 在从步骤 1 返回的 FileSecurity 对象中添加或移除 ACL 项。

将 FileSecurity 对象传递到 SetAccessControl 方法以应用更改。

在目录中添加或移除 ACL 项

调用 GetAccessControl 方法以获取包含目录的当前 ACL 项的 DirectorySecurity 17

对象。

在从步骤 1 返回的 DirectorySecurity 对象中添加或移除 ACL 项。

将 DirectorySecurity 对象传递到 SetAccessControl 方法以应用更改。

示例

using System;

using System.IO;

using System.Security.AccessControl;

namespace FileSystemExample

{

class FileExample

{

public static void Main()

{

try

{

string fileName = "test.xml";

Console.WriteLine("Adding access control entry for " + fileName);

// Add the access control entry to the file.

AddFileSecurity(fileName, @"DomainName\AccountName",

FileSystemRights.ReadData, AccessControlType.Allow); Console.WriteLine("Removing access control entry from " + fileName);

// Remove the access control entry from the file.

RemoveFileSecurity(fileName, @"DomainName\AccountName", FileSystemRights.ReadData, AccessControlType.Allow); Console.WriteLine("Done.");

}

catch (Exception e)

{

Console.WriteLine(e);

}

}

// Adds an ACL entry on the specified file for the specified account. public static void AddFileSecurity(string fileName, string account, FileSystemRights rights, AccessControlType controlType)

{

// Get a FileSecurity object that represents the

// current security settings.

FileSecurity fSecurity = File.GetAccessControl(fileName); // Add the FileSystemAccessRule to the security settings. fSecurity.AddAccessRule(new FileSystemAccessRule(account, rights, controlType));

18

// Set the new access settings.

File.SetAccessControl(fileName, fSecurity);

}

// Removes an ACL entry on the specified file for the specified account. public static void RemoveFileSecurity(string fileName, string account,

FileSystemRights rights, AccessControlType controlType)

{

// Get a FileSecurity object that represents the

// current security settings.

FileSecurity fSecurity = File.GetAccessControl(fileName);

// Add the FileSystemAccessRule to the security settings. fSecurity.RemoveAccessRule(new FileSystemAccessRule(account, rights, controlType));

// Set the new access settings.

File.SetAccessControl(fileName, fSecurity);

}

}

}

七、附件

附件一:(任务一程序代码)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace task_01

{

class Program

{

static void Main(string[] args)

{

int number;

for (int count = 0; count >= 0; count++)//采用循环的方式,使得用户可以输入无限个数进行判断。

{

Console.WriteLine("请输入您想要处理的整数:");

number = int.Parse(Console.ReadLine());//接收用户输入的字符串,并转换为整型

if (number == 0)

19

break;

else

{

if (number % 3 == 0)//判断与3相除是否有余数

Console.WriteLine("{0} 可以被3整除。", number);

else

Console.WriteLine("{0}不可以被3整除!!!", number); if (number % 5 == 0)//判断与5相除是否有余数

Console.WriteLine("{0} 可以被5整除。", number);

else

Console.WriteLine("{0}不可以被5整除!!!", number); if (number % 7 == 0)//判断与7相除是否有余数

Console.WriteLine("{0} 可以被7整除。", number);

else

Console.WriteLine("{0}不可以被7整除!!!", number); }

Console.ReadLine();

}

Console.ReadKey();

}

}

}

附件二:(任务二——三角形程序代码)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace task_0201 三角函数

{

class Program

{

static void Main(string[] args)

{

int i;

Console.WriteLine("请输入三角形的行数");

i = int.Parse(Console.ReadLine());//接收用户输入的字符串,并转换为整型 Console.WriteLine("获得三角形图像如下:");

for (int b = 1; b <= i; b++)//b为行数,从第一行开始遍历,直到用户输入的行数 {

for(int a=1;a<=i-b;a++)

{

Console.Write(" ");//图形上输出空格的位置

20

}

for(int c=1;c<=2*b-1;c++)

{

Console.Write("A");//图形上输出字母的位置

}

Console.WriteLine();

}

Console.ReadKey();

}

}

}

附件三:(任务二——背靠背三角形程序代码)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace task_0202 背靠背三角形

{

class Program

{

static void Main(string[] args)

{

int i;

Console.WriteLine("请输入背靠背字符三角形的行数:");

i = int.Parse(Console.ReadLine());//接收用户输入的字符串,并转换为整型 Console.WriteLine("获得背靠背三角形图像如下:");

for (int b = 1; b <= i; b++)

{

for(int a=1;a<=i-b;a++)

{

Console.Write(" ");//图形最中间的空格位置

21

}

for(int c=1;c<=2*b-1;c++)

{

if(c==b)

Console.Write(" ");//图形中对成的空格位置

else

Console.Write("w");//图形中对成的w字母位置

}

Console.WriteLine();

}

Console.ReadKey();

}

}

}

附件四:(任务二——菱形程序代码)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace task_0203 菱形

{

class Program

{

static void Main(string[] args)

{

int i;

Console.WriteLine("请输入菱形的行数:");

i = int.Parse(Console.ReadLine());//接收用户输入的字符串,并转换为整型 Console.WriteLine("获得菱形图像如下:");

for (int b = 1; b <= i; b++)

{

if (b <= (i + 1) / 2)

{

for (int a = 1; a <= (i + 1) / 2 - b; a++)

{

Console.Write(" ");//输出图像上的空格

22

}

for (int c = 1; c <= 2 * b - 1; c++)

{

Console.Write("A");//输出图像上的字母A

}

}

else{

for (int d = 1; d <= b-(i+1)/2; d++)

{

Console.Write(" ");//对称输出图像上的空格

}

for (int e = 1; e <= 2 * (i - b) + 1; e++)

{

Console.Write("A");//对称输出图像上的字母A

}

}

Console.WriteLine();

}

Console.ReadKey();

}

}

}

附件五:(任务二——倒置三角形程序代码)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace task_0204 倒置三角形

{

class Program

{

static void Main(string[] args)

{

int i;

Console.WriteLine("请输入倒三角形的行数:");

i = int.Parse(Console.ReadLine());//用于接收用户输入的字符串并转换为整型 Console.WriteLine("获得倒置三角形图像如下:");

for (int b = 1; b <= i; b++)

{

for(int a=1;a<b;a++)

{

Console.Write(" ");//输出图像上的空格

23

}

for(int c=1;c<=2*(i-b)+1;c++)

{

if (c% 2 == 1)

Console.Write("S");//输出图像上的s字母 else

Console.Write("T");//输出图像上的t字母 }

Console.WriteLine();

}

Console.ReadKey();

}

}

}

附件六:(任务三——三角函数程序代码)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace task_03 三角函数

{

class Program

{

static void Main(string[] args)

{

double a, b, c;

Console.WriteLine("请输入a的值:");

a = double.Parse(Console.ReadLine());//获取a的值 Console.WriteLine("请输入b的值:");

b = double.Parse(Console.ReadLine());//获取b的值 Console.WriteLine("请输入c的值:");

c = double.Parse(Console.ReadLine());//获取c的值 Console.WriteLine("获得三角函数图像如下:"); a = (int)a;

b = (int)b;

24

c = (int)c;//分别将a、b、c的值转化为整型

int x = 0,i,j;

string[,] arr = new string[(int)(2 * a + 3), (int)(17 * c)];//定义用来输出值得数组 double y = 0.0;

for (i = 0; i < (int)(2 * a + 3); i++)

{

for (j = 0; j < (int)(17 * c); j++)

arr[i, j] = " ";//利用嵌套的for循环语句对数组进行赋值

}

for (x = 0; x <= 16; x++)//针对需要输出的点的个数对x进行赋值

{

switch (x)

{

case 0:

y = 0;

break;

case 1:

y = 0.5;

break;

case 2:

y = 0.707;

break;

case 3:

y = 0.866;

break;

case 4:

y = 1.0;

break;

case 5:

y = 0.866;

break;

case 6:

y = 0.707;

break;

case 7:

y = 0.5;

break;

case 8:

y = 0;

break;

case 9:

y = -0.5;

break;

case 10:

25

y = -0.707;

break;

case 11:

y = -0.866;

break;

case 12:

y = -1.0;

break;

case 13:

y = -0.866;

break;

case 14:

y = -0.707;

break;

case 15:

y = -0.5;

break;

case 16:

y = 0;

break;//设置x的特殊点

}

y = Math.Abs(a *y-Math.Abs(a));//对所得y值进行处理,以便将其作为输出数组的行值,进行图形的输出;

if ((y - (int)y) <= 0.5)

y = (int)y;

else y = (int)y + 1;//对y值进行四舍五入处理

arr[(int)y, x] = "*";//将对应的(x,y)点输出“*”

}

for (i = 0; i < (int)(2 * a + 3); i++)

{

for (j = 0; j < (int)(17 * c); j++)

{

Console.Write("{0}", arr[i, j]);//遍历数组输出图形;

}

Console.WriteLine();

}

Console.ReadKey();

}

}

}

26

相关推荐