利用C語言在一批數(shù)中找最大數(shù)的一般方法如下:
為龍泉驛等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及龍泉驛網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、龍泉驛網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
(1)將數(shù)據(jù)存入一個(gè)一維數(shù)組中,例如存入a數(shù)組中。
(2)在數(shù)組中找最大值(假設(shè)用變量max存放最大值)。首先將a[0]視為最大數(shù),即首先使max=a[0]。將除a[0]之外的其他所有元素(用a[i]表示)逐個(gè)與max比較,若a[i]max,則a[i]為目前的最大數(shù),使max=a[i]。在所有元素比較完之后,max即為最大數(shù)。
(3)輸出最大數(shù)(max的值)。
這個(gè)問題涉及C語言for循環(huán)嵌套和一維數(shù)組內(nèi)容,以6個(gè)數(shù)為例,具體程序如下:
#includestdio.h
int main(void)
{
int a[6],i,max;
for(i=0;i6;i++) ? ? ? ? ? ? ? ? ? ? ? //將6個(gè)數(shù)輸入a數(shù)組
scanf("%d",a[i]);
max=a[0]; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //首先將a[0]視為最大數(shù),將a[0]存入max
for(i=1;i6;i++) ? ? ? ? ? ? ? ? ? ? ? //將其余5個(gè)數(shù)與max比較,大者存入max
if(a[i]max) ? max=a[i];
printf("max=%d\n",max); ? ? ? ? //輸出最大值
return 0;
}
程序運(yùn)行結(jié)果:
10 ?2 ?14 ?6 ?5 ?11
max=14
擴(kuò)展資料:
一維數(shù)組是最簡單的數(shù)組,其邏輯結(jié)構(gòu)是線性表。要使用一維數(shù)組,需經(jīng)過定義、初始化和應(yīng)用等過程。
數(shù)組聲明:
(1)在數(shù)組的聲明格式里,“數(shù)據(jù)類型”是聲明數(shù)組元素的數(shù)據(jù)類型,可以是java語言中任意的數(shù)據(jù)類型,包括簡單類型和結(jié)構(gòu)類型?!皵?shù)組名”是用來統(tǒng)一這些相同數(shù)據(jù)類型的名稱,其命名規(guī)則和變量的命名規(guī)則相同。
(2)數(shù)組聲明之后,接下來便是要分配數(shù)組所需要的內(nèi)存,這時(shí)必須用運(yùn)算符new,其中“個(gè)數(shù)”是告訴編譯器,所聲明的數(shù)組要存放多少個(gè)元素,所以new運(yùn)算符是通知編譯器根據(jù)括號里的個(gè)數(shù),在內(nèi)存中分配一塊空間供該數(shù)組使用。
利用new運(yùn)算符為數(shù)組元素分配內(nèi)存空間的方式稱為動(dòng)態(tài)分配方式。
舉例:
int[]x; //聲明名稱為x的int型數(shù)組
x=new int[10]; //x數(shù)組中包含有10個(gè)元素,并為這10個(gè)元素分配內(nèi)存空間
在聲明數(shù)組時(shí),也可以將兩個(gè)語句合并成一行,格式如下:
數(shù)據(jù)類型[]數(shù)組名= new 數(shù)據(jù)類型[個(gè)數(shù)];
利用這種格式在聲明數(shù)組的同時(shí),也分配一塊內(nèi)存供數(shù)組使用。如上面的例子可以寫成:
int[]x = new int [10];
等號左邊的int[]x相當(dāng)于定義了一個(gè)特殊的變量x,x的數(shù)據(jù)類型是一個(gè)對int型數(shù)組對象的引用,x就是一個(gè)數(shù)組的引用變量,其引用的數(shù)組元素個(gè)數(shù)不定。
等號右邊的new int[10]就是在堆內(nèi)存中創(chuàng)建一個(gè)具有10個(gè)int型變量的數(shù)組對象。int[]x = new int [10];就是將右邊的數(shù)組對象賦值給左邊的數(shù)組引用變量。
參考資料:數(shù)組_百度百科
#includestdio.h
int?max(int?n)
{int?i,x,f;
scanf("%d",f);
for(i=1;in;i++)
{scanf("%d",x);
if(xf)f=x;
}
return?f;
}
int?main()
{int?n;
printf("有幾個(gè)數(shù):");
scanf("%d",n);
printf("其中最大的數(shù)是:%d\n",max(n));
return?0;
}
#includestdio.h
int min;
int maxmin(int n)
{int i,x,f;
scanf("%d",f);
min=f;
for(i=1;in;i++)
{scanf("%d",x);
if(xf)f=x;
else if(xmin)min=x;
}
return f;
}
int main()
{int n,mm;
printf("有幾個(gè)數(shù):");
scanf("%d",n);
mm=maxmin(n);
printf("其中最大的數(shù)是:%d\n最小的數(shù)是:%d\n",mm,min);
return 0;
}
思路:首先設(shè)置最大最小的值都是數(shù)組第一個(gè)數(shù),然后遍歷數(shù)組,出現(xiàn)比當(dāng)前最大值大的,修改最大值為這個(gè)數(shù)。出現(xiàn)比最小值小的,修改最小值為這個(gè)數(shù)。
代碼
#include?stdio.h
//為了方便返回,使用結(jié)構(gòu)體存儲最大值和最小值
typedef?struct?{
int?Max;
int?Min;
}MaxMin;??????
//函數(shù)參數(shù)array:數(shù)組,length:數(shù)組長度。
//這里其實(shí)可以把最大值最小值作為指針傳進(jìn)去的。??
MaxMin?GetMaxMin(int?*array,?int?length)
{
int?i;
MaxMin?maxMin;
if?(length?=?0)
return?maxMin;
//初始化最大值和最小值為數(shù)組第一個(gè)數(shù)
maxMin.Max?=?array[0];
maxMin.Min?=?array[0];
for?(i?=?0;?i??length;?i++)?{
if?(array[i]?=?maxMin.Max)????????
maxMin.Max?=?array[i];????????//比當(dāng)前最大值大,修改最大值
if?(array[i]?=?maxMin.Min)
maxMin.Min?=?array[i];????????//比當(dāng)前最小值小,修改最小值
}
return?maxMin;
}
//主函數(shù)測試
int?main()?{
int?length;
int?i;
int?*array;
printf("input?length?of?array:");
scanf("%d",?length);
array?=?(int?*)malloc(sizeof(int)*length);
for?(i?=?0;?i??length;?i++)?{
printf("input?data?of?array(index?%d):",?i?+?1);
scanf("%d",?array?+?i);
}
MaxMin?maxMin?=?GetMaxMin(array,?length);
printf("Max:%d,Min:%d",?maxMin.Max,?maxMin.Min);
return?0;
}
3. 運(yùn)行結(jié)果
//隨手寫的,算法可能不是最佳
#include?stdio.h
#include?stdlib.h
#include?"string.h"
int*?num;
char?s[100]={"\0"};
void?get_max(int?len)
{
int?max=num[0];
int?i;
for(i=1;ilen;i++)
{
if(maxnum[i])
{
max=num[i];
}
}
printf("\n最大數(shù)為:%d",max);
}
void?char2num()
{
int?n=0;
char?c[10]={"\0"};
int?i;
int?j=0;
s[strlen(s)]=',';
for(i=0;istrlen(s);i++)
{
if(s[i]==',')
{
n++;
}
}
num=(int*)malloc(sizeof(int)*n);???//動(dòng)態(tài)定義int數(shù)組
int?n_pos=0;
for(i=0;istrlen(s);i++)
{
if(s[i]=='?')
{
continue;
}
if(s[i]!=',')
{
c[j++]=s[i];
}
else
{
num[n_pos++]=atoi(c);
j=0;
memset(c,'\0',10);
continue;
}
}
get_max(n_pos);?????//尋找最大數(shù)?
}
int?main(int?argc,?char?*argv[])?{
printf("請輸入n個(gè)數(shù)(用逗號分隔):");
scanf("%s",s);??????//初始輸入的數(shù)據(jù)接收為字符數(shù)組?
char2num();?????????//把字符數(shù)組轉(zhuǎn)化為int數(shù)組?
return?0;
}
求最大值:
#includestdio.h
void main()
{
int n,max,min,a,i;
printf("請輸入N的值:");
scanf("%d",n);
for(i=1;i=n;i++)
{
printf("請輸入一個(gè)數(shù):");
scanf("%d",a);
if(i==1)
{
max=min=a;
}
if(i!=1maxa)
max=a;
if(i!=1mina)
min=a;
}
printf("這%d個(gè)數(shù)中最大值是",n,max);
}
求階乘:
#include "stdio.h"
void main()
{
int fun(int x);
float jc(int x);
int n,i;
float k;
printf("type in the n!\n");
scanf("%d",n);
i=fun (n);
k=jc (n);
printf("%d! is %10.0f\nthere are %d zero!\n",n,k,i);
}
int fun(int x)
{
int i=0;
while(x!=0)
{
x=x/5;
i+=x;
}
return (i);
}
float jc(int x)
{
float i;
if (x==0||x==1)
i=1;
else
i=jc(x-1)*x;
return (i);
}
#include?"stdio.h"
struct?number
{
float?value;//值
struct?number?*next;//指向后繼
};
struct?number?*head?=?NULL;//頭指針
struct?number?*p1;//活動(dòng)指針
struct?number?*p2;//尾指針
float?max,min,sum,count;//最大值、最小值、和、數(shù)量
//輸入數(shù)值
void?input()
{
for(;;)
{
//申請內(nèi)存空間并賦值
p1?=?(struct?number*)malloc(sizeof(struct?number));
scanf("%f",p1-value);
p1-next?=?NULL;
//判斷是否等于-1
if(p1-value?==?-1)
{
free(p1);
return;
}
//判斷頭指針是否為空
if(head?==?NULL)
head?=?p1;
else
p2-next?=?p1;
p2?=?p1;
}
}
//求最大值、最小值、和、數(shù)量
void?maxMin()
{
//初始化三個(gè)值
p1?=?head;
max?=?min?=?p1-value;
sum?=?count?=?0;
while(p1?!=?NULL)
{
//找最大值
if(p1-value??max)
max?=?p1-value;
//找最小值
if(p1-value??min)
min?=?p1-value;
sum?+=?p1-value;//求和
count++;//數(shù)量
p1?=?p1-next;
}
}
//輸出所有值
void?print()
{
p1?=?head;
while(p1?!=?NULL)
{
printf("%g?",p1-value);
p1?=?p1-next;
}
printf("\n");
}
int?main()
{
printf("請連續(xù)輸入n個(gè)整數(shù),輸入-1結(jié)束\n");
input();
printf("**************\n");
maxMin();
printf("最大值?=?%g\n",max);
printf("最小值?=?%g\n",min);
printf("平均值?=?%g\n",sum/count);
}