超级经典的题目,学编程的不一定搞的定!
一、找出最小的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#中根本就是两码事... --------------------编程问答--------------------
哦。弄错了。忘记dos通配符的?和*的意思了。修改一下。
string a = "*A?";--------------------编程问答-------------------- 第一题:找最小的n,只想到了把质数筛出来,然后遍历一遍,当做预处理的方法,不是最小的话可以用n!来构造。
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!");
}
第二题: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.使用栈。遇到左括号进栈,遇到右括号出栈对比。 --------------------编程问答--------------------
+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#