杭电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

}

内容概要:本文详细探讨了双馈风力发电机(DFIG)在Simulink环境下的建模方法及其在不同风速条件下的电流与电压波形特征。首先介绍了DFIG的基本原理,即定子直接接入电网,转子通过双向变流器连接电网的特点。接着阐述了Simulink模型的具体搭建步骤,包括风力机模型、传动系统模型、DFIG本体模型和变流器模型的建立。文中强调了变流器控制算法的重要性,特别是在应对风速变化时,通过实时调整转子侧的电压和电流,确保电流和电压波形的良好特性。此外,文章还讨论了模型中的关键技术和挑战,如转子电流环控制策略、低电压穿越性能、直流母线电压脉动等问,并提供了具体的解决方案和技术细节。最终,通过对故障工况的仿真测试,验证了所建模型的有效性和优越性。 适用人群:从事风力发电研究的技术人员、高校相关专业师生、对电力电子控制系统感兴趣的工程技术人员。 使用场景及目标:适用于希望深入了解DFIG工作原理、掌握Simulink建模技能的研究人员;旨在帮助读者理解DFIG在不同风速条件下的动态响应机制,为优化风力发电系统的控制策略提供理论依据和技术支持。 其他说明:文章不仅提供了详细的理论解释,还附有大量Matlab/Simulink代码片段,便于读者进行实践操作。同时,针对一些常见问给出了实用的调试技巧,有助于提高仿真的准确性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值