A. c語言 利用指針實現求數組元素中的最大值和最小值
這個乍一看沒有錯誤
但我把你打程序抄近TC運行了一知州下
發現不弊猛耐是像你說的那樣的錯誤
及時第一位是最大的也會輸出錯誤
無論怎麼
輸出的第一位都是24940
最小的也有錯誤
最小有時會輸出最大
後來仔細看了一下
發現你後面一個for循環里有大錯誤
if語句是進行比較
就第一個if來說
你把a[0]與a[1]先進行比較
這里你用的是p=p+i;
就是使p指向p+i所指向的內存
但需要注意
假設我輸入的一組租春數是
9
10
8
5
15
4
2
3
11
1
當進行第一次循環後
p會指向p+1
既然是用p=p+i;
這是p+1就變成了p
當計算機再進行循環至a[4]
也就是15時
就會有p=p+4;
而這時想對於剛開始時的指針p就已經不是指向你想要他指的那個數(也就是大的那個)了
此時的指針p與剛開始的比其實不是指向了p+4
而是指向了p+5
也就是4了
所以程序出現了這般錯誤
要改正的話只要把後面那個for循環換成如下程序段就可以了:
for(i=1;i<N;i++)
{
if(*p<a[i])
*p=a[i];
if(*t>a[i])
*t=a[i];
}
如果規定要用指針的話那可以再定義兩個中間指針變數應該可以解決
只能說這么多了
太晚了
要睡覺了~~
不然明天第一節課又沒得上了
希望我的答案對你有幫助
嘿嘿!!
B. c語言求數組中最大值和最小值及其下標
思路:假定一個數為最大值,如果有個數比假定的最大值還大,那麼該數就為最大值。
最小值同理。
使用for循環。
*/
public class MaxMin{
public static void main(String[]args){
int[]array={13,56,45,48,26,55,7,3,9,468,4589,76,4,3,18};//聲明數組並賦值
int i=0;
int max=array[0];//最大值
int min=array[0];//最大值
int indexMax=-1;//最大值索引
int indexMin=-1;//最小值索引
//使用for循環判斷
for(i=0;i<array.length;i++){
if(array<i>>max){
max=array<i>;
indexMax=i;
}
if(array<i><min){
min=array<i>;
indexMin=i;
}
}
System.out.println("最大值為:"+max+",索引為:"+indexMax);
System.out.println("最小值為:"+min+",索引為:"+indexMin);
}
}
(2)c語言求一個動態數組的最大最小值擴展閱讀:
system()函數用於向操作系統傳遞控制台命令行,以WINDOWS系統為例,通過system()函數執行命令和在DOS窗口中執行命令的效果是一樣的,所以只要在運行窗口中可以使用的命令都可以用SYSTEM()傳遞,但要注意的是輸入斜線時要輸入兩個,以名C語言當作轉義字元處理。
C. C語言,求數組最大最小值
求數組中的最大值和最小值,一般使用假設法,即假設數組的第1個元素為最大值,同時也是最小值,然後遍歷數組,找到最大值和最小值。示例如下:
#include<stdio.h>
intmain()
{
inta[]={1,2,3,4,5,6,7,8,9,10};
intmax,min;
max=min=a[0];//假設第1個元素即是最大值也是最小值。
intmax_pos=0,min_pos=0;
//遍歷數組,找出數組a中的最大數和最小數
for(intinx=0;inx!=sizeof(a)/sizeof(int);++inx){
if(a[inx]>max)max=a[inx],max_pos=inx;
elseif(a[inx]<min)min=a[inx],min_pos=inx;
}
printf("最大數:%d 最小數:%d
",max,min);
return0;
}
D. 用c語言編寫求數組元素最大值和最小值!謝謝各位大佬
1、apply方式,借用Math中的max/min方法實現。
E. C語言編程,多種方法求一個數組里的最大值和最小值。
因為只是找出最大最小值,直接循環每個比較一次就可以。
#include<stdio.h> //挑選法
#define N 10
void main() { int a[N],m,n,i;
for ( i=0;i<N;i++ ) scanf("%d",&a[i]);
m=n=a[0]; for ( i=1;i<N;i++ ) if ( m<a[i] ) m=a[i]; else if ( n>a[i] ) n=a[i];
printf("最大值%d,最小值%d ",m,n);
}
#include<stdio.h> //排序法
#define N 10
void main() { int a[N],i,j,k;
for ( i=0;i<N;i++ ) scanf("%d",&a[i]);
for ( i=0;i<N-1;i++ ) for ( j=i+1;j<N;j++ ) if ( a[i]<a[j] ) {k=a[i];a[i]=a[j];a[j]=k;}
printf("最大值%d,最小值%d ",a[0],a[N-1]);
}
(5)c語言求一個動態數組的最大最小值擴展閱讀:
C語言包含的各種控制語句僅有9種,關鍵字也只有32 個,程序的編寫要求不嚴格且以小寫字母為主,對許多不必要的部分進行了精簡。實際上,語句構成與硬體有關聯的較少,且C語言本身不提供與硬體相關的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統所支持的各類庫進行編程,故c語言擁有非常簡潔的編譯系統。
F. c語言定義max_min求一個數組最大值和最小值,利用調用函數void max_min(int[],int n,int *map,int *minp)
#include<stdio.h>
//max_min函數定義太亂了,應該是這樣的:
voidmax_min(inta[],intn,int*maxp,int*minp)
{
inti;
*maxp=a[0];
*minp=a[0];
for(i=1;i<=n-1;i++)
{
if(a[i]>=*maxp)
*maxp=a[i];
elseif(a[i]<*minp)
*minp=a[i];
}
}
intmain()
{
inta[100],n,i,max,min;
printf("pleaseinputn:");
scanf("%d",&n);
printf("pleaseinputnumber:");
for(i=0;i<=n-1;i++)//去掉分號
scanf("%d",&a[i]);
max_min(a,n,&max,&min);//應該是傳變數地址,max_min(a,n,maxp,minp);
printf("themaxandminis:%d&%d ",max,min);//maxp,minp沒定義,應該是max,min
return0;
}
結果:
G. c語言如何求一個數組的最大值和最小值
data_type
max=0;//定義兩個全局變數,max表示最大值
data_type
min=0;//min表示最小值
void
func(data_type
a[],int
n)//傳遞數組名與數組的大小n
{
max=min=a[0];//初始化
for(int
i=0,i<n,i++)//循環n次
{
if(max<a[i])
max=a[i];//如果當前的a[i]比max大,則max取a[i]
if(min>a[i])
min=a[i];//同理
}
reture;//返回
}
H. C語言求數組最大值最小值
arr[n]這個有問題,不能定義為一個變數n,
int arr[50];//這樣定義
I. c語言計算數組的長度,最大最小值 補全程序
int get_len_max_min(int *pnums, int *pmax, int *pmin) {
int *pcur = pnums;
*pmax=*pmin=*pcur;
pcur++;
while(*pcur!=END_MARK ) {
if (*pcur>*pmax) *pmax=*pcur;
if (*pcur<*pmin) *pmin=*pcur;
pcur++;
}
return pcur-pnums;
}