C 语言: 求一组数据里的第二大值与第二小值,即次大、次小值。 我有...
发布网友
发布时间:2024-05-10 18:33
我来回答
共2个回答
热心网友
时间:2024-05-28 16:38
两个思路,一个是排序,取出次大和次小就可以了
另一个就是,定义四个变量,最大最小,次大次小,两次循环。一次循环取出最大最小
再一次循环,取出次大次小,这里要判断一下是否为最大最小,要是最大最小,continue就可以了
第一个代码简单,但是在数组元素多的时候运行效率要低一些
热心网友
时间:2024-05-28 16:34
假设定义的数组为 a[N] 并已经赋值
下面给出主要部分:
/* 先给第一大和第二大以及第一小和第二小的变量赋初值 */
if(a[0]>a[1]){
max1=min2=a[0];
max2=min1=a[1];
}else{
max1=min2=a[1];
max2=min1=a[0];
}
for(i=2;i<N;i++){
if(a[i]>max1){
max2=max1;
max1=a[i];
}else if(a[i]>max2){
if(a[i]!=max1)max2=a[i]; /*加上条件,避免在数组中有双最大数时,找不到次大数*/
}
if(a[i]<min1){
min2=min1;
min1=a[i];
}else if(a[i]<min2){
if(a[i]!=min1)min2=a[i];
}
}
这样,循环结束时,max2 和 min2中就保存了次大和次小的值。
C 语言: 求一组数据里的第二大值与第二小值,即次大、次小值。 我有...
两个思路,一个是排序,取出次大和次小就可以了 另一个就是,定义四个变量,最大最小,次大次小,两次循环。一次循环取出最大最小 再一次循环,取出次大次小,这里要判断一下是否为最大最小,要是最大最小,continue就可以了 第一个代码简单,但是在数组元素多的时候运行效率要低一些 ...
标准曲线是否可以在Sievers Eclipse中自动实现?
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准品实...
c语言求一组整数中第2大的数
printf("第二大的是:%d",second);}
C语言:求最大、次大、最小和次小值
b[i-1] = temp_b;} } } //这里把最后2个值拿出来就是你的2个最大值 cout << a[9]<<endl //对应为 a[n-1]<< a[8]<<endl; // a[n-2]//最小值沉底,操作2次,求出最小和次小。for(int x=0; x<2; x++){ int len_temp = len - x; //改变len_temp长度...
C语言用分治算法求一组数中第二小的数
if (*(arr+k)>*(arr+k+1)){ g=*(arr+k);(arr+k)=*(arr+k+1);(arr+k+1)=g;} } } printf("第二小的数是:%lf",*(arr+1));}
c语言 求一组数中的最大2个值。
先找最大值,再找次大值呀,给你一个简单的版本,当然你可以继续优化。include <stdio.h> void find(int arr[], int size){ int i, first = 0, second;for(i = 1; i < size; i++){ if(arr[first] < arr[i])first = i;} if(first == 0){ second = 1;i = 2;} else ...
用C语言求一个文件中第二大数字的位置
fscanf(fp,"%d",&arr[n]);//遍历整型数组,返回第二大的数值所在的下标值int getSecondNum(int arr[],int n){int semax,max,i,index=0;max=arr[0];semax=arr[0];for(i=1;i<n;i++){if(max<arr[i])max=arr[i];}for(i=0;i<n;i++){if(arr[i]<max){if(semax<arr[i...
c语言:输入4个数求里面第二大的数(求教自己想了很久没想通小白一个)
int main(void) { int num[4];// 声明一个数组,保存4个元素 int i = 0, j = 0; for (; i < 4; ++i) { scanf ("%d", &num[i]); for (j = i; j > 0; --j) { // 这里读入了一个数据,进行插入排序;判断读入的数据如果比之前的大,则移动到数组前面 ...
C语言输入五个数,输出其最大值和第二大值
if(a<b) { t=a; a=b; b=t; } for(i=0;i<3;i++) { scanf("%d",&t); if(t>a){b=a;a=t;} else if(t>b){b=t;} } printf("%d %d\n",a,b); return 0;}
随机输入3个数,要求输出其中第二大的数,刚学c语言,请问怎么编写
{ int a,b,c,k;scanf("%d%d%d",&a,&b,&c);if ( a>b ) { k=a; a=b; b=k; } //以下用比较交换的方法将3个数从小到大整理到a,b,c变量中 if ( a>c ) { k=a; a=c; c=k; } //a存放三个数中最小的 if ( b>c ) { k=b; b=c; c=k; } //b存放b、c中...
C语言 求数组中第二大的数
你应该将数字从大到小排序,再取数组的第二个元素就为第二大值