#include <stdio.h>
#include <stdlib.h>
int* twoSum(int* nums, int numsSize, int target, int* returnSize)
{
int i,j;
*returnSize=2; //规定返回值长度
int result=NULL;
for(i=0;i<numsSize-1;i++)
{
for(j=i+1;j<numsSize;j++)
{
if(nums[i]+nums[j]==target)
{
result=(int)malloc(sizeof(int)*2);
result[0]=i; result[1]=j;
return result;
}
}
}
return result;
}
int main(void)
{
int target=3;
int nums[3]={1,2,3};
int numsSize=3;
int *returnSize;
//twoSum(*nums, numsSize, target, *returnSize);
printf("%d",twoSum(*nums, numsSize, target, *returnSize));
return 0;
}
修改如下,供参考:
#include <stdio.h>
#include <stdlib.h>
int* twoSum(int* nums, int numsSize, int target, int* returnSize)
{
int i, j;
*returnSize = 2; //规定返回值长度
int* result = NULL;
for (i = 0; i < numsSize - 1; i++)
{
for (j = i + 1; j < numsSize; j++)
{
if (nums[i] + nums[j] == target)
{
result = (int*)malloc(sizeof(int) * 2);
result[0] = i; result[1] = j;
return result;
}
}
}
return result;
}
int main(void)
{
int target = 3;
int nums[3] = { 1,2,3 };
int numsSize = 3;
int returnSize; //int* returnSize; 修改
int* result; //修改
//twoSum(*nums, numsSize, target, *returnSize);
result = twoSum(nums, numsSize, target, &returnSize); //修改
if (result != NULL) //修改
for (int i = 0; i < returnSize; i++) //修改
printf("nums[%d] = %d\n", result[i], nums[result[i]]);
else
printf("No Find\n"); //修改
//printf("%d", twoSum(*nums, numsSize, target, *returnSize));
return 0;
}
return 0;前加个卡屏或者死循环??程序太快,一闪而过???