鱼C论坛

 找回密码
 立即注册
查看: 619|回复: 4

[萌新报道] 求数组中两数之和==target并且找出下标

[复制链接]
发表于 2024-10-23 20:30:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int main()
{
        int nums[1000],target,i=0,x,y,c,sum=0;
        char n;
        printf("nums = ");
        while(getchar()!='\n')
        {
                scanf("%d",&nums[i]);
                i++;
        }
        printf("target =");
        scanf("%d",&target);
        for(x=0;x<=i;x++)
        {
                for(y=x+1;y<=i;y++)
                {
                        if(nums[x]+nums[y]==target)
                        {
                                printf("[%d,%d]",x,y);
                                goto FINDING;
                        }
                        else
                        {
                                continue;
                        }
                }
        }
        FINDING:
        return 0;
}为啥错了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-10-23 20:31:21 | 显示全部楼层
这个程序的目的是在一个数组中找到两个数,它们的和等于给定的目标值(target),并返回这两个数的下标。下面是一个完成该任务的简洁代码示例:

  1. #include <stdio.h>

  2. int main() {
  3.     int nums[100];  // 假设数组的最大长度为100
  4.     int target, i = 0;
  5.     int x, y;
  6.    
  7.     printf("请输入数组元素,以空格分隔,以回车结束:\n");
  8.     while (scanf("%d", &nums[i]) == 1) {
  9.         i++;
  10.     }
  11.    
  12.     printf("target = ");
  13.     scanf("%d", &target);

  14.     // 找到两数之和等于 target 的下标
  15.     for (x = 0; x < i - 1; x++) {
  16.         for (y = x + 1; y < i; y++) {
  17.             if (nums[x] + nums[y] == target) {
  18.                 printf("下标为: %d 和 %d\n", x, y);
  19.                 return 0;  // 找到后立即退出
  20.             }
  21.         }
  22.     }
  23.    
  24.     printf("没有找到符合条件的数。\n");
  25.     return 0;
  26. }
复制代码


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-10-23 20:54:06 | 显示全部楼层
        可是,在我这里是对的

  1. D:\[exercise]\C>g++ -o x x.c

  2. D:\[exercise]\C>x
  3. nums = 5
  4. 1 2 3 4 5
  5. target =8
  6. [2,4]
  7. D:\[exercise]\C>x
  8. nums = 5
  9. 1 2 3 4 5
  10. target =6
  11. [0,4]
  12. D:\[exercise]\C>
复制代码


        为什么你要说是错的?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-10-23 22:35:46 From FishC Mobile | 显示全部楼层
jackz007 发表于 2024-10-23 20:54
可是,在我这里是对的



那个getchar要读取一个数吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-10-23 23:05:00 | 显示全部楼层
        getchar() 会读取一个字符,scanf("%d" , & nums[i]) 才会读取到一个数。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-8 01:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表