當前位置:編程學習大全網 - 編程語言 - c語言編程,對任意壹組數字,如{3,1,4,7,2,1,1,2,2},輸出其中出現次數最多的數字,並顯示出現的次數。

c語言編程,對任意壹組數字,如{3,1,4,7,2,1,1,2,2},輸出其中出現次數最多的數字,並顯示出現的次數。

如果是任意大小的數字,那麽有些麻煩,可以設定兩個默認值代表最多的數字和最多的次數。接著去輪詢,並計數,如果次數大於默認值,替換即可。遍歷完成即可輸出那兩個值。

如果是0~9,或者字母的話,比較簡單。可以定義定長的數組,數組下標代表具體值,數組的內容代表值出現的次數,遍歷壹遍原數組,得到次數。遍歷定長數組,得到值。

第壹種方法代碼如下,第二種自己琢磨吧。

#include?<stdio.h>

#include?<stdlib.h>

int?main(int?argc,?char?const?*argv[])

{

int?num?=?0;//用來存最多值的數值,默認為0

int?coumt?=?0;?//用來存最多值的個數,默認為0

int?temp?=?0;//中間變量

int?n?=?0;?//數組的個數

int?*p?=?NULL;?//開辟空間的首地址,等價於&a[0]

printf("Pls?enter?the?number?of?arrays:");

while(1)

{

scanf("%d",?&n);

if(n?<=?0)

printf("Error?is?scanf,pls?try?again\n");

else

break;?

}

p?=?(int?*)malloc(sizeof(int)?*?n);

if(p?==?NULL)

{

printf("Error?is?malloc\n");

return?-1;

}

for?(int?i?=?0;?i?<?n;?++i)

{

printf("Pls?enter?the?num?for?buf[%d]=",?i+1);

scanf("%d",?&p[i]);

}

for?(int?i?=?0;?i?<?n;?++i)?//簡單的遍歷查找

{

temp?=?0;

for?(int?j?=?i;?j?<?n;?++j)

{

if?(p[i]?==?p[j])

{

temp++;//計數

}

}

if(coumt?<?temp)//如果次數大於默認值,替換

{

coumt?=?temp;

num?=?p[i];

}

}

printf("The?most?common?number?is?%d?and?the?coumt?is?%d\n",?num,?coumt);

return?0;

}#include?<stdio.h>

#include?<stdlib.h>

int?main(int?argc,?char?const?*argv[])

{

int?coumt?=?0;?//用來存最多值的個數,默認為0

int?temp?=?0;//中間變量,用於計數

int?n?=?0;?//數組的個數

int?*p?=?NULL;?//開辟空間的首地址,等價於&a[0]

int?*num?=?NULL;?//開辟空間的首地址,等價於&a[0]

int?flag?=?0;//定義壹個標誌位,用於計數重復的次數的數值出現

printf("Pls?enter?the?number?of?arrays:");

while(1)

{

scanf("%d",?&n);

if?(n?<=?0)

printf("Error?is?scanf,pls?try?again\n");

else

break;?

}

p?=?(int?*)malloc(sizeof(int)?*?n);//存放妳要的數組

if?(p?==?NULL)

{

printf("Error?is?malloc?for?p\n");

return?-1;

}

num?=?(int?*)malloc(sizeof(int)?*?n);//存放最多數值的數組,最壞情況,沒有重復數字

if?(num?==?NULL)

{

printf("Error?is?malloc?for?num\n");

return?-1;

}

for?(int?i?=?0;?i?<?n;?++i)

{

printf("Pls?enter?the?num?for?buf[%d]=",?i+1);

scanf("%d",?&p[i]);

}

for?(int?i?=?0;?i?<?n;?++i)?//簡單的遍歷查找,找出最大的次數

{

temp?=?0;

for?(int?j?=?i;?j?<?n;?++j)

{

if?(p[i]?==?p[j])

{

temp++;//計數

}

}

if?(coumt?<?temp)//如果次數大於默認值,替換

coumt?=?temp;

}

for?(int?i?=?0;?i?<?n;?++i)?//簡單的遍歷查找,找出重復的次數

{

temp?=?0;

for?(int?j?=?i;?j?<?n;?++j)

{

if?(p[i]?==?p[j])

{

temp++;//計數

}

}

if?(coumt?==?temp)//如果次數等於最大值,存儲

{

num[flag]?=?p[i];

flag++;

}

}

for?(int?i?=?0;?i?<?flag;?++i)

printf("The?most?common?number?is?%d?and?the?coumt?is?%d\n",?num[i],?coumt);

free(p);

free(num);

return?0;

}

  • 上一篇:適合青少年的娛樂活動方案
  • 下一篇:同上壹堂暑期科學課觀後感怎麽寫
  • copyright 2024編程學習大全網