一日一题

无灬言

来自: 无灬言
2013-06-13 10:28:44

×
加入小组后即可参加投票
  • 无灬言

    无灬言 楼主 2013-06-13 10:30:34

    第一题:开灯问题 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号。k≤n≤1000

    例如:输入 7 3 输出 1 5 6 7

  • 无灬言

    无灬言 楼主 2013-06-13 10:58:07

    #include <stdio.h> #include <math.h> int main() { int a[1001],n,k,i,j; printf("请分别输入灯和人的数量\n"); scanf("%d%d",&n,&k);

    while(1) //检验是否超出 { if(k>=1 && k<=1000 && n>=k && n<=1000) break; else { printf("数值不符,请重新输入:\n"); scanf("%d%d",&n,&k); } } for(i=2;i<=k;i++) //每操作一次第i*j个开关,a[i*j]加1 { for(j=1;i*j<=n;j++) { a[i*j]=a[i*j]+1; } }

    for(i=1;i&lt;=n;i++) //若操作次数为偶数,表示该位置的灯亮着 { if(a[i]%2==0 &amp;&amp; a[i]!=0) printf(&quot;%d\t&quot;,i); }

    printf("\n"); return 0;

    }

  • 无灬言

    无灬言 楼主 2013-06-13 11:01:45

    自己测了觉得没问题..在线系统结果是WrongAnswer ..未找出原因..

  • Woodrow

    Woodrow 2013-06-13 11:47:23

    自己测了觉得没问题..在线系统结果是WrongAnswer ..未找出原因.. 自己测了觉得没问题..在线系统结果是WrongAnswer ..未找出原因.. 无灬言

    写了一个,结果正确。晚上用电脑时再发给你吧。

  • 无灬言

    无灬言 楼主 2013-06-13 12:19:47

    写了一个,结果正确。晚上用电脑时再发给你吧。 写了一个,结果正确。晚上用电脑时再发给你吧。 Woodrow

    好的~谢谢~

  • [已注销]

    [已注销] 2013-06-13 17:29:38

    [内容不可见]

  • [已注销]

    [已注销] 2013-06-13 18:40:25

    第一题:开灯问题 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的 第一题:开灯问题 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号。k≤n≤1000 例如:输入 7 3 输出 1 5 6 7 ... 无灬言

    [内容不可见]

  • 无灬言

    无灬言 楼主 2013-06-13 19:08:47

    [内容不可见] [内容不可见] [已注销]

    哈哈哈,会有这么一天的~~怕是要等些时日~~

  • 无灬言

    无灬言 楼主 2013-06-13 19:10:17

    [内容不可见] [内容不可见] [已注销]

    原题是有时间限制的,露珠猜可能是因为这个+_+

  • 枫然抹抹

    枫然抹抹 2013-06-13 19:19:39

    LZ在哪刷题

  • 无灬言

    无灬言 楼主 2013-06-14 09:06:40

    LZ在哪刷题 LZ在哪刷题 枫然抹抹

    在一个理工学院的oj上面~

  • 无灬言

    无灬言 楼主 2013-06-14 09:14:24

    第二题:另一种阶乘 大家都知道阶乘这个概念,举个简单的例子:5!=12345.现在我们引入一种新的阶乘概念,将原来的每个数相乘变为i不大于n的所有奇数相乘例如:5!!=135.现在明白现在这种阶乘的意思了吧!

    现在你的任务是求出1!!+2!!......+n!!的正确值(n&lt;=20)

  • 无灬言

    无灬言 楼主 2013-06-14 09:51:31

    #include &lt;stdio.h&gt; int main() { int n,i,j,temp,sum; int a[20]; int factorial(int x); printf(&quot;你想输入几组数据?\n&quot;); scanf(&quot;%d&quot;,&amp;n); printf(&quot;请输入具体数值(1~20):\n&quot;);

    for(i=0;i<n;i++) //输入数值 { scanf("%d",&a[i]); while(1) //检验是否超出数值范围 { if(a[i]>0 && a[i]<=20) break; else { printf("超出范围,请重新输入\n"); scanf("%d",&a[i]); } } } for(i=0;i<n;i++) //求阶乘之和 { sum = 0; for(j=1;j<=a[i];j++) { temp=factorial(j); sum=sum+temp; } printf("%d\n",sum); } return 0;

    }

    int factorial(int x) //求某一个整数X的阶乘 { int i,temp; for(i=1,temp=1;i&lt;=x;i+=2) { temp=temp*i; }

    return (temp);

    }

  • 无灬言

    无灬言 楼主 2013-06-14 09:53:58

    ok~pass~

  • 枫然抹抹

    枫然抹抹 2013-06-14 10:14:35

    在一个理工学院的oj上面~ 在一个理工学院的oj上面~ 无灬言

    我在南阳理工 。把你地址发来,每天和你一起刷。

  • 无灬言

    无灬言 楼主 2013-06-14 10:26:02

    我在南阳理工 。把你地址发来,每天和你一起刷。 我在南阳理工 。把你地址发来,每天和你一起刷。 枫然抹抹

    真不巧,我也是这个0.0 我这还有一个,你要是高兴也可以去这边刷 http://acm.zju.edu.cn/onlinejudge/showProblems.do?contestId=1&amp;amp;pageNumber=1

  • 黑眼睛

    黑眼睛 2013-06-14 15:52:28

    怎麼不刷了啊

  • Woodrow

    Woodrow 2013-06-14 15:53:00

    #include &lt;stdio.h&gt; int main() { int n,i,j,temp,sum; int a[20]; int factorial #include &lt;stdio.h&gt; int main() { int n,i,j,temp,sum; int a[20]; int factorial(int x); printf(&quot;你想输入几组数据?\n&quot;); scanf(&quot;%d&quot;,&amp;n); printf(&quot;请输入具体数值(1~20):\n&quot;); for(i=0;i&lt;n;i++) //输入数值 { scanf(&quot;%d&quot;,&amp;a[i]); while(1) //检验是否超出数值范围 { if(a[i]&gt;0 &amp;&amp; a[i]&lt;=20) break; else { printf(&quot;超出范围,请重新输入\n&quot;); scanf(&quot;%d&quot;,&amp;a[i]); } } } for(i=0;i&lt;n;i++) //求阶乘之和 { sum = 0; for(j=1;j&lt;=a[i];j++) { temp=factorial(j); sum=sum+temp; } printf(&quot;%d\n&quot;,sum); } return 0; } int factorial(int x) //求某一个整数X的阶乘 { int i,temp; for(i=1,temp=1;i&lt;=x;i+=2) { temp=temp*i; } return (temp); } ... 无灬言

    我写的: http://codepad.org/6tCJx4Rj

    另, 换个地方贴代码吧~ 豆瓣实在是不适合贴代码.

  • Woodrow

    Woodrow 2013-06-14 16:10:47

    第二题:另一种阶乘 大家都知道阶乘这个概念,举个简单的例子:5!=1*2*3*4*5.现在我们引入一种 第二题:另一种阶乘 大家都知道阶乘这个概念,举个简单的例子:5!=1*2*3*4*5.现在我们引入一种新的阶乘概念,将原来的每个数相乘变为i不大于n的所有奇数相乘例如:5!!=1*3*5.现在明白现在这种阶乘的意思了吧! 现在你的任务是求出1!!+2!!......+n!!的正确值(n&lt;=20) ... 无灬言

    你确定你这个题没有问题么? 为什么是 1!! + 2!! + ... n!! 而不是 1!! + 3!! + ... n!!

  • Woodrow

    Woodrow 2013-06-14 16:23:05

    第一题:开灯问题 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的 第一题:开灯问题 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号。k≤n≤1000 例如:输入 7 3 输出 1 5 6 7 ... 无灬言
  • 无灬言

    无灬言 楼主 2013-06-14 16:32:25

    我写的: http://codepad.org/6tCJx4Rj 另, 换个地方贴代码吧~ 豆瓣实在是不适合贴代码. 我写的: http://codepad.org/6tCJx4Rj 另, 换个地方贴代码吧~ 豆瓣实在是不适合贴代码. Woodrow

    这个是递归么?多谢指教~我也学你贴那个什么地方~~

  • 无灬言

    无灬言 楼主 2013-06-14 16:32:58

    你确定你这个题没有问题么? 为什么是 1!! + 2!! + ... n!! 而不是 1!! + 3!! + ... n!! 你确定你这个题没有问题么? 为什么是 1!! + 2!! + ... n!! 而不是 1!! + 3!! + ... n!! Woodrow

    确定~~~~2!!=1嘛~

  • 枫然抹抹

    枫然抹抹 2013-06-14 16:39:17

    LZ ,我QQ 690120556

  • Woodrow

    Woodrow 2013-06-14 17:52:46

    确定~~~~2!!=1嘛~ 确定~~~~2!!=1嘛~ 无灬言

    根据你题干啊~ 我觉得你题干就有问题: 5!! = 1 * 3 * 5, 那为什么还要求 2!! ? 根本就不能求偶数的了

  • Woodrow

    Woodrow 2013-06-14 17:53:36

    根据你题干啊~ 我觉得你题干就有问题: 5!! = 1 * 3 * 5, 那为什么还要求 2!! ? 根本就不能求偶数 根据你题干啊~ 我觉得你题干就有问题: 5!! = 1 * 3 * 5, 那为什么还要求 2!! ? 根本就不能求偶数的了 ... Woodrow

    对了, 还是留个 QQ 之类的即时通讯方式吧, 这么聊比较麻烦.

  • 无灬言

    无灬言 楼主 2013-06-14 19:33:12

    对了, 还是留个 QQ 之类的即时通讯方式吧, 这么聊比较麻烦. 对了, 还是留个 QQ 之类的即时通讯方式吧, 这么聊比较麻烦. Woodrow

    露珠觉得题目举得例子恰好是奇数而已 范例如下:输入3,输出5。输入5,输出23。

  • 无灬言

    无灬言 楼主 2013-06-14 20:19:04

    改过了~~~学你的@_木頭張 http://codepad.org/D92eZ4bO

  • Woodrow

    Woodrow 2013-06-15 04:59:58

    露珠觉得题目举得例子恰好是奇数而已 范例如下:输入3,输出5。输入5,输出23。 露珠觉得题目举得例子恰好是奇数而已 范例如下:输入3,输出5。输入5,输出23。 无灬言

    我就纳闷了, 你那题干哪显示出来当 n 为偶数时计算 n-1 的...

  • Woodrow

    Woodrow 2013-06-15 05:01:12

    改过了~~~学你的@woodz http://codepad.org/D92eZ4bO 改过了~~~学你的@woodz http://codepad.org/D92eZ4bO 无灬言

    你这个已经报错了...

  • 无灬言

    无灬言 楼主 2013-06-15 10:16:09

    我就纳闷了, 你那题干哪显示出来当 n 为偶数时计算 n-1 的... 我就纳闷了, 你那题干哪显示出来当 n 为偶数时计算 n-1 的... Woodrow

    嗯..题目说 “变为i不大于n的所有奇数相乘”i!!的结果是奇数相乘,i本身并没有规定是奇数还是偶数.. 露珠感觉我们本身只是做题,结果可以求就求...这样纠结不好.. 前面没注意..在这个里面测试不能限定范围...有个M打成了n,惭愧... http://codepad.org/euFWw1Pc

  • 无灬言

    无灬言 楼主 2013-06-15 11:03:32

    第三题:n-1位数字 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数。 输入: 第一行为M,表示测试数据组数。 接下来M行,每行包含一个测试数据。 输出: 输出M行,每行为对应行的n-1位数(忽略前缀0)。如果除了最高位外,其余位都为0,则输出0。 样例:4 1023 5923 923 1000 输出 23 923 230

  • 无灬言

    无灬言 楼主 2013-06-15 11:03:55

    输出23 923 23 0

  • 无灬言

    无灬言 楼主 2013-06-15 11:15:16

  • 薛非

    薛非 2013-06-16 11:39:35

    #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main() { int a[1001],n,k,i,j; #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main() { int a[1001],n,k,i,j; printf(&quot;请分别输入灯和人的数量\n&quot;); scanf(&quot;%d%d&quot;,&amp;n,&amp;k); while(1) //检验是否超出 { if(k&gt;=1 &amp;&amp; k&lt;=1000 &amp;&amp; n&gt;=k &amp;&amp; n&lt;=1000) break; else { printf(&quot;数值不符,请重新输入:\n&quot;); scanf(&quot;%d%d&quot;,&amp;n,&amp;k); } } for(i=2;i&lt;=k;i++) //每操作一次第i*j个开关,a[i*j]加1 { for(j=1;i*j&lt;=n;j++) { a[i*j]=a[i*j]+1; } } for(i=1;i&lt;=n;i++) //若操作次数为偶数,表示该位置的灯亮着 { if(a[i]%2==0 &amp;&amp; a[i]!=0) printf(&quot;%d\t&quot;,i); } printf(&quot;\n&quot;); return 0; } ... 无灬言

    第一个错误 数组a没有初始化 而直接 “for(i=2;i&lt;=k;i++) //每操作一次第ij个开关,a[ij]加1” 所以,缺乏“第1个人把所有灯打开”的步骤 另外a数组里是垃圾值 对数组元素的操作没有意义

  • 无灬言

    无灬言 楼主 2013-06-16 22:49:44

    第一个错误 数组a没有初始化 而直接 “for(i=2;i&lt;=k;i++) //每操作一次第i*j个开关,a[i*j 第一个错误 数组a没有初始化 而直接 “for(i=2;i&lt;=k;i++) //每操作一次第i*j个开关,a[i*j]加1” 所以,缺乏“第1个人把所有灯打开”的步骤 另外a数组里是垃圾值 对数组元素的操作没有意义 ... 薛非

    谢谢指正.. a数组里是垃圾值,对数组元素的操作没有意义这个话怎么说? 可以更细一些么,不是很懂

  • 无灬言

    无灬言 楼主 2013-06-16 22:53:03

    露珠今天出去了,补上一题先

  • 无灬言

    无灬言 楼主 2013-06-16 22:54:40

    第四题:小学生数学 很多小学生在学习加法时,发现“进位”特别容易出错。你的任务是计算两个数在相加时需要多少次进位。你编制的程序应当可以连续处理多组数据,直到读到两个0(这是输入结束标记)。 样例:输入 123 456 555 555 123 594 0 0 输出: 0 3 1

  • 无灬言
  • 无灬言

    无灬言 楼主 2013-06-17 10:34:28

    [该条回复已被删除] [该条回复已被删除] [已注销]

    谢谢指教..比我这个简单了不知道多少. 我在microsoft visio c++6.0上运行了下 出现下面这个错误,这个是为什么? error C2057: expected constant expression error C2466: cannot allocate an array of constant size 0 指向 char num0[max_len]; char num1[max_len]; 这边

  • 薛非

    薛非 2013-06-17 10:34:32

    谢谢指正.. a数组里是垃圾值,对数组元素的操作没有意义这个话怎么说? 可以更细一些么,不是 谢谢指正.. a数组里是垃圾值,对数组元素的操作没有意义这个话怎么说? 可以更细一些么,不是很懂 ... 无灬言

    这么说吧 这个错误就如同 int a[1]; printf(&quot;%d\n&quot;,a[0]); 由于没有初始化 使用a[0]的值是没有意义的

  • 薛非

    薛非 2013-06-17 10:37:14

    谢谢指正.. a数组里是垃圾值,对数组元素的操作没有意义这个话怎么说? 可以更细一些么,不是 谢谢指正.. a数组里是垃圾值,对数组元素的操作没有意义这个话怎么说? 可以更细一些么,不是很懂 ... 无灬言

    在你的代码中 a[i*j]=a[i*j]+1; 没有意义 因为根本不知道a[i*j]是多少

  • 薛非

    薛非 2013-06-17 10:37:54

    谢谢指教..比我这个简单了不知道多少. 我在microsoft visio c++6.0上运行了下 出现下面这个错 谢谢指教..比我这个简单了不知道多少. 我在microsoft visio c++6.0上运行了下 出现下面这个错误,这个是为什么? error C2057: expected constant expression error C2466: cannot allocate an array of constant size 0 指向 char num0[max_len]; char num1[max_len]; 这边 ... 无灬言

    他那个写的是C++代码 不是C代码

  • 薛非

    薛非 2013-06-17 10:39:06

    #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main() { int a[1001],n,k,i,j; #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main() { int a[1001],n,k,i,j; printf(&quot;请分别输入灯和人的数量\n&quot;); scanf(&quot;%d%d&quot;,&amp;n,&amp;k); while(1) //检验是否超出 { if(k&gt;=1 &amp;&amp; k&lt;=1000 &amp;&amp; n&gt;=k &amp;&amp; n&lt;=1000) break; else { printf(&quot;数值不符,请重新输入:\n&quot;); scanf(&quot;%d%d&quot;,&amp;n,&amp;k); } } for(i=2;i&lt;=k;i++) //每操作一次第i*j个开关,a[i*j]加1 { for(j=1;i*j&lt;=n;j++) { a[i*j]=a[i*j]+1; } } for(i=1;i&lt;=n;i++) //若操作次数为偶数,表示该位置的灯亮着 { if(a[i]%2==0 &amp;&amp; a[i]!=0) printf(&quot;%d\t&quot;,i); } printf(&quot;\n&quot;); return 0; } ... 无灬言

    #include &lt;math.h&gt; 毫无意义 陋习

  • 薛非

    薛非 2013-06-17 10:47:04

    #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main() { int a[1001],n,k,i,j; #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main() { int a[1001],n,k,i,j; printf(&quot;请分别输入灯和人的数量\n&quot;); scanf(&quot;%d%d&quot;,&amp;n,&amp;k); while(1) //检验是否超出 { if(k&gt;=1 &amp;&amp; k&lt;=1000 &amp;&amp; n&gt;=k &amp;&amp; n&lt;=1000) break; else { printf(&quot;数值不符,请重新输入:\n&quot;); scanf(&quot;%d%d&quot;,&amp;n,&amp;k); } } for(i=2;i&lt;=k;i++) //每操作一次第i*j个开关,a[i*j]加1 { for(j=1;i*j&lt;=n;j++) { a[i*j]=a[i*j]+1; } } for(i=1;i&lt;=n;i++) //若操作次数为偶数,表示该位置的灯亮着 { if(a[i]%2==0 &amp;&amp; a[i]!=0) printf(&quot;%d\t&quot;,i); } printf(&quot;\n&quot;); return 0; } ... 无灬言

    printf(&quot;请分别输入灯和人的数量\n&quot;); scanf(&quot;%d%d&quot;,&amp;n,&amp;k);

    while(1) //检验是否超出 { if(k&gt;=1 &amp;&amp; k&lt;=1000 &amp;&amp; n&gt;=k &amp;&amp; n&lt;=1000) break; else { printf(&quot;数值不符,请重新输入:\n&quot;); scanf(&quot;%d%d&quot;,&amp;n,&amp;k); } }

    这段写得很丑 典型的谭浩强风格

    printf(&quot;请分别输入灯和人的数量\n&quot;); while(scanf(&quot;%d%d&quot;,&amp;n,&amp;k) ,( k &lt;1 || n&lt;k || n&gt;1000) ) { printf(&quot;数值不符,请重新输入:\n&quot;); }

  • 薛非

    薛非 2013-06-17 10:48:15

    [该条回复已被删除] [该条回复已被删除] [已注销]

    const int max_len=1010; char num0[max_len]; char num1[max_len];

    这不可能是C代码 C语言不允许对外部数组用变量说明尺寸

  • 无灬言

    无灬言 楼主 2013-06-17 11:07:50

    在你的代码中 a[i*j]=a[i*j]+1; 没有意义 因为根本不知道a[i*j]是多少 在你的代码中 a[i*j]=a[i*j]+1; 没有意义 因为根本不知道a[i*j]是多少 薛非

    嗯,但是我下面要用这个 a[i*j]来判断是不是开着..请问这个我要怎么办?

  • 无灬言

    无灬言 楼主 2013-06-17 11:09:05

    [该条回复已被删除] [该条回复已被删除] [已注销]

    是的~我改成 #define max_len 1010 就可以了~~~

  • 无灬言

    无灬言 楼主 2013-06-17 11:09:45

    printf(&quot;请分别输入灯和人的数量\n&quot;); scanf(&quot;%d%d&quot;,&amp;n,&amp;k); printf(&quot;请分别输入灯和人的数量\n&quot;); scanf(&quot;%d%d&quot;,&amp;n,&amp;k); while(1) //检验是否超出 { if(k&gt;=1 &amp;&amp; k&lt;=1000 &amp;&amp; n&gt;=k &amp;&amp; n&lt;=1000) break; else { printf(&quot;数值不符,请重新输入:\n&quot;); scanf(&quot;%d%d&quot;,&amp;n,&amp;k); } } 这段写得很丑 典型的谭浩强风格 printf(&quot;请分别输入灯和人的数量\n&quot;); while(scanf(&quot;%d%d&quot;,&amp;n,&amp;k) ,( k &lt;1 || n&lt;k || n&gt;1000) ) { printf(&quot;数值不符,请重新输入:\n&quot;); } ... 薛非

    T T...请问我要怎么弄可以好看一些...

  • 薛非

    薛非 2013-06-17 11:51:18

    嗯,但是我下面要用这个 a[i*j]来判断是不是开着..请问这个我要怎么办? 嗯,但是我下面要用这个 a[i*j]来判断是不是开着..请问这个我要怎么办? 无灬言

    恐怕 “第1个人把所有灯打开” 要单独写一句代码表示 你用什么表示“灯是开着的”

  • 薛非

    薛非 2013-06-17 12:44:41

    T T...请问我要怎么弄可以好看一些... T T...请问我要怎么弄可以好看一些... 无灬言

    #include &lt;stdio.h&gt;

    #define MAXNUM 1000 #define ON 0 #define OFF 1

    int main( void ) { int light[MAXNUM] = { ON } ; //把所有灯打开 int n , k ; int i ;

    printf( &quot;请分别输入灯和人的数量\n&quot; ); while ( scanf(&quot;%d%d&quot;,&amp;n,&amp;k) ,( k &lt;1 || n&lt;k || n &gt; MAXNUM ) ) printf(&quot;数值不符,请重新输入:\n&quot;);

    for ( i = 2 - 1 ; i &lt; k ; i ++ ) //第2个人按下所有编号为2 的倍数的开关…… { int j ; for ( j = i ; j &lt; n ; j += i + 1) light[j] = ! light[j]; }

    for ( i = 0 ; i &lt; n ; i ++ ) if( light[i]==ON ) printf( &quot;%d &quot; , i + 1 );

    putchar('\n');

    return 0; }

  • 薛非

    薛非 2013-06-17 12:46:02

    T T...请问我要怎么弄可以好看一些... T T...请问我要怎么弄可以好看一些... 无灬言

    这里确实不适合贴代码 有问题可以到 http://bbs.chinaunix.net/forum.php?mod=forumdisplay&amp;amp;fid=23&amp;amp;page=1 找我

  • 无灬言

    无灬言 楼主 2013-06-17 15:34:49

    这里确实不适合贴代码 有问题可以到 http://bbs.chinaunix.net/forum.php?mod=forumdisplay&am 这里确实不适合贴代码 有问题可以到 http://bbs.chinaunix.net/forum.php?mod=forumdisplay&amp;fid=23&amp;page=1 找我 ... 薛非

    ok~求id~..

  • 薛非

    薛非 2013-06-17 16:53:08

    ok~求id~.. ok~求id~.. 无灬言

    pmerofc

  • -

    - 2013-06-19 15:04:31

    #include &lt;stdio.h&gt; int main() { int n,i,j,temp,sum; int a[20]; int factorial #include &lt;stdio.h&gt; int main() { int n,i,j,temp,sum; int a[20]; int factorial(int x); printf(&quot;你想输入几组数据?\n&quot;); scanf(&quot;%d&quot;,&amp;n); printf(&quot;请输入具体数值(1~20):\n&quot;); for(i=0;i&lt;n;i++) //输入数值 { scanf(&quot;%d&quot;,&amp;a[i]); while(1) //检验是否超出数值范围 { if(a[i]&gt;0 &amp;&amp; a[i]&lt;=20) break; else { printf(&quot;超出范围,请重新输入\n&quot;); scanf(&quot;%d&quot;,&amp;a[i]); } } } for(i=0;i&lt;n;i++) //求阶乘之和 { sum = 0; for(j=1;j&lt;=a[i];j++) { temp=factorial(j); sum=sum+temp; } printf(&quot;%d\n&quot;,sum); } return 0; } int factorial(int x) //求某一个整数X的阶乘 { int i,temp; for(i=1,temp=1;i&lt;=x;i+=2) { temp=temp*i; } return (temp); } ... 无灬言

    为什么要输入几组数据啊

  • 无灬言

    无灬言 楼主 2013-06-19 17:42:30

    为什么要输入几组数据啊 为什么要输入几组数据啊 -

    这个是题目要求..只是我没贴出来..

  • 无灬言

    无灬言 楼主 2013-06-19 20:52:46

    第五题:1的个数 小南刚学了二进制,他想知道一个数的二进制表示中有多少个1,你能帮他写一个程序来完成这个任务吗? 输入:第一行输入一个整数N,表示测试数据的组数(1&lt;N&lt;1000) 每组测试数据只有一行,是一个整数M(0=&lt;M&lt;=10000) 输出:每组测试输出占一行,输出M的二进制表示中1的个数 样例:输入: 3 4 5 6 7 输出: 1 2 3

  • 无灬言
  • 无灬言

    无灬言 楼主 2013-06-19 20:56:43

    第六题:求两点距离 输入两点坐标(X1,Y1),(X2,Y2)(0&lt;=x1,x2,y1,y2&lt;=1000),计算并输出两点间的距离。 输入:第一行输入一个整数n(0&lt;n&lt;=1000),表示有n组测试数据; 随后每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。 输出:对于每组输入数据,输出一行,结果保留两位小数。 样例: 输入 2 0 0 0 1 0 1 1 0 输出 1.00 1.41

  • 无灬言
  • 无灬言

    无灬言 楼主 2013-06-20 13:29:16

    第七题:素数 在世博园某信息通信馆中,游客可利用手机等终端参与互动小游戏,与虚拟人物Kr. Kong 进行猜数比赛。当屏幕出现一个整数X时,若你能比Kr. Kong更快的发出最接近它的素数答案,你将会获得一个意想不到的礼物。

    例如:当屏幕出现22时,你的回答应是23;当屏幕出现8时,你的回答应是7;若X本身是素数,则回答X;若最接近X的素数有两个时,则回答大于它的素数。

    输入:第一行:N 要竞猜的整数个数 接下来有N行,每行有一个正整数X 输出:输出有N行,每行是对应X的最接近它的素数

    样例:输入 4 22 5 18 8 输出 23 5 19 7

  • 无灬言
  • 无灬言

    无灬言 楼主 2013-06-21 23:51:55

    第八题:矩形的个数 在一个32的矩形中,可以找到6个11的矩形,4个21的矩形3个12的矩形,2个22的矩形,2个31的矩形和1个3*2的矩形,总共18个矩形。 给出A,B,计算可以从中找到多少个矩形 输入: 本题有多组输入数据(&lt;10000),你必须处理到EOF为止 输入2个整数A,B(1&lt;=A,B&lt;=1000) 输出: 输出找到的矩形数。 样例:输入: 1 2 3 2 输出: 3 18

  • 无灬言

    无灬言 楼主 2013-06-22 00:36:08

    http://codepad.org/HkF3CeW1 露珠不知道如何以EOF结尾..只好用0了...哪位指点下..

  • 薛非

    薛非 2013-06-22 08:47:32

    没必要用数组 while( scanf(&quot;%d%d&quot;, &amp;A,&amp;B)!=EOF ) { //计算输出矩形个数 }

  • 无灬言

    无灬言 楼主 2013-06-23 00:30:30

    没必要用数组 while( scanf(&quot;%d%d&quot;, &amp;A,&amp;B)!=EOF ) { //计算输出矩形个 没必要用数组 while( scanf(&quot;%d%d&quot;, &amp;A,&amp;B)!=EOF ) { //计算输出矩形个数 } ... 薛非

    http://codepad.org/8ITWERyj 我修改成这样之后,比如我先输入 2 3 跳出来 18,输入eof 就一直跳 18 停止不了了... 总之就是一直跳最后一次出来的结果 ..

  • 薛非

    薛非 2013-06-23 08:58:44

    http://codepad.org/8ITWERyj 我修改成这样之后,比如我先输入 2 3 跳出来 18,输入eof 就一 http://codepad.org/8ITWERyj 我修改成这样之后,比如我先输入 2 3 跳出来 18,输入eof 就一直跳 18 停止不了了... 总之就是一直跳最后一次出来的结果 .. ... 无灬言

    EOF不是三个字符 而是一个符号常量 如果你用的是WIN系统 在行首输入Control-Z试试

  • 薛非

    薛非 2013-06-23 09:01:03

    http://codepad.org/8ITWERyj 我修改成这样之后,比如我先输入 2 3 跳出来 18,输入eof 就一 http://codepad.org/8ITWERyj 我修改成这样之后,比如我先输入 2 3 跳出来 18,输入eof 就一直跳 18 停止不了了... 总之就是一直跳最后一次出来的结果 .. ... 无灬言

    把函数类型声明 int rectangle(int x,int y); 写在main()函数之内很傻

  • 无灬言

    无灬言 楼主 2013-06-23 21:20:09

    把函数类型声明 int rectangle(int x,int y); 写在main()函数之内很傻 把函数类型声明 int rectangle(int x,int y); 写在main()函数之内很傻 薛非

    使用ctr+z就ok了~ 那要写在哪里?

  • 薛非

    薛非 2013-06-23 22:32:14

    使用ctr+z就ok了~ 那要写在哪里? 使用ctr+z就ok了~ 那要写在哪里? 无灬言

    写在函数外面 另外那个temp多余 temp赋值为零就更多余

    sum += (x-i+1)*(y-j+1);

  • 无灬言

    无灬言 楼主 2013-06-24 11:00:02

    写在函数外面 另外那个temp多余 temp赋值为零就更多余 sum += (x-i+1)*(y-j+1); 写在函数外面 另外那个temp多余 temp赋值为零就更多余 sum += (x-i+1)*(y-j+1); 薛非

    嗯 ~修改完毕~谢谢~ http://codepad.org/TvufZLDu

  • 无灬言

    无灬言 楼主 2013-06-24 11:02:11

    第九题:字母的个数 现在给你一个由小写字母组成字符串,要你找出字符串中出现次数最多的字母,如果出现次数最多字母有多个那么输出最小的那个。 输入:第一行输入一个正整数T(0&lt;T&lt;25) 随后T行输入一个字符串s,s长度小于1010。 输出:每组数据输出占一行,输出出现次数最多的字符; 样例:输入 3 abcd bbaa jsdhfjkshdfjksahdfjkhsajkf 输出: a a j

  • 无灬言
  • 薛非

    薛非 2013-06-25 09:19:49

    http://codepad.org/R7ve2OOo http://codepad.org/R7ve2OOo 无灬言

    int maxchar(char x[1010]);

    这里的“1010”毫无意义 应该什么都不写

    char s[1010],c[26]; 这里的26没道理 根据题目要求 应该是24 把c定义为char数组也有问题 因为char 通常最大只能记录255 而题目条件“长度小于1010” 当输入为,比如,1000个a时 代码的漏洞就暴露了

  • 无灬言

    无灬言 楼主 2013-06-25 13:47:45

    int maxchar(char x[1010]); 这里的“1010”毫无意义 应该什么都不写 char s[1010],c[2 int maxchar(char x[1010]); 这里的“1010”毫无意义 应该什么都不写 char s[1010],c[26]; 这里的26没道理 根据题目要求 应该是24 把c定义为char数组也有问题 因为char 通常最大只能记录255 而题目条件“长度小于1010” 当输入为,比如,1000个a时 代码的漏洞就暴露了 ... 薛非

    1、关于int maxchar(char x[1010]); : 这个1010不写一可以运行,但是会多一个 waring.:formal parameter 1 different from declaration. 露珠自己是新手,所以就想最好什么waring都没有.. ps:可以不管waring 的话露珠以后就不管它了

    2、关于c[26]: 是的..c[24]就可以了。

    3、关于c定义为char数组: 这个c是用来存放出现最多的小写字母的,它只会用来存放26个字母中的一个,字母的个数是存放在maxchar函数的 int a[26]里面的,所以露珠觉得木有问题。 当1000个a出现时,c里面存放的是a,a[0]里面存放的是1000。

    谢谢指点~

  • 薛非

    薛非 2013-06-25 15:31:08

    1、关于int maxchar(char x[1010]); : 这个1010不写一可以运行,但是会多一个 waring.:forma 1、关于int maxchar(char x[1010]); : 这个1010不写一可以运行,但是会多一个 waring.:formal parameter 1 different from declaration. 露珠自己是新手,所以就想最好什么waring都没有.. ps:可以不管waring 的话露珠以后就不管它了 2、关于c[26]: 是的..c[24]就可以了。 3、关于c定义为char数组: 这个c是用来存放出现最多的小写字母的,它只会用来存放26个字母中的一个,字母的个数是存放在maxchar函数的 int a[26]里面的,所以露珠觉得木有问题。 当1000个a出现时,c里面存放的是a,a[0]里面存放的是1000。 谢谢指点~ ... 无灬言

    “ 1、关于int maxchar(char x[1010]); : 这个1010不写一可以运行,但是会多一个 waring.:formal parameter 1 different from declaration. 露珠自己是新手,所以就想最好什么waring都没有.. ps:可以不管waring 的话露珠以后就不管它了 ”

    会有warning吗? 不应该啊 什么编译器

  • 薛非

    薛非 2013-06-25 15:36:11

    1、关于int maxchar(char x[1010]); : 这个1010不写一可以运行,但是会多一个 waring.:forma 1、关于int maxchar(char x[1010]); : 这个1010不写一可以运行,但是会多一个 waring.:formal parameter 1 different from declaration. 露珠自己是新手,所以就想最好什么waring都没有.. ps:可以不管waring 的话露珠以后就不管它了 2、关于c[26]: 是的..c[24]就可以了。 3、关于c定义为char数组: 这个c是用来存放出现最多的小写字母的,它只会用来存放26个字母中的一个,字母的个数是存放在maxchar函数的 int a[26]里面的,所以露珠觉得木有问题。 当1000个a出现时,c里面存放的是a,a[0]里面存放的是1000。 谢谢指点~ ... 无灬言

    “3、关于c定义为char数组: 这个c是用来存放出现最多的小写字母的,它只会用来存放26个字母中的一个,字母的个数是存放在maxchar函数的 int a[26]里面的,所以露珠觉得木有问题。 当1000个a出现时,c里面存放的是a,a[0]里面存放的是1000。 ”

    这个我前面理解的有误 抱歉

  • 薛非

    薛非 2013-06-25 15:47:27

    http://codepad.org/R7ve2OOo http://codepad.org/R7ve2OOo 无灬言

    i&lt;strlen(x) 写成 x[i]!='\0' 为好

    temp=x[i]-97; a[temp]+=1; 等价于 a[ x[i] - 'a' ] ++ ; 后者显然更简洁

    for(i=1,max = a[0],j=0;i<26;i++) { if(max<a[i]) { j=i; max = a[i]; } }

    有些啰嗦了

    for(i=1,j=0;i<26;i++) { if( a[j] < a[i] ) { j = i ; } }

  • Woodrow

    Woodrow 2013-06-25 20:45:05

    第四题:小学生数学 很多小学生在学习加法时,发现“进位”特别容易出错。你的任务是计算两个数 第四题:小学生数学 很多小学生在学习加法时,发现“进位”特别容易出错。你的任务是计算两个数在相加时需要多少次进位。你编制的程序应当可以连续处理多组数据,直到读到两个0(这是输入结束标记)。 样例:输入 123 456 555 555 123 594 0 0 输出: 0 3 1 ... 无灬言
  • Woodrow

    Woodrow 2013-06-25 21:10:07

    第七题:素数 在世博园某信息通信馆中,游客可利用手机等终端参与互动小游戏,与虚拟人物Kr. Ko 第七题:素数 在世博园某信息通信馆中,游客可利用手机等终端参与互动小游戏,与虚拟人物Kr. Kong 进行猜数比赛。当屏幕出现一个整数X时,若你能比Kr. Kong更快的发出最接近它的素数答案,你将会获得一个意想不到的礼物。 例如:当屏幕出现22时,你的回答应是23;当屏幕出现8时,你的回答应是7;若X本身是素数,则回答X;若最接近X的素数有两个时,则回答大于它的素数。 输入:第一行:N 要竞猜的整数个数 接下来有N行,每行有一个正整数X 输出:输出有N行,每行是对应X的最接近它的素数 样例:输入 4 22 5 18 8 输出 23 5 19 7 ... 无灬言
  • 无灬言

    无灬言 楼主 2013-06-27 00:30:57

    i&lt;strlen(x) 写成 x[i]!='\0' 为好 temp=x[i]-97; a[temp]+=1; 等价于 a[ x[i] - 'a i&lt;strlen(x) 写成 x[i]!='\0' 为好 temp=x[i]-97; a[temp]+=1; 等价于 a[ x[i] - 'a' ] ++ ; 后者显然更简洁 for(i=1,max = a[0],j=0;i&lt;26;i++) { if(max&lt;a[i]) { j=i; max = a[i]; } } 有些啰嗦了 for(i=1,j=0;i&lt;26;i++) { if( a[j] &lt; a[i] ) { j = i ; } } ... 薛非

    露珠用的是vc++6.0...

    非常感谢~~~~ 指出两点麻烦指出~~~

  • 无灬言

    无灬言 楼主 2013-06-27 00:31:58

    http://codepad.org/1COdfiPt http://codepad.org/1COdfiPt Woodrow

    露珠明天看...这两天加班,还有一堆私事,累死了..

  • 薛非

    薛非 2013-06-27 09:35:52

    露珠用的是vc++6.0... 非常感谢~~~~ 指出两点麻烦指出~~~ 露珠用的是vc++6.0... 非常感谢~~~~ 指出两点麻烦指出~~~ 无灬言

    int maxchar(char x[]); 应该没有任何问题(包括函数定义部分) 因为编译器对形参[]内的东西根本视而不见 你的warnning应该是其他原因造成的

  • Woodrow

    Woodrow 2013-06-27 10:45:22

    露珠明天看...这两天加班,还有一堆私事,累死了.. 露珠明天看...这两天加班,还有一堆私事,累死了.. 无灬言

    加班? 你都工作了? 程序员?

  • 无灬言

    无灬言 楼主 2013-06-27 12:56:31

    int maxchar(char x[]); 应该没有任何问题(包括函数定义部分) 因为编译器对形参[]内的东西根 int maxchar(char x[]); 应该没有任何问题(包括函数定义部分) 因为编译器对形参[]内的东西根本视而不见 你的warnning应该是其他原因造成的 ... 薛非

    是的,这个是露珠自己的疏漏——露珠把“[]”也去掉了...[]里面的数值乱填也没关系的.. 谢谢指点~

  • 无灬言

    无灬言 楼主 2013-06-27 12:57:49

    加班? 你都工作了? 程序员? 加班? 你都工作了? 程序员? Woodrow

    出来工作一年多了,不是程序员..所以在学么..想着转开发这方面去..——程序员要是露珠这水平,目测早歇菜了..

  • 无灬言

    无灬言 楼主 2013-06-27 12:58:39

    加班? 你都工作了? 程序员? 加班? 你都工作了? 程序员? Woodrow

    你是大一么?

  • Woodrow

    Woodrow 2013-06-27 13:57:53

    你是大一么? 你是大一么? 无灬言

    刚毕业.

  • 无灬言

    无灬言 楼主 2013-06-28 01:01:18

    刚毕业. 刚毕业. Woodrow

    共勉

  • 无灬言

    无灬言 楼主 2013-06-28 01:02:55

    第十题:分数的加减法 编写一个C程序,实现两个分数的加减法 输入:输入包含多行数据 每行数据是一个字符串,格式是&quot;a/boc/d&quot;。 其中a, b, c, d是一个0-9的整数。o是运算符&quot;+&quot;或者&quot;-&quot;。 输出:对于输入数据的每一行输出两个分数的运算结果。 注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数

    样例输入: 1/8+3/8 1/4-1/2 1/3-1/3 输出: 1/2 -1/4 0

  • 无灬言

    无灬言 楼主 2013-06-28 01:04:18

    http://codepad.org/pTKFbKAL 露珠这个在oj上是wronganswer...先贴出来明天改进..

  • 薛非

    薛非 2013-06-28 10:54:18

    [该条回复已被删除] [该条回复已被删除] [已注销]

    a^=b^=a^=b 这个是未定义行为 违反C语言的基本规则

  • 薛非

    薛非 2013-06-28 12:40:28

    [该条回复已被删除] [该条回复已被删除] [已注销]

    客气了 交流而已 谈不上指教 C语言确实有 ^= 运算 问题在于C语言要求 Between the previous and next sequence point an object shall have its stored value modified at most once by the evaluation of an expression 参见 http://www.cnblogs.com/pmer/archive/2013/01/02/2842516.html#2695949

  • 薛非

    薛非 2013-06-28 14:23:37

    [该条回复已被删除] [该条回复已被删除] [已注销]

    问题是 a^=b^=a^=b 有报道在某些编译器下得到的是错误的结果; 而且 有人实际测试过(好像是陈硕) 这种写法的效率并不高; 最后 代码中的这句完全是多余的 根本不需要交换a、b int gcd(int a,int b) { return b?gcd(b,a%b):a; } 足矣。

  • Woodrow

    Woodrow 2013-06-29 00:44:08

    给新手程序员和学生的书籍推荐: http://www.cnblogs.com/badly1984/p/3161704.html

  • 无灬言

    无灬言 楼主 2013-06-29 13:50:03

    问题是 a^=b^=a^=b 有报道在某些编译器下得到的是错误的结果; 而且 有人实际测试过(好像是 问题是 a^=b^=a^=b 有报道在某些编译器下得到的是错误的结果; 而且 有人实际测试过(好像是陈硕) 这种写法的效率并不高; 最后 代码中的这句完全是多余的 根本不需要交换a、b int gcd(int a,int b) { return b?gcd(b,a%b):a; } 足矣。 ... 薛非

    ing gcd(int a,int b),这个是求公约数么...这个是怎么想到的..求思路...

  • 无灬言

    无灬言 楼主 2013-06-29 13:51:24

    给新手程序员和学生的书籍推荐: http://www.cnblogs.com/badly1984/p/3161704.html 给新手程序员和学生的书籍推荐: http://www.cnblogs.com/badly1984/p/3161704.html Woodrow

    多谢推荐~~

  • 薛非

    薛非 2013-06-29 16:13:18

    ing gcd(int a,int b),这个是求公约数么...这个是怎么想到的..求思路... ing gcd(int a,int b),这个是求公约数么...这个是怎么想到的..求思路... 无灬言
  • 无灬言

    无灬言 楼主 2013-06-30 01:26:22

    求最大公约数 欧几里德算法 http://zh.wikipedia.org/wiki/%E6%AC%A7%E5%87%A0%E9%87%8C%E5%BE 求最大公约数 欧几里德算法 http://zh.wikipedia.org/wiki/%E6%AC%A7%E5%87%A0%E9%87%8C%E5%BE%97%E7%AE%97%E6%B3%95 ... 薛非

    收到~~~非常感谢~

  • 无灬言

    无灬言 楼主 2013-06-30 02:28:28

    第十一题:交换输出 输入n(n&lt;100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。(如果这个第一个数就是最小的数,则保持原样输出,如果最小的数有相同的按照前面的交换) 输入: 输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。 输出: 对于每组输入数据,输出交换后的数列,每组输出占一行。 输入样例: 4 2 1 3 4 5 5 4 3 2 1 0 输出: 1 2 3 4 1 4 3 2 5

  • 无灬言

    无灬言 楼主 2013-06-30 02:30:57

    http://codepad.org/ZAaSBDKV 这里求教一个问题.. 为什么我写成 while(scanf(&quot;%d&quot;,&amp;n)!=0)..这样就出错了..

<前页 1 2 3 后页>

你的回复

回复请先 , 或 注册

34594 人聚集在这个小组
↑回顶部