C语言实现两数之和与大小比较实战

阿麦
阿麦
发布时间:2026-10-15| 5人浏览过
原创

本文解析C语言中实现“两数之和”算法与“比较两数大小”的基础方法,涵盖数组遍历查找、动态内存分配及输入输出处理,通过具体代码示例展示核心逻辑与常见陷阱。

C语言实现两数之和

在数组操作中,“两数之和”是经典的算法问题。我们需要在一个整型数组中找到两个元素,使它们的和等于给定的目标值(target),并返回这两个元素在原数组中的索引。这里我们采用暴力枚举法,即使用两层嵌套循环进行遍历。这种方法虽然时间复杂度较高,但逻辑直观,易于实现。

实现要点如下:

  1. 内存分配:由于需要返回结果数组的指针,且长度固定为2,需使用 malloc 动态分配内存。
  2. 嵌套遍历:外层循环从第一个元素开始,内层循环从当前元素的下一个位置开始,避免重复配对。
  3. 条件判断:检查两数之和是否等于 target,若匹配则记录索引并返回。

以下是核心代码实现,注意其中对 returnSize 的设置以告知调用者返回数组的大小:

int *twoSum(int *nums , int numsSize , int target , int *returnSize)
{
     int i = 0 , j = 0;
     *returnSize = 2; // 设置返回数组大小为2
     int *a = (int *)malloc(sizeof(int) * 2); // 动态分配内存
     for(i = 0;i<numsSize;i++)
     {
         for(j=i+1;j<numsSize;j++)
         {
                 if(nums[i] + nums[j] == target) // 修正原逻辑错误:应等于target而非0
                     { 
                              a[0] = i;
                              a[1] = j;
                              return a;
                     }
       }
             
       }
       free(a); // 建议释放未找到的内存,防止泄漏(实际场景中通常不会走到这里若无解)
       return NULL; // 无解时返回NULL更规范
}

注意: 原文代码中 if(nums[i] + nums[j] == 0) 存在逻辑偏差,通常题目要求是和等于 target 参数,此处已修正。main 函数中需注意释放 malloc 分配的内存以避免内存泄漏。

C语言中比较两数大小

比较两个数值的大小是编程中最基本的逻辑之一。在实际应用中,通常需要从键盘获取用户输入的两个数值,经过条件判断后输出较大的那个。

操作步骤分析

  • 输入:使用 scanf 函数从标准输入读取两个整数或实数。注意变量前的地址符 &。
  • 逻辑判断:利用 if-else 结构或三元运算符比较两个变量 a 和 b。
  • 存储与输出:将较大值赋给中间变量 max,最后使用 printf 输出结果。

代码实现与纠错

原文提供的代码中存在一个严重的语法错误:if(a>b); 后的分号导致 max=a; 无论条件是否成立都会执行,从而破坏了逻辑。此外,建议使用 double 类型支持“实数”比较。修正后的正确代码如下:

#include <stdio.h>

int main()
{
    double a, b, max;
    printf("请输入两个数字: ");
    scanf("%lf %lf", &a, &b);
    
    if (a > b) {
        max = a;
    } else {
        max = b;
    }
    
    printf("较大的数是: %lf\n", max);
    return 0;
}

若严格按照原文意图仅修正最小逻辑错误而不改变类型定义,代码如下:

#include "stdio.h"
void main()
{
    int a,b,max;
    scanf("%d %d",&a,&b);
    if(a>b)
    {
        max=a;
    }
    else // 增加else分支以覆盖a<b的情况
    {
        max=b;
    }
    printf("max=%d\n",max);
}

当输入为 1 和 2 时,程序正确识别出较大的数为 2。运行效果如下图所示:

以上就是C语言实现两数之和及比较两数大小的详细内容,更多关于C语言算法基础入门的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。