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