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;
}