学会用另一种途径去解决编程问题

一、依序遍历0到100闭区间内所有的正整数,如果该数字能被3整除,则输出该数字及‘*’标记;如果该数字能被5整除,则输出该数字及‘#’标记;如果该数字既能被3整除又能被5整除,则输出该数字及‘*#’标记。

参考方法:

public void Foo()
        {
            Console.WriteLine("0 *#");
            for (int i = 1; i < 100 / 3 + 1; i++)
            {
                if (i * 3 <= 100)
                {
                    if (i % 5 == 0)
                    {
                        Console.WriteLine(i * 3 + " *#");
                    }
                    else
                    {
                        Console.WriteLine(i * 3 + " *");
                    }
                }
                if (i * 5 <= 100)
                {
                    if (i % 3 != 0)
                    {
                        Console.WriteLine(i * 5 + " #");
                    }
                }
            }
        }
public void Foo()
{
    Int32 a, b;
    for (int i = 0; i < 100;)
    {
        a = i % 3;
        b = i % 5;
 
        String str = i.ToString();
        if (a == 0)
        {
            str += "*";
        }
        if (b == 0)
        {
            str += "#";
        }
        Console.WriteLine(str);
        i += Math.Min(3 - a, 5 - b);
    }
}

2、求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m

1
2
3
4
5
6
private int sum(int n){
    if (n%2==0)
        return -n/2;
    else
        return -n/2+1;
}

3.编写一个数组,长度为100, 然后插入[1,100]的数字 不能重复

看到题目可能会想到的是2个for循环然后插入数据,或是用[1,100]的随机数插入,其实最好的方法是用洗牌算法来实现。网上关于这方面的也很多,我就不班门弄斧了。

链接如下:

洗牌程序的两种实现方法比较

posted @ 2014-04-28 10:35  roilat  阅读(124)  评论(0)    收藏  举报