1.1 问题描述
- 编写程序输出任意两个数之间的素数、指定数的倍数。输入两个数值,一个起始数值,一个终止数值,指定输出数值类型,如果是素数,则输出两个数值之间的所有素数;如果选择倍数,再输入一个因子,输出两个数值之间的所有因子倍数。每行输出4个数。
比如,输入
起始数值:1
终止数值:10
选择素数输出:2 3 5 7
选择倍数
输入因子:3
选择倍数整数:3 6 9
1.2 解题思路
(问题分析,解题思路。(正文均为小四号,宋体))首先必须在在区间内的这段编程给限定好.在选择第一小问,选择素数输出,期间必须考虑到除去1这个数,后面进行判明素数.在第二小问,选择倍数输出,考虑的问题,是每行输出4个数,所以必须进行每行4个数限定。重中之重,注意辨别非法输入,如输入字母,字母等,我是利用异常处理使用 try、catch 和 finally 关键字尝试操作。
1.3 程序设计
(程序设计。列出各项本设计要达到的具体的目标。(正文均为小四号,宋体))
Prime窗体是实现选择素数输出的功能
第一,代码中需编写判断素数的功能。
第二,需要判断输入非法字符。
第三,需要设置每行四个输出。
Integer窗体是选整数倍数倍数输出的功能。
第一,代码中需判断是输入的数其倍数。
第二,需要判断输入非法字符。
第三,需要设置每行四个输出。
1.4 测试结果
1.测试方法:利用C#语言中window窗体来实现
2.关键功能测试的实现过程
创建2个窗体,分别为实现选择素数输出的功能的Prime窗体,实现选整数倍数倍数输出的功能的Integer窗体。在调用主窗体MainForm,实现其功能!
3.关键代码
(1)Forms文件夹中的窗体:
①Integer窗体
{
public partial class Integer : Form
{
public Integer()
{
InitializeComponent();
}
private void buttoncancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void buttonok_Click(object sender, EventArgs e)
{
textBoxResult.Clear();
try
{
int a = int.Parse(textBox1.Text);
int b = int.Parse(textBox2.Text);
int c = int.Parse(textBox3.Text);
int i;
int count = 0;
for (i = a; i < b+1;i++)
{ //这里从a到b的区间
if (i % c == 0)
{
if (count % 4 == 0 && count > 0)
{ Console.WriteLine(); }
textBoxResult.Text += string.Format(i.ToString() + " ");
count++;
}
}
}
catch (Exception err)
{
textBoxResult.Text += "出错了:" + err.Message + Environment.NewLine;
}
finally
{
textBoxResult.Text += "\r\n再见" + Environment.NewLine;
}
}
}
}
②Prime窗体
{
public partial class Prime : Form
{
public Prime()
{
InitializeComponent();
}
public static Boolean isPrime(int a)
{
Boolean tag = true;
if (a == 1)
tag = false;
else
{
for (int i = 2; i <= Math.Sqrt(a); i++)
{
if (a % i == 0)
{
tag = false;
break;
}
}
}
return tag;
}
private void button1_Click(object sender, EventArgs e)
{
textBoxResult.Clear();
try
{
int a = int.Parse(textBox1.Text);
int b = int.Parse(textBox2.Text);
int count = 0;
for (int i = a; i < b; i++)
{
if (isPrime(i))
{
count++;
if (count % 4 == 0 && count > 0)
Console.WriteLine();
textBoxResult.Text += string.Format(i.ToString() + " ");
}
}
}
catch (Exception err)
{
textBoxResult.Text += "出错了:" + err.Message + Environment.NewLine;
}
finally
{
textBoxResult.Text += "\r\n再见" + Environment.NewLine;
}
}
private void buttonCancel_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
(2)主窗体MainForm
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
buttonOK.Click += buttonOK_Click;
this.StartPosition = FormStartPosition.CenterScreen;
}
void buttonOK_Click(object sender, EventArgs e)
{
foreach (var v in groupBox1.Controls)
{
RadioButton r = v as RadioButton;
if (r.Checked == true) ShowExample(r.Name);
}
}
private void ShowExample(string name)
{
Form fm = null;
switch (name)
{
case "sushu": fm = new Prime(); break;
case "zhengshu": fm = new Integer(); break;
}
if (fm != null)
{
fm.Owner = this;
fm.StartPosition = FormStartPosition.CenterParent;
fm.ShowDialog(this);
}
else
{
MessageBox.Show("未找到对应示例!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
4.测试结果