陪伴孩子成长学习的地方 ------ 扫码添加微信

L2-DAY 2-程序完善夜

积分赛制

答对一个空格得5分

一、【题目】(哥德巴赫猜想)哥德巴赫猜想是指,任一大于2的偶数都可写成两个质数之和。迄今为止,这仍然是一个著名的世界难题,被誉为数学王冠上的明珠。试编写程序,验证任一大于2且不超过n的偶数都能写成两个质数之和。

#include<iostream>

using namespace std;

int main()

{

    const int SIZE=1000;

    int n,r,p[SIZE],i,j,k,ans;

    bool tmp;

    cin>>n;

    r=1;

    p[1]=2;

    for(i=3;i<=n;i++)

    {

                     ;

        for(j=1;j<=r;j++)

            if(i%             ==0)

            {

                tmp=false;

                break;

            }

        if(tmp)

        {

            r++;

                         ;

        }

    }

    ans=0;

    for(i=2;i<=n/2;i++)

    {

        tmp=false;

        for(j=1;j<=r;j++)

            for(k=j;k<=r;k++)

                if(i+i==               )

                {

                    tmp=true;

                    break;

                }

        if(tmp)

             ans++;

    }

    cout<<ans<<endl;

    return 0;

}

若输入n为2010,则输出              时表示验证成功,即大于2且不超过2010的偶数都满足哥德巴赫猜想。

 

 

 

 

二、【题目】(排列数)输入两个正整数n,m(1<n<20,1<m<n),在1~n中任取m个数,按字典序从小到大输出所有这样的排列。例如: 

输入:3 2 

输出:1 2

1 3 

2 1 

2 3

3 1 

3 2

 

#include <iostream>

#include <cstring>

using namespace std;

const int SIZE =25;

bool used[SIZE];

int data[SIZE];

int n,m,i,j,k;

bool flag;

int main()

{

cin>>n>>m;

memset(used,false,sizeof(used));

for(i=1;i<=m;i++)

{

data[i]=i;

used[i]=true;

}

flag=true;

while(flag)

{

for(i=1;i<=m-1;i++) cout<<data[i]<<" ";

cout<<data[m]<<endl;

flag=        ;

for(i=m;i>=1;i--)

{

        ;

for(j=data[i]+1;j<=n;j++)

if(!used[j])

{

used[j]=true;

data[i]=      ;

flag=true;

break;

}

if(flag)

{

for(k=i+1;k<=m;k++)

for(j=1;j<=      ;j++)

if(!used[j])

{

data[k]=j;

used[j]=true;

break;

}

      ;

}

}

}

return 0;

}

 

 

 

三、

【题目】

(数字删除)下面程序的功能是将字符串中的数字字符删除后输出。请填空。(每空3分,共12分)

#include <iostream> 

using namespace std; 

int delnum(char *s) 

  { 

    int i, j; 

    j = 0; 

    for(i = 0; s[i] != '\0'; i++) 

      if(s[i] < '0' ——————1—————— s[i] > '9') 

        { 

          s[j] = s[i]; 

         ——————2——————; 

        } 

    return ——————3——————; 

  } 

 

const int SIZE = 30; 

 

int main() 

  { 

    char s[SIZE]; 

    int len, i; 

    cin.getline(s, sizeof(s)); 

    len = delnum(s); 

    for(i = 0; i < len; i++) 

      cout << ——————4——————); 

    cout << endl; 

    return 0; 

  }

 

 

 

 

四、

 

【题目】(打印月历)输入月份m(1≤m≤12),按一定格式打印2015年第m月的月历。(第三、四空2.5分,

其余3分)

例如,2015年1月的月历打印效果如下(第一列为周日):

S M T W T F S

1 2 3

4 5 6 7 8 9 10

11 12 13 14 15 16 17

18 19 20 21 22 23 24

25 26 27 28 29 30 31

#include <iostream>

#include <string>

using namespace std;

const int dayNum[] = {-1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

int m, offset, i;

int main()

{

cin >> m;

cout << "S\tM\tT\tW\tT\tF\tS" << endl; //'\t'为TAB制表符

;

for(i = 1; i < m; i++)

offset = ;

for(i = 0; i < offset; i++)

cout << '\t';

for(i = 1; i <= ; i++)

{

cout << ;

if(i == dayNum[m] || ⑸ == 0)

cout << endl;

else

cout << '\t';

}

 

 

 

 

 

posted @ 2019-08-06 17:06  极光编程小助手  阅读(433)  评论(0编辑  收藏  举报