华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: admin
打印 上一主题 下一主题

20141021初级班训练题

[复制链接]

61

主题

147

帖子

563

积分

超级版主

Rank: 8Rank: 8

积分
563
11#
发表于 2014-10-21 18:54:41 | 只看该作者
改进第二题  求次大值
  1. #include<iostream>
  2. using namespace std;
  3. int x1,x2,i,max1,max2;
  4. int main()
  5. {
  6.     cin>>x1>>x2;
  7.     if (x1>x2){max1=x1;max2=x2;}
  8.     else {max1=x2;max2=x1;}
  9.     for (i=3;i<=10;i++)
  10.     {
  11.         cin>>x1;
  12.         if (x1>max1) {max2=max1;max1=x1;}
  13.         else if (x1>max2) {max2=x1;}
  14.     }
  15.     cout<<max2;
  16.     return 0;
  17. }
复制代码
回复 支持 1 反对 0

使用道具 举报

61

主题

147

帖子

563

积分

超级版主

Rank: 8Rank: 8

积分
563
12#
发表于 2014-10-21 18:59:02 | 只看该作者
第三题 完美做法,千万不要蠢到用两重循环,BTW 楼上的初中生,你的C++是不是那个巨牛的Diggersun老师教的?
  1. #include<iostream>
  2. using namespace std;
  3. long long s=0,a=1,i,j;
  4. int main()
  5. {
  6.     for (i=1;i<=20;i++)
  7.     {
  8.         a=a*i;
  9.         s=s+a;
  10.     }
  11.     cout<<s;
  12.     return 0;
  13. }
复制代码
回复 支持 1 反对 0

使用道具 举报

61

主题

147

帖子

563

积分

超级版主

Rank: 8Rank: 8

积分
563
13#
发表于 2014-10-21 19:09:42 | 只看该作者
第四题

  1. <P>#include<iostream>
  2. using namespace std;
  3. long long s=0,n=1,i,j;
  4. int main()
  5. {
  6.     n=1;i=1;
  7.     while (n<100)
  8.     {
  9.         s=s+n;
  10.         n=n+i;
  11.         i=i+1;
  12.         //cout<<s<<endl<<n<<' ';
  13.     }
  14.     cout<<s;
  15.     return 0;
  16. }</P>
  17. <P> </P>
  18. <P>
  19. </P>
复制代码
各位同学,你们想想,要是N是大于100的最小整数,怎么办?
回复 支持 反对

使用道具 举报

61

主题

147

帖子

563

积分

超级版主

Rank: 8Rank: 8

积分
563
14#
发表于 2014-10-21 19:17:12 | 只看该作者
  1. #include<iostream>
  2. using namespace std;
  3. long long s,a,aa,i,k;
  4. int main()
  5. {
  6.     cin>>a>>k;
  7.     for (i=1;i<=k;i++)
  8.     {
  9.         aa=10*aa+a;
  10.         s=s+aa;
  11.     }
  12.     cout<<s;
  13.     return 0;
  14. }
复制代码
回复 支持 反对

使用道具 举报

4

主题

68

帖子

1592

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1592
15#
发表于 2014-10-22 20:59:06 | 只看该作者
木灵时雨 发表于 2014-10-21 18:21
最后是return....目测你打错了

谢谢你的提醒,我马上就把它改过来。
这个人很懒,不想写签名。
回复 支持 反对

使用道具 举报

4

主题

68

帖子

1592

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1592
16#
发表于 2014-10-22 21:02:59 | 只看该作者
admin 发表于 2014-10-21 16:49
楼上真是个牛人呀!还是在初中生就这么牛了!
不过,不建议写这些东西 i/=j;++j;
为了程序的清晰,初学者 ...

谢谢老师的表扬,我最早在《C++ Primer》上看到的程序都是把“++”写在前面的,而且很多样例程序里用的是复合符号,所以习惯这么写了。
这个人很懒,不想写签名。
回复 支持 反对

使用道具 举报

4

主题

68

帖子

1592

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1592
17#
发表于 2014-10-22 21:33:36 | 只看该作者
diggersun 发表于 2014-10-21 18:59
第三题 完美做法,千万不要蠢到用两重循环,BTW 楼上的初中生,你的C++是不是那个巨牛的Diggersun老师教的 ...

是的………………
这个人很懒,不想写签名。
回复 支持 反对

使用道具 举报

1

主题

13

帖子

62

积分

注册会员

Rank: 2

积分
62
18#
发表于 2014-10-25 14:11:06 | 只看该作者
hr567 发表于 2014-10-22 21:33
是的………………

这里目睹了老师回复的全过程,只能默默地为你流下一滴汗……
回复 支持 反对

使用道具 举报

1

主题

13

帖子

62

积分

注册会员

Rank: 2

积分
62
19#
发表于 2014-10-25 15:17:36 | 只看该作者
第三题变式解:
  1. #include<iostream>
  2. using namespace std;
  3. long long s=0,a=1,i,j;
  4. int main()
  5. {
  6.     for (i=1; i<=20; i++)
  7.     {
  8.         a=a*i;
  9.         if(i%2==1)
  10.             s=s+a;
  11.     }
  12.     cout<<s;
  13.     return 0;
  14. }
复制代码
回复 支持 反对

使用道具 举报

4

主题

68

帖子

1592

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1592
20#
发表于 2014-10-25 19:47:13 | 只看该作者
clivia 发表于 2014-10-25 14:11
这里目睹了老师回复的全过程,只能默默地为你流下一滴汗……

习惯就好……
这个人很懒,不想写签名。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-11-6 19:38 , Processed in 0.211628 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表