假期编程

1.求绝对值(3min)
Problem Description
求实数的绝对值。
Input
输入数据有多组,每组占一行,每行包含一个实数。
Output
对于每组输入数据,输出它的绝对值,要求每组数据输出一行,结果保留两位小数。
Sample Input
123
-234.00
Sample Output
123.00
234.00
代码如下:
#include<stdio.h>
#include<math.h>
int main(void)
{
    double n;
    while(~scanf("%lf",&n))
    {
        if(n<0)
            n=-n;
        printf("%0.2lf\n",n);
    }
  
    return 0;
    
}

2.计算球的体积(3min)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2002

Problem Description
根据输入的半径值,计算球的体积。
Input
输入数据有多组,每组占一行,每行包括一个实数,表示球的半径。
Output
输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数。
Sample Input
1
1.5
Sample Output
4.189
14.137
题解:此题也异常简单,只要知道怎么计算球体积就可以 了,但是不要忘记三分之四的4要写成4.0.
#include<stdio.h>
#include<math.h>
#define PI 3.1415927
int main(void)
{
    double r;
    while(~scanf("%lf",&r))
    {
               double V=0;
               V=4.0/3*PI*r*r*r;
               printf("%0.3lf\n",V);
    }
  
    return 0;
    
}

 3.成绩转换(4min)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2004

Problem Description
输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下:
90~100为A;
80~89为B;
70~79为C;
60~69为D;
0~59为E;
Input
输入数据有多组,每组占一行,由一个整数组成。
Output
对于每组输入数据,输出一行。如果输入数据不在0~100范围内,请输出一行:“Score is error!”。
Sample Input
56
67
100
123
Sample Output
E
D
A
Score is error!
题解:此题也简单,五个循环就可以搞定。
#include<stdio.h>
#include<math.h>
int main(void)
{
    int  t;
    while(~scanf("%d",&t))
    {
        if(t>=90&&t<=100)
            printf("A\n");
        else if(t>=80&&t<=89)
            printf("B\n");
        else if(t>=70&&t<=79)
            printf("C\n");
        else if(t>=60&&t<=69)
            printf("D\n");
        else if(t>=0&&t<=59)
            printf("E\n");
        else 
            printf("Score is error!\n");
    }
  
    return 0;
    
}

 4.ASCII码排序(38min)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2000

Problem Description
输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。
Input
输入数据有多组,每组占一行,有三个字符组成,之间无空格。
Output
对于每组输入数据,输出一行,字符中间用一个空格分开。
Sample Input
qwe
 asd
zxc
Sample Output
e q w
a d s
c x z
题解:此题思路有三步:
                                   1.每次要先从控制台接收3个字符串,我是定义了一个字符数组接收三个字符串。
                                   2.把接收的三个字符串转成对应的ASCII按从小到大排序,我用的是选择排序。
                                   3.把转成ASCII的字符按从小到大顺序再转换成字符输出。
但是,但是,但是,你按照上面思路写的代码不一定对,因为scanf在接收字符时,换行也会被接收,所以在定义字符数组时,要多定义一个长度来存储换行,要不然,你总是得不到你想要的结果,问题就出在换行也时一个字符。
代码如下:
#include<stdio.h>
#include<math.h>
int main(void)
{
    char t[4];
    int  a[3];
    while(~scanf("%c%c%c%c",&t[0],&t[1],&t[2],&t[3]))
    {
        a[0]=t[0]-'0';
        a[1]=t[1]-'0';
        a[2]=t[2]-'0';
        
        int i;
        int temp;
        int j;
        int k;
        for(i=0;i<3;i++)
        {
            k=i;
            for(j=i;j<3;j++)
                 if(a[j]<a[k])
                      k=j;
                 temp=a[k];
                 a[k]=a[i];
                 a[i]=temp;
            
    }
    printf("%c %c %c\n",a[0]+'0',a[1]+'0',a[2]+'0');
    
    }
  
    return 0;
    
}

 

 
posted @ 2020-01-29 20:26  萍2樱释  阅读(154)  评论(0编辑  收藏  举报