7-1 和为某个值的两个数 (10 分)
有一个整数数组L,有N个元素,请找出数组中和为S的两个不相等的元素,并将这两个数按从小到大顺序输出,如果有多对数字满足要求,输出第一对即可,如果不存在满足条件的数对,输出Not found。
输入格式:
输入为一组整数,第一行是整数N(0<N<=100),为数组元素的个数。 第二行是n个整数,是数组的N个元素。 第三行是S,为题目中指定的和值。
输出格式:
如果存在满足条件的数对,请输出第一对整数即可(按数组中的前后顺序输出),否则输出“Not found”。
输入样例1
5
7 5 2 10 4
9
输出样例1
2 7
输入样例2
8
2 3 5 7 10 13 20 25
43
输出样例2
Not found
输入样例3
8
12 13 15 17 10 13 10 25
20
输出样例3
Not found
跑一下这个代码,应该这个效果
#include<stdio.h>
int main(){
int n,i,j;
int a[100];
int s;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d ",&a[i]);
}
scanf("%d",&s);
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(a[i]!=a[j]&&a[i]+a[j]==s){
a[i]<a[j]?printf("%d %d",a[i],a[j]):printf("%d %d",a[j],a[i]);
return 0;
}
}
}
printf("Not found");
return 0;
}
int main()
{
int n,i,j,sum;
scanf("%d",&n);
int *p = new int[n];
for(i=0;i<n;i++)
scanf("%d",&p[i]);
scanf("%d",&sum);
//
bool bFound = false;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if((p[i]+p[j] == sum) && p[i]!=p[j])
{
int min=p[i],max=p[j];
if(min > max)
{
min = p[j];
max = p[i];
}
printf("%d %d\n",min,max);
bFound = true;
break;
}
}
if(bFound)
break;
}
if(!bFound)
printf("Not found\n");
return 0;
}
用2个循环嵌套就可以了。找到一次后就终止循环。
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632