① c語言問題,假設10個整數用一個一維數組存放,求出最大值和次大值。
你的那個scanf函數的提供地址有錯改為 scanf("%d",&a[i]);
還有輸出的那也有問題改成 for(i=0;i<N;i++)
{
printf("%d",a[i]);
printf("%c",' ');
}
不然數字之間沒有空格,全部代碼如下:
#include <stdio.h>
#define N 10
void main()
{
int a[N],t,i,j;
printf("input the numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
for(i=0;i<N;i++)
{
printf("%d",a[i]);
printf("%c",' ');
}
}
個人建議,按題目要求沒必要排序,定義兩個變數,一個存最大值,遍歷數組找到最大值後記錄它在數組的下標,然後在下次遍歷找次大值的時候跳過就可以了
② 用c語言進行最大值和次大值的輸出
#include<stdio.h>
#include<math.h>
intmain(void)
{
intn,t,min=0,max=0,k;
scanf("%d",&n);
if(n-->=1)scanf("%d",&t);
min=max=t;
for(k=1;k<=n;k++)
{
scanf("%d",&t);
if(t<min)
{
min=t;
}
if(t>max)
{
max=t;
}
}
printf("%d%d ",min,max);
return0;
}
你初始最大最小為0,如果輸入全部是負數就會判斷最大數錯誤
你初始最大最小為0,如果輸入全部是正數就會判斷最小數錯誤
③ c語言如何求次大值
#include<iostream>
using namespace std;
void Fun(int *num,int n);
int main()
{
int a[]={1,2,20,10,532};
Fun(a,5); //按大到小排列
cout<<a[1]<<endl; //輸出第2個,就是次大的,第1個就是最大的
}
void Fun(int *num,int n)
{
int temp;
for(int i=1; i<n; i++)
{
for(int j=0; j<n-i; j++)
{
if(num[j]<num[j+1])
{
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
}
④ 從鍵盤上輸入10個整數,求其中最大值和次大值,用c語言怎麼做
main()
{
int max,max2 ,a[10],i;
for (i=0;i<10;i++)
{ scanf("%d",a[i]);}
max=a[0];
for(i=1;i<10;i++)
{
max=max<a[i]?a[i]:max;
}
for(i=0;i<10;i++)
{if(max2>a[i]&&max2<max)
max2=a[i];
}
}
⑤ C語言如何求次大值
簡單的辦法就是遍歷啊,第一遍找到最大值,然後將最大值剔除或者做上標記,然後遍歷第二遍找剩餘數的最大值,那麼找到的就是次大值了。
⑥ (C語言)求最大、次大、最小和次小值
#include<stdio.h>
#define N 20
int main()
{
int A[N][2];
int *max,*nmax,*min,*nmin;
int n;
printf("整數的個數:");
scanf("%d",&n);
int i;
for(i=0;i<n;++i)
{
printf("第%d個數:",i+1);
scanf("%d",A+i);
printf("序號:");
scanf("%d",A[i]+1);
}
printf("輸入結束\n");
max=min=nmax=nmin=A[0];
for(i=1;i<n;++i)
{
if(A[i][0]>*max)
{
nmin=max=A[i];
continue;
}
if(A[i][0]<*min)
{
nmax=min=A[i];
continue;
}
}
for(i=0;i<n;++i)
{
if(A[i][0]<*max&&A[i][0]>*nmax)
{
nmax=A[i];
}
if(A[i][0]>*min&&A[i][0]<*nmin)
{
nmin=A[i];
}
}
printf("\n最大值:%d,序號:%d\n",*max,*(max+1));
if(*max==*nmax)
printf("沒有次大值\n");
else
printf("次大值:%d,序號:%d\n",*nmax,*(nmax+1));
printf("最小值:%d,序號:%d\n",*min,*(min+1));
if(*min==*nmin)
printf("沒有次小值\n");
else
printf("次小值:%d,序號:%d\n",*nmin,*(nmin+1));
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;i<10;i++)
{
if(str[i]>max0)max0=str[i];
else if(str[i]>max1)max1=str[i];
}
system("pause");
return 0;
}
⑧ 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語言 怎麼求一個數組的次大值的源代碼
可以使用循環語句,while語句也可以的,定義一個變數,是變數i,將i賦值為0,i小於數組里的成員個數,然後i++;裡面可以在套用一個if語句的,然後慢慢的比較,將最大的一個值賦給一個重新的定義的變數就好,最後輸出就ok了