1.

輸入10個整數,任意相鄰的兩個數不同,輸出所有的遞增,遞減序列

比如:

輸入:1 5 9 8 12 21 3 0 -1 9

輸出:

1 5 9

9 8

8 12 21

21 3 0 -1

-1 9

實現程式碼如下:

# include <stdio.h>

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

int nu[10];

int i,j;

for(j=0;j<10;j++)

{

scanf("%d",&nu[j]);

}

printf("%d ",nu[0]);    //第一位先列印

for(i=1;i<10-1;i++)

{

printf("%d ",nu[i]);

   /**從第二數起比較它的前一個數後後一位數,如果出現大於小於或小於大於就換行*/

if(((nu[i]>nu[i-1]) && (nu[i]>nu[i+1])) || ((nu[i]<nu[i-1]) && (nu[i]<nu[i+1])))

{

printf("\n");           //每次進來都先列印

printf("%d ",nu[i]);

}

}

printf("%d\n",nu[9]);           //最後一位後面再列印

  return 0; 

}

2.

輸入10個整數,找出出現次數最多的數 (如果多個並列,則按數字出現順序分別輸出)

輸入:1 5 27 33 24 1 27 18 19 20

輸出:

   1 27

實現程式碼如下:

# include <stdio.h>

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

int nu[10];

int bz[10];

int i,j,k,l,m;

int max;

int flaga=1,flagb=0;

 /**輸入十個數*/

for(i=0;i<10;i++)

{

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

}

 /**用一個數組記錄每一個數出現的次數*/

for(j=0;j<10;j++)

{

for(k=j+1;k<10;k++)

{

if(nu[j] == nu[k])

{

flaga++;

}

}

bz[j]=flaga;

flaga=1;

}

 /**通過記錄次數的陣列找出出現次數最多的下標*/

max=bz[0];

for(l=1;l<10;l++)

{

if(max<bz[l])

{

max=bz[l];

flagb=l;

}

}

 /**通過下標找出bz[]陣列中最大的的數值,bz[]中最大的數值與bz[]每一個數值比較,相等證明出現的最大次數相同*/

for(m=0;m<10;m++)

{

if(bz[flagb] == bz[m])                  //最大次數與其它次數比較

{

printf("%d ",nu[m]);

}

}

 return 0;

}