优化后的代码,

简介: 优化后的代码,

为了优化上述C语言代码以提高效率,我们可以从减少不必要的输入/输出、优化循环结构、减少字符串处理开销以及避免缓冲区溢出等方面入手。

#include <stdio.h>
#include <string.h>
#include <stdbool.h>
 
// 函数声明,用于读取正整数
bool readPositiveInteger(int *number);
 
int main() {
    int number, sum = 0;
    char again = 'y';
 
    // 主循环,读取正整数并累加
    do {
        if (readPositiveInteger(&number)) {
            sum += number;
        }
 
        // 询问用户是否继续输入
        printf("要继续输入吗?(y/n):");
        scanf(" %c", &again);
 
        // 清除输入缓冲区
        while (getchar() != '\n');
 
    } while (again == 'y' || again == 'Y');
 
    // 输出结果
    printf("所有输入的正整数之和为:%d\n", sum);
 
    // 扩展示例:逆序打印字符串
    char str[100];
    int length, i;
 
    // 读取字符串,并直接计算长度
    printf("请输入一个字符串:");
    if (scanf("%99s", str) == 1) {
        length = strlen(str);
 
        // 逆序打印字符串
        printf("逆序打印的字符串为:");
        for (i = length - 1; i >= 0; i--) {
            putchar(str[i]);
        }
        printf("\n");
    } else {
        printf("输入错误,请确保输入的是字符串。\n");
    }
 
    return 0;
}
 
// 读取正整数函数
bool readPositiveInteger(int *number) {
    // 清除任何可能的输入缓冲区残留
    while (getchar() != '\n');
 
    // 读取整数并检查是否成功
    if (scanf("%d", number) != 1 || *number <= 0) {
        // 输入错误或不是正整数
        printf("输入无效,请输入一个正整数。\n");
        return false;
    }
    return true;
}
 
// 说明:
// 1. 我们将读取正整数的逻辑封装到了一个函数中,该函数负责清除输入缓冲区,读取整数,并检查是否成功。
// 2. 减少了不必要的`printf`调用,只在需要时输出信息。
// 3. 使用`strlen`函数直接计算字符串长度,避免了额外的循环。
// 4. 逆序打印字符串时,使用`putchar`代替`printf`,因为`putchar`更轻量级,仅用于输出单个字符。
// 5. 我们还添加了对`scanf`的返回值检查,以确保输入的是字符串,而不是其他类型的数据。
 
// 注意:虽然这些优化可以提高代码的效率,但在实际应用中,效率提升可能并不显著,
// 因为程序的主要开销通常来自于I/O操作(如`printf`和`scanf`),
// 而不是CPU密集型任务。对于大型程序,还需要考虑其他优化策略,如算法优化、数据结构选择等。

以上代码通过封装函数、减少不必要的I/O操作、优化字符串处理和使用更轻量级的函数等方法,提高了原始代码的效率。然而,对于这样的小型程序,性能提升可能并不明显,因为大部分开销来自于与用户的交互。在实际应用中,需要根据具体情况选择适当的优化策略。

相关文章
|
4月前
|
设计模式 存储
代码优化设计问题之优化枚举的getByName方法以提高效率问题如何解决
代码优化设计问题之优化枚举的getByName方法以提高效率问题如何解决
|
5月前
|
测试技术 持续交付 API
Airtest脚本的重构与优化:提升测试效率和可读性
通过对Airtest脚本的重构与优化,我们不仅能提升测试效率,还能增强脚本的可读性和可维护性。这些改进将有助于应对不断变化的测试需求,为保证软件质量提供坚实的支持。记住,优化是一个持续的过程,定期回顾和调整测试脚本是保持测试项目健康的关键。希望以上分享能帮助大家在自动化测试的道路上更进一步。
|
6月前
|
前端开发 JavaScript API
前端代码优化方法
前端代码优化方法
86 0
|
6月前
|
C++
代码优化方式一
代码优化方式一
|
Java 编译器 应用服务中间件
代码开发优化细节
带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所有的方法都是final的。Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化。此举能够使性能平均提高50% 。
209 2
代码开发优化细节
|
缓存 Java 编译器
探究Java方法的优化与最佳实践:提升性能与代码可维护性
探究Java方法的优化与最佳实践:提升性能与代码可维护性
139 0
优化if-else代码的几种方案
优化if-else代码的几种方案
|
测试技术
代码为啥不能过度优化
代码为啥不能过度优化
74 0