求数组中两数之和==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;
}为啥错了 这个程序的目的是在一个数组中找到两个数,它们的和等于给定的目标值(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 小助理,如未能正确解答您的问题,请继续追问。 可是,在我这里是对的
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>
为什么你要说是错的? jackz007 发表于 2024-10-23 20:54
可是,在我这里是对的
那个getchar要读取一个数吗 getchar() 会读取一个字符,scanf("%d" , & nums) 才会读取到一个数。
页:
[1]