C语言-找出数组中两个数字的和为该数字的位置

1.题目要求

复制代码
(语言: C)给定一组整形数组和一个数字,找出数组中两个数字的和为该数字的位置,例如
数组{2, 7, 11, 15}, 数字9,输出为1,2

函数原型为:
int *twoSum(int numbers[], int n, int target) 
//函数中定义一个动态数组,用于存储这两个数字的下标,最后返回动态数组的首地址。
//不要忘了在主函数中要释放动态数组占用的内存。

输入输出格式为
printf("Please input the array size\n");
scanf("%d");
for()
 {
        printf("Please input the %d-th number\n",i);
        scanf("%d");
 }
    printf("Please input the target number\n");
    scanf("%d");
    if (存在)
    {
        printf("The index1: %d; the index2: %d\n");
        printf("values are %d and %d.\n");
    }else
    {
        printf("result is not available!\n");
    }

程序运行如下
Please input the array size
3
Please input the 0-th number
1
Please input the 1-th number
2
Please input the 2-th number
3
Please input the target number
3
The index1: 1; the index2: 2
values are 1 and 2.

2.代码实现

cpp 复制代码
#include <stdio.h>
#include <stdlib.h>

int *twoSum(int numbers[], int n, int target) {
    int *result = (int *)malloc(2 * sizeof(int));
    for (int i = 0; i < n - 1; i++) {
        for (int j = i + 1; j < n; j++) {
            if (numbers[i] + numbers[j] == target) {
                result[0] = i;
                result[1] = j;
                return result;
            }
        }
    }
    free(result);
    return NULL;
}

int main() {
    int n;
    printf("Please input the array size\n");
    scanf("%d", &n);

    int *numbers = (int *)malloc(n * sizeof(int));
    for (int i = 0; i < n; i++) {
        printf("Please input the %d -th number\n", i);
        scanf("%d", &numbers[i]);
    }

    int target;
    printf("Please input the target number\n");
    scanf("%d", &target);

    int *result = twoSum(numbers, n, target);
    if (result) {
        printf("The index1: %d; the index2: %d\n", result[0], result[1]);
        printf("values are %d and %d.\n", numbers[result[0]], numbers[result[1]]);
        free(result);
    } else {
        printf("result is not available!\n");
    }

    free(numbers);
    return 0;
}
相关推荐
行者9622 分钟前
Flutter跨平台开发在OpenHarmony上的评分组件实现与优化
开发语言·flutter·harmonyos·鸿蒙
阿蒙Amon32 分钟前
C#每日面试题-Array和ArrayList的区别
java·开发语言·c#
666HZ66643 分钟前
数据结构2.0 线性表
c语言·数据结构·算法
SmartRadio1 小时前
ESP32添加修改蓝牙名称和获取蓝牙连接状态的AT命令-完整UART BLE服务功能后的完整`main.c`代码
c语言·开发语言·c++·esp32·ble
且去填词1 小时前
Go 语言的“反叛”——为什么少即是多?
开发语言·后端·面试·go
知乎的哥廷根数学学派1 小时前
基于生成对抗U-Net混合架构的隧道衬砌缺陷地质雷达数据智能反演与成像方法(以模拟信号为例,Pytorch)
开发语言·人工智能·pytorch·python·深度学习·机器学习
yeziyfx2 小时前
kotlin中 ?:的用法
android·开发语言·kotlin
charlie1145141912 小时前
嵌入式的现代C++教程——constexpr与设计技巧
开发语言·c++·笔记·单片机·学习·算法·嵌入式
古城小栈2 小时前
Rust 网络请求库:reqwest
开发语言·网络·rust
hqwest3 小时前
码上通QT实战12--监控页面04-绘制6个灯珠及开关
开发语言·qt·qpainter·qt事件·stackedwidget