黑马程序员技术交流社区

标题: 考试题疑问请专家解答 [打印本页]

作者: 马振伟    时间: 2014-8-2 19:41
标题: 考试题疑问请专家解答
本帖最后由 马振伟 于 2014-8-3 01:37 编辑

9、 在label控件中随机输入20个1~1000之间的整数,求出其中所有的素数的和。
label控件也能随机输入么??
请有经验的专家给予解答
作者: 流失的温度0    时间: 2014-8-2 22:00
本帖最后由 流失的温度0 于 2014-8-2 22:09 编辑

图片里是基本的布局,20个label控件,所有信息都是默认。
然后两个button按键。只改掉了text属性。
下面是赋值按钮里的代码:

// 赋值按钮的代码。
Random rd=new Random();
foreach (Control c in this.Controls)// 遍历界面上的所有控件。
{
    if (c is Label) // 如果控件为label控件,则开始赋值。
    {
        c.Text = rd.Next(1,1001).ToString();// 通过随机数方式给每个label赋值(Text属性)。
    }
}


下面是计算按钮里的代码:
// 计算按钮里的代码。
int sum = 0;
string temp = "素数有:\n";
foreach (Control c in this.Controls)
{
    if (c is Label)
    {
        temp = temp + (IsPrime(c.Text) == 0 ? "" : IsPrime(c.Text).ToString() + "\n");
        sum += IsPrime(c.Text);
    }
}
temp = temp + "\n和为:\n" + sum.ToString();
MessageBox.Show(temp);


还有一个Isprime方法,是校验是否是素数的方法。
/// <summary>
/// 校验一个字符串是否可以转换为素数。
/// </summary>
/// <param name="str"></param>
/// <returns>若可以转换为素数,则返回,否则返回0。</returns>
private int IsPrime(string str)
{
    int res = 0;      // 用于存放每一次校验的返回结果。不是素数则赋值0并且返回。
    int count = 0; // 用于计数。
    if (int.TryParse(str, out res))
    {
        for (int i = 1; i <= res/2; i++)// 从1到当前被校验的数字的一半,能被整除的话计数就自增1。
        {
            if (res%i == 0)
            {
                count++;
            }
        }
        if (count > 1) // 判断,如果被整除次数大于1,说明不是素数。将res重新置为0返回。
        {
            res = 0;
        }
    }
    return res;
}

QQ截图20140802204235.png (5.55 KB, 下载次数: 19)

QQ截图20140802204235.png

作者: 流失的温度0    时间: 2014-8-2 22:12
下面是效果演示。
先点赋值,然后点计算。

QQ截图20140802221141.png (7.76 KB, 下载次数: 19)

QQ截图20140802221141.png

作者: 马振伟    时间: 2014-8-2 23:00
流失的温度0 发表于 2014-8-2 22:00
图片里是基本的布局,20个label控件,所有信息都是默认。
然后两个button按键。只改掉了text属性。
下面是 ...

原来是弄20个控件我以为要用一个控件输入我晕球了
作者: 赵贺景    时间: 2014-8-2 23:35
一个lable 也可以啊   用 \r\n  每五个数据 换行一次就行
作者: rende1991    时间: 2014-8-3 00:12
路过 学习
作者: 马振伟    时间: 2014-8-3 01:26
赵贺景 发表于 2014-8-2 23:35
一个lable 也可以啊   用 \r\n  每五个数据 换行一次就行

用一个控件大把的问题你怎么控制次数你怎一个一个输入的随机数字显示出来
作者: 马振伟    时间: 2014-8-3 01:37
流失的温度0 发表于 2014-8-2 22:00
图片里是基本的布局,20个label控件,所有信息都是默认。
然后两个button按键。只改掉了text属性。
下面是 ...

非常感谢你的回答你的程序有个小BUG随机数应该是next(2,1001)或者1单独判断        1不是质数哦
看到你写的代码唯有拜服!  谢谢你教会了我遍历控件
作者: 流失的温度0    时间: 2014-8-3 09:33
马振伟 发表于 2014-8-3 01:37
非常感谢你的回答你的程序有个小BUG随机数应该是next(2,1001)或者1单独判断        1不是质数哦
看到你 ...

代码只是思路吧,具体情况没考虑,比如说程序的严谨性,还有比如说没赋值直接点计算的情况都没有考虑。
拜服不敢当,共同学习共同进步吧。:lol
作者: 马振伟    时间: 2014-8-3 09:38
流失的温度0 发表于 2014-8-3 09:33
代码只是思路吧,具体情况没考虑,比如说程序的严谨性,还有比如说没赋值直接点计算的情况都没有考虑。
...

我又发了个帖子能帮我解决下么




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2