[二级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]);
    }



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