zoukankan      html  css  js  c++  java
  • 实验 21 问题回顾四 参考答案

    题目描述

    有一个圆,圆心坐标是(0,0),半径r=4.5,任意输入一个点的坐标(x,y),判断这个点是在圆内,圆周上,还是在圆外。

    输入要求

    两个浮点数x,y

    输出要求

    如果在圆内,输出in

    如果在圆外,输出out

    如果在圆上,输出on

    假如输入

    1.0 1.0

    应当输出

    in

    #include<stdio.h>

    #include<stdlib.h>

    int cmp(const void*a,const void*b)

    {

       return *(int*)a-*(int*)b;

    }

    int main(){

       int n,t,i,m=0,it[501];

       while(scanf("%d %d",&n,&t)!=EOF){

          m=0;

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

             scanf("%d",it+i);

          qsort(it,n,sizeof(int),cmp);

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

             if(it[i]>t)t+=2;

             else m++;

             t+=m;

             printf("%d ",t);}

       return 0;

    }

    题目描述

    用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10的-n次方为止(绝对值小于10的-n次方的这项不计算在内)。

    输入要求

    输入若干组精度要求n(3<=n<=8),n=0时退出,n超出范围输出“Error!”。

    输出要求

    输出各组不同精度要求的值。

    假如输入

    7

    0

    应当输出

    3.141592

    #include <stdio.h>

    #include <math.h>

     

    int main( )

    {

       int k,s=1;

       double n,t,pi;

       scanf("%d",&k);

       while (k!=0)

       { 

          if (k>=3 && k<=8)

          {

             n=1,t=1,pi=0;

             while((fabs(t))>pow(10,-k))

             {

                pi=pi+t;

                n=n+2;

                s=-s;

                t=s/n;

             }

             pi=pi*4;

             printf("%lf ",pi);

          }

          else

             printf("Error! ");

          scanf("%d",&k);

       }

       return 0;

    }

    题目描述

     著名意大利数学家斐波那契(Fibonacci)1202年提出一个有趣的问题。

    某人想知道一年内一对兔子可以生几对兔子。他筑了一道围墙,把一对大兔关在其中。已知每对大兔每个月可以生一对小兔,而每对小兔出生后第三个月即可成为“大兔”再生小兔。问一对小兔一年能繁殖几对小兔?

    输入要求

    多个正整数n(1<=n<=80),表示需要求第n个月新增的兔子对数。

    输出要求

     对于输入的n,求第n个月新增的兔子对数。当n=0时输入结束,该数据不作处理。

    假如输入

    16

    0

    应当输出

    987

    #include <stdio.h>

     

    int main(){

    #ifndef ONLINE_JUDGE

       freopen("in", "r", stdin);

    #endif

     

       // r[i][0] is the number of rabbits which born on current month

       // r[i][1] is the number of rabbits which are 2 months old

       // r[i][2] is the number of rabbits which are  months old (old rabbits can fertility bunny)

       long long r[81][3] = {{0,0,1}};

       for(int i=1; i<=80; i++){

          r[i][1] = r[i-1][0];

          r[i][2] = r[i-1][1] + r[i-1][2];

          r[i][0] = r[i][2];

       }

       int n;

       while(scanf("%d", &n), n){

          printf("%lld ", r[n][0]);

       }

     

       return 0;

    }

    题目描述

      输入三个自然数N,i,j(l≤i≤N,1≤j≤N),输出在一个N×N格的棋盘中,与格子(i,j)同行、同列、同一对角线的所有格子的位置。例如,n=4,i=2,j=3表示棋盘中的第二行第三列的格子,如:n=4,i=2,j=3表示了棋盘中的第二行第三列的格子,如下图:

    当n=4,i=2,j=3时,输出的结果是:
    (2,1) (2,2) (2,3) (2,4) {同一行上格子的位置}
    (1,3) (2,3) (3,3) (4,3) {同列列上格子的位置}
    (1,2) (2,3) (3,4) {左上到右下对角线上的格子的位置}
    (4,1) (3,2) (2,3) (1,4) {左下到右上对角线上的格子的位置}

    输入要求

    只有1行,共3个数,分别为N(1≤N≤10000),i,j的值。

    输出要求

    按照题目描述的格式输出。

    假如输入

    4 2 3

    应当输出

    (2,1)(2,2)(2,3)(2,4)

    (1,3)(2,3)(3,3)(4,3)

    (1,2)(2,3)(3,4)

    (4,1)(3,2)(2,3)(1,4)

    #include<stdio.h>

    #include<string.h>

    int main(){

       int N,a,b,c,d;

       while(scanf("%d%d%d",&N,&a,&b)!=EOF){

          c=b-a;

          d=b+a;

          int i,j;

          for(i=1;i<=N;i++) printf("(%d,%d)",a,i);

          puts("");

          for(i=1;i<=N;i++) printf("(%d,%d)",i,b);

          puts("");

          for(i=1;i<=N;i++) if(i+c>=1&&i+c<=N) printf("(%d,%d)",i,i+c);

          puts("");

          for(i=N;i>=1;i--) if(d-i>=1&&d-i<=N) printf("(%d,%d)",i,d-i);

          puts("");}

       return 0;

    }

    题目描述

    输入整数R,输出小于等于R的满足X2+Y2=Z2的所有正整数X,Y,Z。

    输入要求

    只有一个数:R(5≤R≤I000000)。

    输出要求

    只有一个数:表示共有多少组满足条件的勾股数。

    假如输入

    10

    应当输出

    2

    #include<stdio.h>

    #include<math.h>

    int main()

    {

       int r,i=0,x,y,z;

       scanf("%d",&r);

       for(x=1;x<=r;x++){

          for(y=1;y<=r;y++){

             for(z=1;z<=r;z++){

                if(x*x+y*y==z*z)

                    i=i+1;

             }

          }

       }

       i=i*0.5;

       printf("%d",i);

       return 0;

    }

    题目描述

    桐桐在研究素数时,发现有些素数很特别,例如131,它是素数,同时,它又是回文数:从左边读和从右边读都是同一个数。桐桐想把不大于n的所有既是回文数又是素数的数求出来,你能帮助她吗?

    输入要求

    输入数据有多组,每组只有一个整数n(2≤n≤10^6)。

    输出要求

    输出满足题设条件的数,每行输出5个数。

    假如输入

    100

    应当输出

    2 3 5 7 11

    #include<stdio.h>

    #include<math.h>

    int prime(int m);

    int isCircle(int m);

    int reverse(int i);

     

    int main( )

    {

       int m,count;

       long n;

       while (scanf("%ld",&n)!=EOF){

          count=0;

          for(m=2;m<=n;m++)

          {

             if(prime(m)!=0)

             {

                if(isCircle(m))

                {

                    if (count==0) printf("%d",m);

                    else printf(" %d",m);

                    count++;

                    if (count==5) {printf(" ",m);count=0;}

     

                }

             }

          }

          if (count!=0) printf(" ",m);

       }

       return 0;

    }

     

    int prime(int m)

    {

       int i,n;

       if(m==1)  return 0;

       n=sqrt(m);

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

          if(m%i==0)

          {

             return 0;

          }

          return 1;

    }

    int isCircle(int m)

    {

       int a;

       a=reverse(m);

       if(a==m)

          return 1;

       else

          return 0;

    }

     

    int reverse(int i)

    {

       int a,j=0;

       a=i;

       while(a)

       {

          j=j*10+a%10;

          a=a/10;

       }

       return j;

    }

    题目描述

    用泰勒展开式计算sin和cos值,当最后一项的绝对值小于0.00001时,累加结束

    输入

    输入两个正整数x和y,中间有一个空格

    输出

    sin(x)和cos(y),中间有一个空格

    输入

    30

    30

    输出

    0.500000

    0.866025

    提示:

    const double PI=3.1415926;

    弧度计算公式:x*PI/180, 其x代表你的输入;

    代码

    #include<stdio.h>

    const double PI=3.1415926; 

    double mysin(double); 

    double mycos(double); 

    double myabs(double); 

    int main( ) 

    {

        double a,b;

        scanf_s("%lf%lf",&a,&b);

        printf("%.6lf ",mysin(PI*a/180));

        printf("%.6lf ",mycos(PI*b/180));

        return 0; 

     

    double mysin(double x) 

        double sum=x,x_pow=x,item=x; 

        int n=1,s=1,a=1;       

        while(myabs(item)>0.00001) 

        { 

            s=s*(n+1)*(n+2);

            x_pow*=x*x;

            a=(-1)*a;

            item =x_pow/s*a;

            sum+=item;

            n+=2; 

        } 

        return sum; 

     

    double mycos(double x) 

        double sum=1,x_pow=1,item; 

        int n=0,s=1,a=-1; 

        do 

        { 

            s=s*(n+1)*(n+2); 

            x_pow*=x*x; 

            item =x_pow/s*a; 

            sum+=item; 

            a=(-1)*a; 

            n+=2; 

        }while(myabs(item)>0.00001); 

        return sum; 

     

    double myabs(double x) 

        return ((x>=0)?x:-x); 

    题目描述

    春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数。

    输入要求

    输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)

    输出要求

    对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;

    如果给定的范围内不存在水仙花数,则输出no;

    每个测试实例的输出占一行。

    假如输入

    100 120

    300 400

    121 200

    应当输出

    no

    370 371

    153

    提示

     while (scanf_s("%d%d",&m,&n)!=EOF)

    #include <stdio.h>

    int main()

    {

        int m,n;

        while (scanf("%d%d",&m,&n)!=EOF)

        {

            int i,j,count=0,b[3],a[5],t;

            for (i=m; i<=n; i++){

                b[0] = i/100;

                b[1] = i/10%10;

                b[2] = i%10;

                t = b[0]*b[0]*b[0]+b[1]*b[1]*b[1]+b[2]*b[2]*b[2];

                if (i==t) a[count++] = i;

            }

            for (j=0; j<count-1; j++)

                printf("%d ",a[j]);

            if (count) printf("%d ",a[count-1]);

            else printf("no ");

        }

        return 0;

    }

  • 相关阅读:
    养成好习惯:在控制面板里停止服务
    很吊炸天的Xcode插件,你想要的这都有
    Cscope how to support java and c++
    java_lambda表达式
    【C语言】14-返回指针的函数与指向函数的指针
    李洪强
    【C语言】13-指针和字符串
    李洪强-C语言7-C语言运算符
    【C语言】12-指向一维数组元素的指针
    李洪强-C语言6-控制结构
  • 原文地址:https://www.cnblogs.com/jlxuqiang/p/3476356.html
Copyright © 2011-2022 走看看