给定目标值,求数组中两个数之和等于该目标值,并返回两个数的下标,且输出这两个数

  • 实例要求:
  • 1、给定目标值,求数组中有无两个数之和等于该目标值
  • 2、若数组中这两个数,则返回两个数的下标,并输出这两个数
  • 3、若数组中没有这两个数,则说明情况
  • 实例分析:
  • 1、嵌套遍历数组,寻找这两个数;
  • 2、使用指针函数即可;
  • 3、使用for循环遍历,if条件语句判断
  • 示例代码:
	#include 
	#include 
	#include 
	
	int *twoSum(int *nums, int numsSize, int target, int *returnSize)
	{
	    int i = 0;
	    int j = 0;
	    int *result = (int *)malloc(sizeof(int) * 2);
	    for (i = 0; i < numsSize; i++)
	    {
	        for (j = i + 1; j < numsSize; j++)
	        {
	            if (nums[i] + nums[j] == target)
	            {
	                result[0] = i;
	                result[1] = j;
	                return result;
	            }
	        }
	    }
	    return result;
	}
	
	int main(int argc, char const *argv[])
	{
	    int nums[] = {2, 7, 11, 15};
	    int target = 9;
	    int returnSize = 2;
	    int numsSize = sizeof(nums) / sizeof(nums[0]);
	    int *result = twoSum(nums, numsSize, target, &returnSize);
	    if (NULL == result)
	    {
	        printf("该数组中没有两个数之和等于目标数\n");
	    }
	    else
	    {
	        printf("这两个数的下标分别是%d,%d\n", result[0], result[1]);
	        printf("这两个数的分别是%d,%d\n", nums[result[0]], nums[result[1]]);
	    }
	
	    return 0;
	}

  • 运行结果:
	linux@ubuntu:~/work/test1$ gcc t3.c 
	linux@ubuntu:~/work/test1$ ./a.out 
	这两个数的下标分别是0,1
	这两个数的分别是2,7

你可能感兴趣的:(C语言练习题系列,数据结构,学习,linux)