鱼C论坛

 找回密码
 立即注册
查看: 123|回复: 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;
}为啥错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-10-23 20:54:06 | 显示全部楼层
        可是,在我这里是对的
D:\[exercise]\C>g++ -o x x.c

D:\[exercise]\C>x
nums = 5
1 2 3 4 5
target =8
[2,4]
D:\[exercise]\C>x
nums = 5
1 2 3 4 5
target =6
[0,4]
D:\[exercise]\C>

        为什么你要说是错的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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



那个getchar要读取一个数吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-10-23 23:05:00 | 显示全部楼层
        getchar() 会读取一个字符,scanf("%d" , & nums[i]) 才会读取到一个数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 16:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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