实验 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;

}

原文地址:https://www.cnblogs.com/jlxuqiang/p/3475825.html