杭电OJ2000-2003题解析

声明以下是我在用C语言刷题时的代码,如涉及侵权马上删除文章

声明:本文主要用作技术分享,所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律法规。

2000

输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。

 Input:输入数据有多组,每组占一行,有三个字符组成,之间无空格。

Output:对于每组输入数据,输出一行,字符中间用一个空格分开。

 Sample Input:qwe     asd      zxc

 Sample Output:e q w     a d s      c x z

代码:

#include <stdio.h>

int main() {

    char str[4]; // 存放三个字符和一个结束符

    // 使用循环来处理多组输入

    while (scanf("%s", str) != EOF) {

        // 由于输入的字符串已经以字符数组的形式存储,我们可以直接使用字符串比较函数

        // 或者使用qsort等排序函数,但为了简单起见,这里我们使用简单的冒泡排序

        char temp;

        for (int i = 0; i < 2; i++) { // 只需要两次遍历,因为只有三个元素

            for (int j = 0; j < 2 - i; j++) {

                if (str[j] > str[j + 1]) {

                    // 交换字符

                    temp = str[j];

                    str[j] = str[j + 1];

                    str[j + 1] = temp;

                }

            }

        }

        // 输出排序后的字符,字符之间用一个空格隔开

        printf("%c %c %c\n", str[0], str[1], str[2]);

    }

    return 0;

}

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

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

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

Sample Input;0 0 0 1       0 1 1 0

Sample Output:1.00     1.41

代码:

#include <stdio.h>

#include <math.h>

int main() {

    double x1, y1, x2, y2;

    double distance;

    // 使用循环来处理多组输入

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

        // 计算两点间的距离

        distance = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));

        // 输出结果,保留两位小数

        printf("%.2f\n", distance);

    }

    return 0;

}

2002根据输入的半径值,计算球的体积。

Input:输入数据有多组,每组占一行,每行包括一个实数,表示球的半径。

Output:输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数。

Sample Input:1     1.5

Sample Output:4.189     14.137

Hint: #define PI 3.1415927

代码:

#include <stdio.h>  // 包含标准输入输出头文件

#define PI 3.1415927  // 定义常量 PI 表示圆周率

int main() {  // 主函数,程序的入口

    double radius;  // 定义一个双精度浮点数 radius 用于存储球的半径

    while (scanf("%lf", &radius)!= EOF) {  // 当从标准输入读取半径的值不为文件结束标志时,执行循环

        double volume = (4.0 / 3.0) * PI * radius * radius * radius;  // 计算球的体积

        printf("%.3f\n", volume);  // 以保留三位小数的格式输出体积,并换行

    }

    return 0;  // 主函数正常返回 0

}

2003

Problem Description求实数的绝对值。

Input:输入数据有多组,每组占一行,每行包含一个实数。

Output:对于每组输入数据,输出它的绝对值,要求每组数据输出一行,结果保留两位小数。

Sample Input:123    -234.00

Sample Output:123.00    234.00

代码:

#include <stdio.h>  // 包含标准输入输出头文件

#include <math.h>  // 包含数学函数库

int main() {  // 主函数,程序执行的起点

    double number;  // 定义一个双精度浮点数用于存储输入的值

    while (scanf("%lf", &number)!= EOF) {  // 不断从标准输入读取双精度浮点数,直到遇到文件结束标志

        printf("%.2f\n", fabs(number));  // 输出该数的绝对值,保留两位小数并换行

    }

    return 0;  // 主函数正常结束返回 0

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值