A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马振伟 中级黑马   /  2014-8-2 19:41  /  1438 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 马振伟 于 2014-8-3 01:37 编辑

9、 在label控件中随机输入20个1~1000之间的整数,求出其中所有的素数的和。
label控件也能随机输入么??
请有经验的专家给予解答

9 个回复

正序浏览
流失的温度0 发表于 2014-8-3 09:33
代码只是思路吧,具体情况没考虑,比如说程序的严谨性,还有比如说没赋值直接点计算的情况都没有考虑。
...

我又发了个帖子能帮我解决下么
回复 使用道具 举报
马振伟 发表于 2014-8-3 01:37
非常感谢你的回答你的程序有个小BUG随机数应该是next(2,1001)或者1单独判断        1不是质数哦
看到你 ...

代码只是思路吧,具体情况没考虑,比如说程序的严谨性,还有比如说没赋值直接点计算的情况都没有考虑。
拜服不敢当,共同学习共同进步吧。:lol
回复 使用道具 举报
流失的温度0 发表于 2014-8-2 22:00
图片里是基本的布局,20个label控件,所有信息都是默认。
然后两个button按键。只改掉了text属性。
下面是 ...

非常感谢你的回答你的程序有个小BUG随机数应该是next(2,1001)或者1单独判断        1不是质数哦
看到你写的代码唯有拜服!  谢谢你教会了我遍历控件
回复 使用道具 举报
赵贺景 发表于 2014-8-2 23:35
一个lable 也可以啊   用 \r\n  每五个数据 换行一次就行

用一个控件大把的问题你怎么控制次数你怎一个一个输入的随机数字显示出来
回复 使用道具 举报
路过 学习
回复 使用道具 举报
一个lable 也可以啊   用 \r\n  每五个数据 换行一次就行
回复 使用道具 举报
流失的温度0 发表于 2014-8-2 22:00
图片里是基本的布局,20个label控件,所有信息都是默认。
然后两个button按键。只改掉了text属性。
下面是 ...

原来是弄20个控件我以为要用一个控件输入我晕球了
回复 使用道具 举报
下面是效果演示。
先点赋值,然后点计算。

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

QQ截图20140802221141.png
回复 使用道具 举报
本帖最后由 流失的温度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, 下载次数: 20)

QQ截图20140802204235.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马