dinghuang 发表于 2024-10-23 20:30:22

求数组中两数之和==target并且找出下标

#include<stdio.h>
int main()
{
        int nums,target,i=0,x,y,c,sum=0;
        char n;
        printf("nums = ");
        while(getchar()!='\n')
        {
                scanf("%d",&nums);
                i++;
        }
        printf("target =");
        scanf("%d",&target);
        for(x=0;x<=i;x++)
        {
                for(y=x+1;y<=i;y++)
                {
                        if(nums+nums==target)
                        {
                                printf("[%d,%d]",x,y);
                                goto FINDING;
                        }
                        else
                        {
                                continue;
                        }
                }
        }
        FINDING:
        return 0;
}为啥错了

FishC 发表于 2024-10-23 20:31:21

这个程序的目的是在一个数组中找到两个数,它们的和等于给定的目标值(target),并返回这两个数的下标。下面是一个完成该任务的简洁代码示例:

#include <stdio.h>

int main() {
    int nums;// 假设数组的最大长度为100
    int target, i = 0;
    int x, y;
   
    printf("请输入数组元素,以空格分隔,以回车结束:\n");
    while (scanf("%d", &nums) == 1) {
      i++;
    }
   
    printf("target = ");
    scanf("%d", &target);

    // 找到两数之和等于 target 的下标
    for (x = 0; x < i - 1; x++) {
      for (y = x + 1; y < i; y++) {
            if (nums + nums == target) {
                printf("下标为: %d 和 %d\n", x, y);
                return 0;// 找到后立即退出
            }
      }
    }
   
    printf("没有找到符合条件的数。\n");
    return 0;
}

### 代码说明:
1. 使用数组 `nums` 存储用户输入的数。
2. 通过 `scanf` 读取用户输入,用户输入完数组后再按下回车。
3. 嵌套循环遍历数组,找到满足 `nums + nums == target` 的两个数。
4. 一旦找到符合条件的两个数,打印它们的下标并退出程序。
5. 如果找不到符合条件的数,输出提示信息。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2024-10-23 20:54:06

      可是,在我这里是对的

D:\\C>g++ -o x x.c

D:\\C>x
nums = 5
1 2 3 4 5
target =8

D:\\C>x
nums = 5
1 2 3 4 5
target =6

D:\\C>

      为什么你要说是错的?

dinghuang 发表于 2024-10-23 22:35:46

jackz007 发表于 2024-10-23 20:54
可是,在我这里是对的




那个getchar要读取一个数吗

jackz007 发表于 2024-10-23 23:05:00

      getchar() 会读取一个字符,scanf("%d" , & nums) 才会读取到一个数。
页: [1]
查看完整版本: 求数组中两数之和==target并且找出下标