C语言程序设计问题: 求最大、次大、最小和次小值
int i, n, k1, k2, k3, k4,
max, pmax, min, pmin,
num[ N ], sub[ N ];
scanf ( “%d\n”, n );
scanf 函数里不要加’ \n ‘ 和别的一些特殊符号,最好什么都别乱加,直接使用%d %f 等一些格式输入符。
# include stdio.h
# define N 30
int main ( )
{
int i, n, k1, k2, k3, k4,
max, pmax, min, pmin,
num[ N ], sub[ N ];
printf(“输入整数的总个数:”);
scanf ( “%d”, n );
for ( i = 0; i n; i ++ )
{
printf(“输入你喜欢的整数和它的序列号: “);
scanf ( “%d%d”,num[ i ], sub[ i ] );
}
max = min = pmax = pmin = num[ 0 ];
k1 = k2 = k3 = k4 = sub[ 0 ];
for ( i = 1; i n; i ++ ) {
if ( max = num[ i ] ) { //最大值
max = num[ i ];
k1 = sub[ i ];
}
if ( min =num[ i ] ) { //最小值
min = num[i];
k3 = sub[i];
}
if ( pmax =num[ i ] num[ i ] !=max ) { //次大值
pmax = num[ i ];
k2 = sub[ i ];
}
if ( pmin = num[ i ] num[ i ] !=min ) { //次小值
pmin = num[ i ];
k4 = sub[ i ];
}
}
printf ( “max=%d,maxNum=%d\n pmax=%d,pmaxNum=%d\nmin=%d,minNum=%d \npmin=%d,pminNum=%d\n”, max, k1, pmax, k2, min, k3, pmin, k4 );
return 0;
}
C语言如何求次大值
简单的办法就是遍历啊,第一遍找到最大值,然后将最大值剔除或者做上标记,然后遍历第二遍找剩余数的最大值,那么找到的就是次大值了。
C语言编程题 输入十个各不相同的数,输出其中的最大数和次大数。
#includestdio.h
int main()
{
int num[10];
for(int i = 0; i10; i++)
scanf(“%d”,num[i]);
int max = num[0];
int min = num[0];
for(int i = 1; i10; i++)
{
max = maxnum[i]?num[i]:max;
min = minnum[i]?num[i]:min;
}
for(int i = 0; i10; i++)
{
if(num[i] == max)
continue;
min = minnum[i]?num[i]:min;
}
printf(“最大值=%d,次大值=%d”,max,min);
return 0;
}
写一算法输出已知顺序表A中元素的最大值和次最大值,并编写C语言程序。
#include stdio.h
#include stdlib.h
#include time.h
int main()
{ int i,n,a[200],M,m;
scanf(“%d”,n);
srand(time(0));
for(i=0; in; i++)
{ a[i]=rand()%20;
printf(“%d “,a[i]);
}
printf(“\n”);
a[0]a[1]?M=a[0],m=a[1]:M=a[1],m=a[0];
for(i=2; in; i++)
if(a[i]==M)continue;
else if(a[i]M)
{ m=M;
M=a[i];
}
else if(a[i]m)m=a[i];
printf(“最大值=%d\n次大值=%d\n”,M,m);
return 0;
}
C语言,求数组中的最大值和次大值
#include “stdio.h”
int main(void)
{
int str[10]={1,2,3,4,5,6,7,8,9,10};
int i=sizeof(str);
int max0=0;//最大值
int max1=0;//次大值
for(i=0;i10;i++)
{
if(str[i]max0)max0=str[i];
else if(str[i]max1)max1=str[i];
}
system(“pause”);
return 0;
}
C语言求最大值 次大值
#include stdio.h
void max(int a[],int n,int *pmax1,int *pmax2)
{
int i;
*pmax1=*pmax2=a[0]; // 初始值为第一个元素
for(i=1;in;i++) //循环整个数组
{
if(a[i]*pmax1) {*pmax2= *pmax1;*pmax1=a[i]; } //如果当前数比最大数大,赋给最大数
else if(a[i]*pmax2) *pmax2=a[i]; //如果没有最大数大,比第二大数大,赋给数
}
}
int main (){
int a[6]={2,4,56,23,45},pmax1,pmax2;
max(a,6,pmax1,pmax2);
printf(“max1=%d,max2=%d\n”,pmax1,pmax2);
return 0;
}