欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > C语言-找出数组中两个数字的和为该数字的位置

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

2025/5/20 8:18:44 来源:https://blog.csdn.net/2402_86955314/article/details/144802114  浏览:    关键词: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.代码实现 

#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;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词