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

    OJ题目:问题回顾三

    题目描述

    sum=2+5+8+11+14+…,输入正整数n,求sum的前n项和。

    输入要求

    输出要求

    假如输入

    2

    应当输出

    7

    #include<stdio.h>

    int main(){

       int n;

       scanf("%d",&n);

       printf("%d",n*(3*n+1)/2);

       return 0;

    }

    题目描述

    从键盘输入任意20个整型数,统计其中的负数个数并求所有正数的平均值。

    保留两位小数

    输入要求

    输出要求

    假如输入

    1 2 3 4 5 6 7 8 9 10

    -1 -2 -3 -4 -5 -6 -7 -8 -9 -10

    应当输出

    10

    5.50

    #include<stdio.h>

     

    int main()

    {

       int a,count=0,i;

       double sum=0;

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

       {

          scanf("%d",&a);

          if(a<0)

             count++;

          else

             sum+=a;

       }

       printf("%d %.2lf ",count,sum/(20-count));

       return 0;

    }

    题目描述

    输入两个正整数m和n,求其最大公约数和最小公倍数。

    输入要求

    输出要求

    假如输入

    2 3

    应当输出

    1

    6

    提示

    #include<stdio.h>

    int main()

    {

       int m,n;

       scanf("%d %d",&m,&n);

       if(m<n)  {

          int temp;

          temp=n;

          n=m;

          m=temp;

       }

       int chengji;

       chengji=m*n;

       int r;

       while(n!=0) {

          r=m%n;

          m=n;

          n=r;

       }

       printf("%d %d ",m,chengji/m);

       return 0;

    }

    题目描述

    输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

    输入要求

    输出要求

    假如输入

    a 1,

    应当输出

    1

    1

    1

    1

    #include<stdio.h>

    int main()

    {

       int yingwen=0,shuzi=0,kongge=0,qita=0;

       char c;

       while((c=getchar())!=' ')

       {

          if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))

          {

             yingwen++;

          }

          else if(c>='0'&&c<='9')

          {

             shuzi++;

          }

          else if(c==' ')

          {

             kongge++;

          }

          else qita++;

       }

       printf("%d %d %d %d ",yingwen,kongge,shuzi,qita);

       return 0;

    }

    题目描述

    给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123

    输入要求

    一个不大于5位的数字

    输出要求

    三行 第一行 位数 第二行 用空格分开的每个数字,注意最后一个数字后没有空格 第三行 按逆序输出这个数

    假如输入

    12345

    应当输出

    5

    1 2 3 4 5

    54321

    提示

    哈姆雷特:数字还是字符?这是一个问题!

    #include<stdio.h>

    #include<string.h>

    int main(){

       char ch[6];

       int i;

       gets(ch);

       printf("%d ",strlen(ch));

       for(i=0;i<strlen(ch)-1;i++){

          printf("%c ",ch[i]);

       }

       printf("%c ",ch[strlen(ch)-1]);

       for(i=strlen(ch)-1;i>=0;i--){

          printf("%c",ch[i]);

       }

       return 0;

    }

    题目描述

    一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数

    输入要求

    M N

    输出要求

    它在第N次落地时反弹多高?共经过多少米? 保留两位小数,空格隔开,放在一行

    假如输入

    1000 5

    应当输出

    31.25 2875.00

    #include<stdio.h>

    int main(){

       int n;

       double m;

       int i;

       double a=0,b=0;

       scanf("%lf%d",&m,&n);

       a=m;

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

          a/=2;

          b+=(a*3);

       }

       printf("%.2f %.2f ",a,b-a);

       return 0;

    }

    题目描述

    输入一个字符串,空格作为单词分隔符,统计其中的单词,并将单词逆序输出

    输入要求

    输入一个字符串

    输出要求

    逆序输出单词

    假如输入

    I love you!

    应当输出

    you love I!

    #include <stdio.h>

    #include<string.h>

    int main(void)

    {   

       char stext[300],*p=stext;   

       gets(stext);

       int len=strlen(stext);

       char lastChar=stext[len-1]; // 将最后的字符(叹号)缓存;

       stext[len-1]='';

       while(*p)

          p++;   

       for(p--;p>stext;p--){       

          if(*p==' '){

             printf("%s ",p+1);           

             *p='';

          }

       }

       printf("%s",stext);

       printf("%c ",lastChar);  // 输出最后的字符(叹号);

       return 0;

    }

    题目描述

    输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。

    输入要求

    输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。

    输出要求

    对于每组输入数据,输出一行,结果保留两位小数。

    假如输入

    0 0 0 1

    0 1 1 0

    应当输出

    1.00

    1.41

    #include<stdio.h>

    #include<math.h>

    int main()

    {

       float x1,y1,x2,y2;

        while(scanf("%f %f %f %f",&x1,&y1,&x2,&y2)!=EOF)

       {

          printf("%.2f ",sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));

        }

       return 0;

    }

    题目描述

    根据当前银行的利率表,从键盘输入存款金额money,存期year和年利率rate,计算银行存款的本息

    计算公式为: sum=money(1+rate)year,sum为本息合计,输出保留一位小数。

    书上印刷有误,year应为指数。

    输入要求

    存款金额money,存期year和年利率rate

    输出要求

    本息合计

    假如输入

    10000 5 0.1

    应当输出

    16105.1

    #include<stdio.h>

    #include<math.h>

    int main(void)

    {

       int money=0,year=0;

       double rate,p,q,sum;

       scanf("%d %d %lf",&money,&year,&rate);

       p=rate+1.0;

       q=pow(p,year);

       sum=money*q;

       printf("%.1f",sum);

       return 0;

    }

  • 相关阅读:
    hihocoder [Offer收割]编程练习赛14 投掷硬币
    hihocoder [Offer收割]编程练习赛14 小Hi和小Ho的礼物
    CodeForces
    [HNOI2004] 打砖块
    CodeForces
    hdu4028 The time of a day[map优化dp]
    hdu5009 Paint Pearls[指针优化dp]
    hdu4719 Oh My Holy FFF[线段树优化dp]
    hdu1024 Max Sum Plus Plus[降维优化好题(貌似以后可以不用单调队列了)]
    hdu3709 Balanced Number[数位dp]
  • 原文地址:https://www.cnblogs.com/jlxuqiang/p/3475825.html
Copyright © 2011-2022 走看看