【目录】
一、实验目的................................................................................................................ 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(); 避免程序闪退;
五、实验结果
任务一:程序运行图如下:
处理一个数字如下图;
10
处理多个数字如下图;
任务二:
程序对比图:
根据输入不同的行数可得到不同的图形
:
11
背对背三角形:
根据输入不同的行数可得到不同的背靠背三角形图
形 :
12
菱形:
程序对比图:
根据输入不同的行数可得到不同的菱形图形 :
13
倒置三角形:
程序对比图:
根据输入不同的行数可得到不同的菱形图形
:
14
任务三:
* * *
* *
* *
* * * * * * * * * *
根据输入不同的参数值可以得到不同的三角函数图形:
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
实验报告学院系名称计算机与通信工程学院第1页共9页第2页共9页第3页共9页第4页共9页第5页共9页第6页共9页第7页共9页第8页共…
实验一环境配置与sql操作学号姓名日期20xx年11月251实验目的熟悉VS20xx开发环境复习C和SQL20xx相关操作2实验环…
NET上机实验报告WEB数据库应用程序设计姓名杨森班级计103学号10101020xx2实验成绩一实验目的通过对aspnet学习完…
燕山大学Net程序设计实验报告学院信息科学与工程学院年级专业08级计算机科学2班指导教师崔永强学生学号080104010108学生…
河南城建学院网站建设技术实验报告实验名称用户名密码登录切图制作网站专业班级软件工程姓名吴春龙学号084413147实验日期20xx…
20xx13137028陈旻实计科1301ASPNET网站开发实验指导老师柯鹏学院计算机学院学生姓名陈旻实学生学号20xx1313…
实验一1实验要求基本的网页制作2目的掌握HTML与ASPX基础联系制作基本的ASPNET网页使用VS20xx提供的导航控件并结合站…
实验一环境配置与sql操作学号姓名日期1实验目的熟悉VS20xx开发环境复习C和SQL20xx相关操作2实验环境WindowsXP…
燕山大学Net程序设计实验报告学院信息科学与工程学院年级专业09级信息安全1班指导教师崔永强学生学号090104070017学生姓…
丽水职业技术学院机电信息分院课程实训基于ASP.NET旅游导购网站的设计与开发学生学号:学生姓名:实训老师:班级信管1222专业名…