c语言找目标元素输入10个数,保存在数组中,在数组中查找某个数。如果找到了要求输出该数在数组中所在的位置,如果找不到则输出“没找到该数”的提?
找出数组里面任意两个数相加等于一个值k?
算法:找数组中两个数之和为目标数的数组的下标,给定一个整数数组um和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
在多个数组中查找某个数,看哪个数组包含 #includeint main(){int a[10]={20,40,50,70,80,10,15,25,45,100};int i,b,c;char t,y,n;do{printf(\"请输入20,40,50,70,80,10,15,25,45,100十个数中任意一个:\\n\");scanf(\"%d\",&b);printf(\"b=d\\n\",b);for(i=0;i;i+){if(a[i]=b)c=i+1;}printf(\"第%d位数\\n\",c);printf(\"是否继续y/n:\");fflush(stdin);scanf(\"%c\",&t);}while(t='y');return 0;}
[算法C++]检测数组里是否有两个数之和等于某个数解决方法一:先将数组排序,然后从两头开始遍历数组排序后,从左端开始取最小值,从右端取最大值,判断两者之和与目标的大小:1.等于时,输出两个数;2.大于时,右端移到第2个数,继续判断;3.小于时,左端移到第2个数,继续判断。includeincludeincludeusing namespace std;void fun1(int a[],int length,int target){给数组排序sort(a,a+length);left是最小值,right是最大值int left=0,right=length-1;while(left){int tmp=a[left]+a[right];if(tmp=target){cout[left][right];return;}else if(tmp>;target){/和比目标大,就减小right,从而减小和right-;}else {/和比目标小,就增大left,从而增大和left+;}}cout无;}int main(){int a[]={1,3,2,7,6,9,8,0,5,4};int target=0;while(cin>;>;target){fun1(a,10,target);}}上述方法虽然简单,但弊端也有,没法输出所有等于目标值的两个数。解决方法二:暴力解法,记录下每一个数与其他数的和放在一个二维数组里,然后遍历即可,这样可以记录下所有的和等于目标值的数值对,如下:假设输入数组为:2 3 4 5 1有如下矩阵:234512-5 6 7 33。
C语言:给定一个无序数组和一个目标值,找出数组中两个数之和等于目标值的所有组合。咋编程? 可以提供侑尝帮助。都可以解决。
数组中查找两个数字,其和等于指定数字,查看本程序哪里错了 package hmzsj;public class hmzsj {private int num1;private int num2;private int sum;第一处错误:find2num方法要加static,因为main方法是static修饰的,static修饰的函数只能调用static的方法,根本原因是static是类加载的时候就加载进来的(这个比较底层,不知道没事)*/public static void find2num(int a[],int dest){int i=0;int j=a.length;int num1=a[i];int num2=a[j-1];int sum=num1+num2;while(sum。dest&num1){if(sum){第二个错误,每次num1改变后都要赋值的,不然它永远是a[]中的第一个数num1=a[i+];sum=num1+num2;}if(sum>;dest){第三个个错误,每次num2改变后都要赋值的,不然它永远是a[]中的最后一个数num2=a[j-];sum=num1+num2;}if(sum=dest){System.out.println(num1+num2=dest);System.out.println(num1+num2);System.out.println(dest);}}}public static void main(String[]args){hmzsj sf1=new hmzsj();int a[]={1,2,3,4,5,6,7,8,9};int sum=17;sf1.find2num(a,sum);}}