菜鸟编程学习(python&C--017)

2018-10-22  本文已影响0人  就如此简单

Python 练习实例31   Python 100例

题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。

程序代码:

day= raw_input("please input:")

if day== 'S':

    print ('please input second letter:')

    day= raw_input("please input:")

    if (day== 'a'):

        print ('Saturday')

    elif (day== 'u'):

        print ('Sunday')

    else:

        print 'data error' 

elif (day== 'F'):

    print ('Friday')

elif (day== 'M'):

    print ('Monday')

elif (day== 'T'):

    print ('please input second letter')

    day = raw_input("please input:")

    if (day== 'u'):

        print ('Tuesday')

    elif (day== 'h'):

        print ('Thursday')

    else:

        print ('data error')

elif (day == 'W'):

    print ('Wednesday')

else:

    print ('data error')


Python 练习实例32  Python 100例

题目:按相反的顺序输出列表的值。

程序分析:无。

程序代码:

L=[1,2,3,4,5,6]

for i in L[::-1]:

    print i,


Python 练习实例33

Python 100例 Python 100例

题目:按逗号分隔列表。

程序分析:无。

程序代码:

L=[1,2,3,4,5,6]

print L[0],

for i in range(1,6):

    print ",",L[i],


Python 练习实例36

Python 100例 Python 100例

题目:求100之内的素数。

程序分析:无。

程序代码:

for i in range(2,101):

    sum=0

    for j in range(2,i):

        if(i%j==0):

            sum=sum+1

    if(sum==0):

        print i,


题目24  素数距离问题 (南阳oj)

时间限制:3000 ms  |  内存限制:65535 KB

难度:2

描述

现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。

如果输入的整数本身就是素数,则输出该素数本身,距离输出0

输入

第一行给出测试数据组数N(0

接下来的N行每行有一个整数M(0

输出

每行输出两个整数 A B.

其中A表示离相应测试数据最近的素数,B表示其间的距离。

样例输入

3

6

8

10

样例输出

5 1

7 1

11 1

注:绝对值整数用abs()函数,有小数的(即浮点型)用fabs()函数

程序代码:

方法一(还有点小问题):

#include <stdio.h>

int main()

{

long int i,a,k,b,m,sum,x,y;

scanf("%d",&m);

while(m--)

{

sum=0;

x=0;

y=0;

scanf("%d",&a);

k=a;

while(sum!=(a-2))

{

sum=1;

for(i=2;i<a;i++)

{

if(a%i==0)

{

sum=sum+1;

}

}

if(sum==1)

{

break;

}

else

{

x=x+1;

a=a+1;

}

}

b=k;

while(sum!=(b-2))

{

sum=1;

for(i=2;i<b;i++)

{

if(b%i==0)

{

sum=sum+1;

}

}

if(sum==1)

{

break;

}

else

{

y=y+1;

b=b-1;

}

}

if((k-b)>(a-k))

{

printf("%d %d\n",a,x);

}

else

printf("%d %d\n",b,y);

}

}

方法二(转载至网上):

#include <stdio.h>

#define N 1000050

bool prime[N];

void init()//筛选法求素数

{

    for(int i=2;i<N;i++)

        prime[i] = true;

    for(int i=2;i*i<N;i++)

    {

        if(prime[i])

        {

            for(int j=i*i;j<N;j+= i)

            {

                prime[j] = false; 

            }

        }

    }

}

int main()

{

    init();

    int t;

    scanf("%d",&t);

    while(t--)

    {

        int n,ans;

        scanf("%d",&n);

        if(n==1)//当n=1时,直接输出

            printf("2 1\n");

        else

        {

            int i;//i为距离

            if(prime[n])

                ans=n,i=0;

            else

            {

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

                {

                    if(prime[n-i])//向前找素数

                    {

                        ans=n-i;

                        break;

                    }

                    if(prime[n+i])//向后找素数

                    {

                        ans=n+i;

                        break;

                    }

                }

            }

            printf("%d %d\n",ans,i);

        }

    }

    return 0;

}


上一篇下一篇

猜你喜欢

热点阅读