输入数组元素:12
35
45
12
46
65
第二大数是:46
算法是:
逐个扫描,与最大值比较(最大值初值为第一个元素),若数组元素比最大值还大,则将最大值赋给第二大值,数组元素取代最大值。
然后输出第二大值。希望对你有所帮助。
#include
"stdio.h"
void
main()
{
int
array[100]
int
i,num
int
max,secmax
printf("输入数组元素的个数(<100):")
scanf("%d",&num)
printf("输入数组元素:")
for(i=0i<numi++)
{scanf("%d",&array[i])}
max=array[0]
secmax=array[0]
for(i=0i<numi++)
{
if(array[i]>max)
{
secmax=max//原最大值赋予第二大值
max=array[i]//更新最大值
}
}
printf("第二大的数是:%d\n",
secmax)
}
#include<stdio.h>long get(long *p,long n)
{
long i,k,temp,b[100]
for(i=0i<ni++) //重写数组b[100]
b[i]=*(p+i)
for(k=0k<n-1k++) //冒泡排序
for(i=0i<n-1i++){
if(b[i]<=b[i+1]){
temp=b[i]
b[i]=b[i+1]
b[i+1]=temp
}
}
return b[1]
}
int main(void)
{
long a[100],i,n,max2
scanf("%ld",&n)
for(i=0i<ni++)
scanf("%ld",&a[i])
max2=get(a,n) //改了
printf("第二大数为%ld\n",max2)
getch()
return 0
}
本题时间、空间效率都太低。
#include<stdio.h>
int main(void)
{
long a[100],i,n,max,max2
scanf("%ld&ld",&n,&a[0])
max2=max=a[0]
for(i=1i<ni++)
{
scanf("%ld",&a[i])
if(a[i]>max)
{
max2=max
max=a[i]
}
else if(a[i]>max2)max2=a[i]
}
printf("第二大数为%ld\n",max2)
getch()
return 0
}
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) { // 这里读入了一个数据,进行插入排序;判断读入的数据如果比之前的大,则移动到数组前面
if (num[j] > num[j - 1]) {
int tmp = num[j - 1]
num[j - 1] = num[j]
num[j] = tmp
} else {
break
}
}
}
printf ("%d\n", num[1])
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)