首页 > 软件 > set输出小于 xx 且和 xx 最接近的元素的值,如果不存在输出NO

set输出小于 xx 且和 xx 最接近的元素的值,如果不存在输出NO

软件 2023-01-12

java中给定整形数组,输出该数组中和数值2最接近的元素

最接近的元素. 那么就是之间的差值的绝对值最小的数字 .

参考代码如下: 如果有其他需求,可以在下面的代码基础上进行修改

publicclassNumber{
publicstaticvoidmain(String[]args){
int[]ary={-1,5,3,-2};//给定数组
newNumber().close(ary);
}

publicvoidclose(int[]a){
intnum=2;//指定和谁比较接近
intcloseNum=Integer.MAX_VALUE;//存储最接近的数字
intsteep=Integer.MAX_VALUE;//存储两者之间的距离
for(inti=0;i if(Math.abs(a[i]-num) steep=Math.abs(a[i]-num);//距离修改成现在的距离
closeNum=a[i];//最接近的数字,修改现在的数字
}
}
System.out.println("最接近"+num+"的数字是:"+closeNum+"\n与数字2之间的距离是"+steep);
}
}

测试输出

最接近2的数字是:3
与数字2之间的距离是1

输出小于n的所有水仙花数。如果该范围内部不存在水仙花数,则输出No Answer。

增加一个指标标准; #include #include int main() { int i, j, k,tp=0; int n,a; scanf("%d",&n); for (a = 100; a < n; a++) { i = a / 100; j = a / 10 - i * 10; k = a - i * 100 - j * 10; if (pow(i, 3) + pow(j, 3) + pow(k, 3) == a) { printf("%d\n", a); tp=1; } } if(tp==0) printf("No Answer\n"); r

输入x,输出x在a中的位置下标,若数组a没有值为a的元素 则输出no found 用指针

#include "stdio.h" int search(int list[], int n, int x){int i;for(i = 0; i < n; i++){if(list[i] == x) {return i;};}return -1;} void main(){int a[10];int i, x;for(i = 0; i < 10; i++){scanf("%d", &a[i]);}scanf("%d", &x);i = search(a, 10, x);if(i >=0) {printf("x is at %d", i);}else {printf("Not found")

c++找公共元素:求两个数组中的公共元素(顺序以第一个数组为准)如果没有公共元素,则输出no。

#include"stdafx.h"
#include
#include
voidsort(int*src,intlen);
intmain()
{
printf("请输入第一个数组的数据个数\n");
intn;
scanf("%d",&n);
printf("请输入第一个数组所要包含的数据,请用空格隔开\n");
std::vectornn;
do
{
intni;
scanf("%d",&ni);
nn.push_back(ni);
}while(nn.size() printf("请输入第二个数组的数据个数\n");
intm;
scanf("%d",&m);
printf("请输入第二个数组所要包含的数据,请用空格隔开\n");
std::vectormm;
do
{
intmi;
scanf("%d",&mi);
mm.push_back(mi);
}while(mm.size() std::vectorjg;
if(n>=m)
{
for(inti=0;i {
std::vector::iteratorret1;
std::vector::iteratorret2;
ret1=std::find(nn.begin(),nn.end(),mm[i]);
if(ret1!=nn.end())
{
ret2=std::find(jg.begin(),jg.end(),mm[i]);
if(ret2==jg.end())
jg.push_back(mm[i]);
}
}
}
else
{
for(inti=0;i {
std::vector::iteratorret1;
std::vector::iteratorret2;
ret1=std::find(mm.begin(),mm.end(),nn[i]);
if(ret1!=mm.end())
{
ret2=std::find(jg.begin(),jg.end(),nn[i]);
if(ret2==jg.end())
jg.push_back(nn[i]);
}
}
}
if(jg.size()>0)
{
printf("公共元素为:\n");
int*a=jg.data();
sort(a,jg.size());
for(inti=0;i {
printf("%d",a[i]);
}
}
elseprintf("公共元素为:\nno");
printf("\n");
system("pause");
return0;
}
voidsort(int*src,intlen)
{
inttem;
for(inti=0;i {
for(intj=0;j if(src[j]>src[j+1])
{
tem=src[j];
src[j]=src[j+1];
src[j+1]=tem;
}
}
}

刚刚没注意看你的要求是要按第一个数组顺序排,所以上面的代码我写成了结果以从小大到排的,现在修改一下,按你的要求结果按第一个数组顺序排列,代码如下:

#include"stdafx.h"
#include
#include
intmain()
{
printf("请输入第一个数组的数据个数\n");
intn;
scanf("%d",&n);
printf("请输入第一个数组所要包含的数据,请用空格隔开\n");
std::vectornn;
do
{
intni;
scanf("%d",&ni);
nn.push_back(ni);
}while(nn.size() printf("请输入第二个数组的数据个数\n");
intm;
scanf("%d",&m);
printf("请输入第二个数组所要包含的数据,请用空格隔开\n");
std::vectormm;
do
{
intmi;
scanf("%d",&mi);
mm.push_back(mi);
}while(mm.size() std::vectorjg;
for(inti=0;i {
std::vector::iteratorret1;
std::vector::iteratorret2;
ret1=std::find(mm.begin(),mm.end(),nn[i]);
if(ret1!=mm.end())
{
ret2=std::find(jg.begin(),jg.end(),nn[i]);
if(ret2==jg.end())
jg.push_back(nn[i]);
}
}
if(jg.size()>0)
{
printf("公共元素为:\n");
for(inti=0;i {
printf("%d",jg[i]);
}
}
elseprintf("公共元素为:\nno");
printf("\n");
system("pause");
return0;
}

要求输入n个整数,输出其中与平均值最接近的元素的值及下标,可是不知道怎么输出元素,求帮忙完善程序

在主函数中增加声明一个记录下标的变量xb,然后将printf("%d\n",getIndex(a,n,getAvg(a,n)));这一句改成xb=getIndex(a,n,getAvg(a,n)); printf("The suffix=%d, The value=%d\n",xb,a[xb]);。或者在getIndex中直接输出:在return xiabiao;前增加语句printf("The suffix=%d, The value=%d\n",xiabiao,a[xiabiao]);,并将主函数中的printf("%d\n",getIndex(a,n,getAvg(a,n)));一句改为

标签:编程语言 编程 信息技术 CC++ 元素

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved. 京ICP备11019930号-18