当前位置:编程学习 > C#/ASP.NET >>

超级经典的题目,学编程的不一定搞的定!


一、找出最小的N个连续的是合数的正整数。(0<Nអ) 
例如:N=5时,最小的5个连续的合数是:24,25,26,27,28 
输出格式为:N=5 ===ᡐ..28 

二、键入两个数字串A$和B$(两者都是少于20位数的正整数,且数字串中0 
的个数最多只有一个),要求在数串A$中插入若干个“+”号,使之形成的加法算式的 
结果等B$,要求输出所有合格的算式,如果无解,则应显示“NO!” 
例如:A$=“12345” B$=“240” 
输出为:1+234+5 




三 、键入一个字符表达式,式中可能含有三种括号,即:()、[]、{}。请 
检查式中的括号是否配对,若配对正确,则输出“Right!”,否则输出“Error!”。 
例如: 输入:ab(a[+b)] 输出:Error!(不允许括号交叉) 
输入:bd(a+[b]{})输出:Right!(三种括号内外次序不限) 

四、键入自然数N,打印出一个上下左右全方位对称的字符图形,其形如田 
字,边长2*N+1个字符,笔划均按字母顺序递增或递减对称排列。 
例如:N=3时,图形为: ABCDCBA 
B C B 
C B C 
DCBABCD 
C B C 
B C B 
ABCDCBA 

五、键入两个自然数N和K,将N写成K个大于1的自然数乘式,要求这K个数按 
从小到大排列,而且除了第K个数之外,前面(K-1)个数是可分解的最小自然数。 
例如:N=24,K=2时,输出为24=2*12,而不是24=4*6 
N=3,K=2时,输出则为“No answer!” 

六、在DOS命令中,通配符“*”可表示多个(也可为0个)任意字符, 
“?”可表示任意一个字符。现输入两个字符串A$和B$,A$中可能含有一个“*”和 
多个“?”,而B$中则不含任何通配符。请判断A$是否能代表B$,若能,则输出 
“Yes!”,否则输出“NO!“。 
例如:A$=“*A?”,B$=“CBAH”则输出Yes! 
--------------------编程问答-------------------- 又是作业题? --------------------编程问答--------------------    不是...就是挑战自己而已... --------------------编程问答-------------------- --------------------编程问答--------------------    哪个老师出这作业题,他的学生会死的很惨的...呵呵 --------------------编程问答--------------------     就是和大家讨论讨论方法和思路而已,我学的是C#...想看看C++,C或其他奇思妙想的解法... --------------------编程问答--------------------     有思路的来看看,讨论讨论想法,答案不重要! --------------------编程问答-------------------- 快下班了,哪来心情搞头脑风暴阿 --------------------编程问答-------------------- --------------------编程问答--------------------       抽空看看...要相信自己!!!(用这些题目顺便寻找以后的.net合作伙伴...呵呵) --------------------编程问答--------------------
挑战成功! --------------------编程问答-------------------- 六、在DOS命令中,通配符“*”可表示多个(也可为0个)任意字符,  
“?”可表示任意一个字符。现输入两个字符串A$和B$,A$中可能含有一个“*”和  
多个“?”,而B$中则不含任何通配符。请判断A$是否能代表B$,若能,则输出  
“Yes!”,否则输出“NO!“。  
例如:A$=“*A?”,B$=“CBAH”则输出Yes! 


string a = "*A?";
string b = "CBAH";
a = Regex.Replace(a, "[*?]", ".$&?");
if (Regex.Match(b, a).Success)
{
    MessageBox.Show("yes!");
}
else
{
    MessageBox.Show("nooooooooo!");
}
--------------------编程问答-------------------- 果然有点难度,合合 --------------------编程问答-------------------- 搞编程的不一定搞数学,搞数学的不一定搞编程 --------------------编程问答--------------------    逻辑数学不分家! --------------------编程问答--------------------    十一楼的答案欠佳...
   如果是这样:
   string a = "*A?";
string b = "CBAH";
a = Regex.Replace(a, "[*?]", ".$&?");
if (Regex.Match(b, a).Success)
{
    MessageBox.Show("yes!");
}
else
{
    MessageBox.Show("nooooooooo!");
}

那么*A?和 CBA匹配不?显然不行,因为A字母后还必须有一个任意字符...

--------------------编程问答-------------------- --------------------编程问答-------------------- 挑战自己啊?那你先给你你写程序,我们再来斧正好了。O(∩_∩)O~ --------------------编程问答--------------------       还不是想看看高手怎么解决问题的,免得走误区,以前用JS实现过...但好多对象在C#中根本就是两码事... --------------------编程问答--------------------
引用楼主 dreamway21 的回复:
一、找出最小的N个连续的是合数的正整数。(0<Nអ) 
例如:N=5时,最小的5个连续的合数是:24,25,26,27,28 
输出格式为:N=5 ===ᡐ..28 

