初学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]);
}