① c語言中如何編寫這個程序:輸出四個整數中第二大的數
#include<stdio.h>
#define max(x,y) x>y?x:y//比較大小函數
int main()
{
int a[5];
int max1=0;
int max2=0;
for(int i=0;i<4;i++)
{
scanf("%d",&a[i]);
max1=max(max1,a[i]); //記錄最大值
}
for(int i=0;i<4;i++)
{
if(a[i]!=max1)//記錄除最大值以外的 最大值(第二大數)
max2=max(max2,a[i]);
}
printf("%d",max2);
return 0;
}
② C語言 求數組中第二大的數
你應該將數字從大到小排序,再取數組的第二個元素就為第二大值
③ c語言求一組整數中第2大的數
你真的很好學
void main(void)
{
int n,i,buff[100];
int max=buff[0],second=buff[0];
scanf("%d",&n);
printf("輸入的數為:%d",n);
srand(n);//初始化種子
for(i=0;i<n;i++)
{
buff[i] = ((int)rand()%n);//產生隨機數
}
for(i=0;i<n;i++)//尋找最大的
{
if(buff[i]>max)
{
max = buff[i];
}
}
for(i=0;i<n;i++)//尋找第二大的
{
if(buff[i] != max)
{
if(buff[i]>second)
{
second= buff[i];
}
}
}
printf("第二大的是:%d",second);
}
④ c語言 輸入五個不同數,找出第二大的數 在線= 謝謝
我只寫查找過程,如下:
#include
int
main(){
int
data[5];
//
是你輸入的五個數
int
i;
printf("
請輸入5
個不相等的數:\n");
for(i
=
0;
i
<
5;
i++){
scanf("%d",&data[i]);
}
int
sum
=
0;
//
第二大數
int
max
=
0;
//
最大的數
for(i
=
0;
i<
5;
i++){
if(data[i]
>
max){
max
=
data[i];
}else
if(data[i]
>
sum){
sum
=
data[i];
}
}
printf("第二大數是:%d\n",sum);
}
⑤ c語言編程找 第二個大的數 怎麼弄
呵呵。這是一個很經典的演算法。你網路一下找第K小或者第K大的數。去看看。
我分析下思路:
2輪冒泡,可以找出第二大數。
2輪循環。也可以找出第二大的。
你要到公司面試,要講效率的話。可以看看我寫的下面這個代碼
這是用快速排序,夾逼原則來鎖定要找的第K大的元素
void swape(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
int searchPosition(int a[10],int start,int end)
{
int pivot=a[start];
while(start<end)
{
while(start<end&&a[end]>=pivot)
end--;
if(start!=end)
{
swape(&a[start],&a[end]);
start++;
}
while(start<end&&a[start]<=pivot)
start++;
if(start!=end)
{
swape(&a[start],&a[end]);
end--;
}
}
return start;
}
int sloving(int a[10],int m)
{
int part=searchPosition(a,0,9);
while(m!=part+1)
{
if(m<part+1)
part=searchPosition(a,0,part);
else
part=searchPosition(a,part+1,9);
}
return part;
}
Dev-C++ 測試通的!
MIT演算法導論書上專門有討論的。好像是……&
⑥ C語言:鍵入正整數n,再輸入n個整數,輸出其中第二大的數,C語言咋編程
代碼文本:
#include "stdio.h"
int main(int argc,char *argv[]){
int n,t1,t2,i,t;
printf("Enter n(int n>1)... n=");
if(scanf("%d",&n)==1 && n>1){
scanf("%d%d",&t1,&t2);
if(t1>t2)
t=t1,t1=t2,t2=t;
for(i=2;i<n;i++){
scanf("%d",&t);
if(t>t2)
t1=t2,t2=t;
}
printf("The second large number is %d ",t1);
}
else
printf("Input error, exit... ");
return 0;
}
⑦ c語言:輸入4個數求裡面第二大的數(求教自己想了很久沒想通小白一個)
intmain(void){
intnum[4];//聲明一個數組,保存4個元素
inti=0,j=0;
for(;i<4;++i){
scanf("%d",&num[i]);
for(j=i;j>0;--j){//這里讀入了一個數據,進行插入排序;判斷讀入的數據如果比之前的大,則移動到數組前面
if(num[j]>num[j-1]){
inttmp=num[j-1];
num[j-1]=num[j];
num[j]=tmp;
}else{
break;
}
}
}
printf("%d ",num[1]);
return0;
}
⑧ c語言如何求第二大的數
#include <stdio.h>
void main()
{
int n,i,max,max2,a[1000];
printf("輸入數據,以負數結束: ");
for(n=0;1;n++)
{
scanf("%d",&a[n]);
if(a[n++]<0)break;
}
max=max2=a[0];
for(i=1;i<n;i++)
if(a[i]>max){max2=max; max=a[i];}
else if(a[i]>max2)max2=a[i];
printf("第二大的數是 %d ",max2);
getch();
return 0;
}
⑨ C語言 求第2大整數
測試通過的:
輸入數組元素的個數(<100):6
輸入數組元素: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=0;i<num;i++)
{scanf("%d",&array[i]);}
max=array[0];
secmax=array[0];
for(i=0;i<num;i++)
{
if(array[i]>max)
{
secmax=max;//原最大值賦予第二大值
max=array[i];//更新最大值
}
}
printf("第二大的數是:%d\n",
secmax);
}