二、键入两个数字串A$和B$(两者都是少于20位数的正整数,且数字串中0 
的个数最多只有一个),要求在数串A$中插入若干个“+”号,使之形成的加法算式的 
结果等B$,要求输出所有合格的算式,如果无解,则应显示“NO……


哦。弄错了。忘记dos通配符的?和*的意思了。修改一下。

string a = "*A?";
string b = "CBAH";
a = Regex.Replace(a, "[*?]", (m) => { return m.Value == "*" ? ".{0,}" : "."; });
if (Regex.Match(b, a).Success)
{
    MessageBox.Show("yes!");
}
else
{
    MessageBox.Show("nooooooooo!");
}
--------------------编程问答-------------------- 第一题:找最小的n,只想到了把质数筛出来,然后遍历一遍,当做预处理的方法,不是最小的话可以用n!来构造。

第二题:20位的话,运算量还可以不会超过2^19,用DataTable的Comput似乎就可以了。

第三题:用栈做就可以,比较简单

第五题:似乎就是因式分解。 --------------------编程问答-------------------- 第一题
 static void Main()
  {
      
      int i = 0;//从0开始测试
      int k = 7;//连续数的长度
      while (Seek(k, i)== null)
      {
          i++;
      }
      for (int j = 0; j < k; j++)
      {
          Console.Write(i + j);

          Console.Write("\t");
      }

      Console.WriteLine("\r\n");

      Console.ReadLine();
  }

   public static int[] Seek(int i,int j)
    {
        bool Result = true;
        int[] result = new int[i];
        if(i<=0)
        {
            return null;
        }
        else if (i == 1)
        {
            return new int[1] { 4 };
        }
        else
        {
            for (int k = 0; k < i; k++)
            {
                if (IsPrime(j + k))
                {
                    Result = false;

                    break;
                }
            }
            if (Result == true)
            {
                for (int s = 0; s < i; s++)
                {
                    result[s] = j + s;
                }

                return result;
            }
            else
            {
                return null;
            }
        }
    }

    public static bool IsPrime(int number)
    {
        if (number < 2)
        {
            return true;
        }
        else
        {
            for (int i = 2; i <= Math.Sqrt(number); i++)
            {
                if (number % i == 0)
                {
                    return false;
                }
            }
        }
        return true;
    }
--------------------编程问答-------------------- 这些东西给教书的人做算了!
我们只关心如何能产生经济效益!
--------------------编程问答-------------------- 有意思吗? --------------------编程问答-------------------- 郁闷,又是这种题目 --------------------编程问答-------------------- 1.先申请一个结构体:
struct data
{
  int n; //表示质数的数字
  int s; //表示此质数之后有几个合数
};

然后计算整串数字的质数和质数后面连续的合数数量,再根据质数后面合数数量排序,最后输出质数。
--------------------编程问答-------------------- 3.使用栈。遇到左括号进栈,遇到右括号出栈对比。 --------------------编程问答--------------------
引用 22 楼 flyerwing 的回复:
这些东西给教书的人做算了!
我们只关心如何能产生经济效益!

+1 --------------------编程问答-------------------- 难度有点大。 --------------------编程问答-------------------- 学习下…… --------------------编程问答-------------------- 拿去面试,遍地死尸 --------------------编程问答--------------------
没啥意义,不怎想做。。。

顺便说下,楼主第一题用队列就可以解决,栈顶指针指到一个数,就拿去除小于本数的质数,除尽就出队,再用栈顶指针除小于本数的质数,除不尽,栈顶指针++,累积队长为N即可。 --------------------编程问答--------------------             int mark = 0;
            int length = 5;
            int i,j;
            
            for ( i = 4; i < 100; i++)
            {
                for (j = 2; j <= i / 2; j++)
                {
                    if (i % j == 0)
                    {
                        mark++;
                        break;
                    }
                }
                if (i % j == 0)
                {
                    if (mark == length)
                    {
                        break;
                    }
                }
                else
                {
                    mark = 0;
                }
            
            }
            for (int u = 0; u < length; u++)
            {
                Console.Write((i - u)+ "   " );
            }

这是第一题。for里面的100可以手动改变 --------------------编程问答-------------------- 代码没时间写了,先说说算法

一、找出最小的N个连续的是合数的正整数。
从最小素数遍历素数,后一个素数比前一个大超过n的,他们之间的合数,就是所要的

第二题是组合问题
如字符串为 1 2 3 4 5
则每2个数字之间的+可以1,0表示,1表示有,0表示无,就归结为二进制数,有
从0遍历到2^(n-1),用穷举法尝试即可

第三题用栈处理
遇到(,[,{压栈
遇到),],}弹出,判断和弹出值是否匹配即可

第四题没看懂

第五题,先穷举出所有约数,约数为合数的,继续递归计算即可

第六题不会
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,