[二級C]專題習題-一維數組

初學C語言,程序代碼只是單純的實現功能,並未考慮Bug問題。

--------------------------------------------------------------------------------------------------------------

1.計算含N個元素的x數組的平均值,並將大於平均值的數保存到數組y中,並輸出y數組中所有元素。

 

int main()
{
	int average=0,client[5],server[5];
	int i=0,j=0;
	for(i=0;i<5;i++)
	{
		scanf("%d",&client[i]);
			average+=client[i];//將輸入的數全加起來賦值給average
					}		}
		average/=5;//算平均數
	for(i=0;i<5;i++)
	{
		if(average<client[i])
			server[j++]=client[i];//將大於平均值的數保存到數組server中,數組server中的下標進行自增。
	}
	for(i=0;i<j;i++)
		printf("%d ",server[i]);
	return 0;
}

2.計算x數組中N個數的平均值,將x數組中大於平均值的數移動到x數組的前面,小於平均值的數移動到x數組的後面。並輸出改變後的x數組。(提示:可以使用y數組暫存數據,然後再將y數組中的元素賦值到x數組中)。

 

	int i=0,j;
	for(i=0;i<5;i++)
	{
		scanf("%d",&client[i]);
			average+=client[i];
							}
		average/=5;
	for(i=0;i<5;i++)
	{
		if(average<client[i])
			server[j++]=client[i];
	
	}
		
	for(i=0;i<5;i++)
	{
		if(average>=client[i])
			server[j++]=client[i];
	}
	for(i=0;i<5;i++)
		printf("%d ",server[i]);
	return 0;


注:本題目並未考慮輸入的數與平均數相等的情況,所以代碼將相等的情況直接給放到數組的後面去了。

3.調用隨機函數產生20個互不相同的整數放到a數組中,並輸出a數組中的所有元素。

 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int a[20],num;
	int i=0,j=0;
	srand((unsigned)time(NULL));
	for(i=0;i<20;i++)
	{
		a[i]=rand()%20+1;
        for(j=0;j<i;j++)//重新遍歷數組i
		{
            if(a[i]==a[j])
            {
            i--;//遍歷數組a的過程匹配到與其相等的數,i--,相當於在重複的元素重新生成隨機數.
            }
		}
	}
		for(i=0;i<20;i++)
			printf("%4d",a[i]);

 

4.編寫程序將十進制正整數m轉換成k(2<=k<=9)進制數,並按位輸出。若輸入8和2,則應輸出1000(即十進制數8轉換成二進制表示是1000)。

 

int m,k,a[100],i=0,j;
        scanf("%d%d",&m,&k);
	if(k<2||k>9)
        printf("error");
	while(m)
	{
	    a[i]=m%k;
	    m/=k; 
	    i++;
	}
	for(i--;i>=0;i--)//當m=0時,i的值還會自增一次,所以for循環的初始條件爲i--,即從a[i-1]開始倒序輸出.
        printf("%d",a[i]);

 

5.編寫程序,在任意給定的9個正整數中找出按升序排列時處於中間的數,將原數據序列中比該中間數小的數用該中間數替換,位置不變,並輸出處理後的數據序列及中間數。

例如:有9個正整數:1 5 7 23 87 5 8 21 45

按升序排列時的中間數爲:8

處理後主函數中輸出的數列爲:8 8 8 23 87 8 8 21 45

#include <stdio.h>
#include<stdlib.h>
#define N  9
int main(){
    int x[N],y[N];
    int temp,k,i=0,j=0;
    printf("有9個正整數:");
    for(k=0;k<N;k++)
        scanf("%d",&x[k]);
{
     {
           for(k=0;k<N;k++)
                y[k]=x[k];
           }        for(i=1;i<N;i++)
             {
                  for(j=0;j<N-i;j++)
                        if(x[j]>x[j+1])
                           {
                               temp=x[j];
                  x[j]=x[j+1];
                   x[j+1]=temp;
                   }
                   }
                    printf("\n按升序排列時的中間數爲:");
                     printf("%d",x[N/2]);
                     printf("\n");
                      }
                       {
                           for(i=0;i<N;i++)
                                {            for(j=0;j<N;j++)
                                  if(y[i]<x[N/2])
                                     {
                                          y[i]=x[N/2];
             }
             }
              printf("處理後主函數中輸出的數列爲:");
              for(i=0;i<N;i++)
                printf("%d ",y[i]);
              printf("\n");
               }
               return 0;
               }


 

6.編寫程序統計整型變量m中各數字出現的次數,並存放到數組a中,其中:a[0]存放0出現的次數,a[1]存放1出現的次數,….a[9]存放9出現的次數。

例如:若m爲14579233,則輸出結果應爲:0,1,1,2,1,1,0,1,1。

int i=0,m,n,a[10]={0};
	scanf("%d",&m);
	while(m)
    {
     n=m%10;
     m=m/10;
    a[n]++;
    }
    for(i=0;i<10;i++)
    {
        printf("%d",a[i]);
    }



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章