//打印第二个最大数量的三个数字作为输入
#include <stdio.h>
int main()
{
int a,b,c,lar,seclar;
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{
if(a>c)
lar=a;
else
seclar=a;
}
if(b>c)
{
if(b>a)
lar=a;
else
seclar=b;
}
if(c>a)
{
if(c>b)
lar=c;
else
seclar=c;
}
printf("second largest number :%d",seclar);
}
........在这个程序中,如果我按顺序输入数字,结果是正确的,否则结果总是“2”,任何人都可以帮助我这个&gt;&gt;&gt;谢谢
答案 0 :(得分:0)
您可以做的是将3个输入存储到数组中,执行bubblesort以按升序/降序对数字进行排序。第二大数字应该在数组[1]
中工作代码如下:
#include <stdio.h>
int main()
{
int a,b,c,lar,seclar,x,temp,y;
int arr1[3];
scanf("%d%d%d",&a,&b,&c);
getchar();
arr1[0]= a;
arr1[1]= b;
arr1[2]= c;
//implement array in descending order
for (y= 0; y< 3;++y)
{
for(x= 0; x< 2;++x)
{
if (arr1[x]< arr1[x+1])
{
temp= arr1[x];
arr1[x]= arr1[x+1];
arr1[x+1]= temp;
}
}
}
lar= arr1[0];
seclar= arr1[1];
printf("largest is %d\n", lar);
printf("second largest is %d", seclar);
getchar();
return 0;
}
答案 1 :(得分:0)
尝试以下方法
#include <stdio.h>
int main(void)
{
int a, b, c;
int second_max;
scanf( "%d%d%d", &a, &b, &c );
if ( a < b )
{
if ( b < c ) second_max = b;
else second_max = ( a < c ? c : a );
}
else
{
if ( a < c ) second_max = a;
else second_max = ( b < c ? c : b );
}
printf( "second maximum value is %d\n ", second_max );
return 0;
}
如果要输入例如
3 1 2
然后程序输出
second maximum value is 2
如果要输入
1 1 1
然后程序输出
second maximum value is 1
至于你的程序那么它是错误的,因为在三个数字彼此相等的情况下,程序将尝试输出未初始化的变量seclar。
答案 2 :(得分:-1)
#include<iostream.h>
#include<conio.h>
void main()
{
int a,b,c;
cout<<"enter the a,b,c";
cin>>a>>b>>c;
clrscr();
if((a>b&&a<c)||(a<b&&a>c))
{
cout<<"the second large"<<a;
}
if((b>c&&b<a)||(b<c&&b>a))
{
cout<<"the second large"<<b;
}
if((c>a&&c<b)||(c<a&&c>b))
{
cout<<"the second large"<<a;
}
getch();
}