{ b[j]+=a[i];
if((i+1)%3==0) j++; }
if(N%3==0) j--; for(i=0;i<=j;i++) { printf(\
if((i+1)%5==0) printf(\ } }
【例4.21】编写程序,将一维数组x中大于平均值的数据移至数组的前部,小于等于平均值的数据移至数组的后部。
解析:先计算一维数组x的平均值,然后将大于平均值的数据存入数组y的前部,小于等于平均值的数据存入数组y的后部,最后将数组y复制到数组x。
#include
float av,y[N],x[N];
for(i=0;i
for(i=0;i
for(i=j=0;i
{ y[j++]=x[i];x[i]=-1;} for(i=0;i
if(x[i]!=-1) y[j++]=x[i]; for(i=0;i
{ x[i]=y[i];printf(\}
【例4.22】已知一维整型数组a中的数已按由小到大的顺序排列,编写程序,删去一维数组中所有相同的数,使之只剩一个。
解析:从数组a的第二个元素开始,与前面保留的最后一个元素作比较,若不相等,则前移。重复此操作,直到数组a的最后一个元素为止。
#include
{ int a[N]={ 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10}; int i,j;
printf(\ for(i=0;i
printf(\ for(j=1,i=1;i
if(a[j-1]!=a[i]) a[j++]=a[i];
66
printf(\ for(i=0;i
printf(\}
【例4.23】编写程序,把从键盘输入的一个数字字符串转换为一个整数并输出。例如,若输入字符串“-1234”,则函数把它转换为整数值-1234。要求:不得调用C语言提供的将字符串转换为整数的函数。
解析:设存放数字字符串的数组为s,存放对应整型数的变量为n(初始值为0)。若字符串的第一个字符为’-’,则从第二个字符开始,否则从第一字符开始,利用公式n=n*10+s[i]-‘0’进行转换,直到’\\0’为止。
#include
{ char s[10];long n=0; int i=0;
printf(\ gets(s);
if(s[0]=='-') i++; while(s[i])
{ n=n*10+s[i]-'0';i++;} if(s[0]=='-') n=-n; printf(\}
【例4.25】编写程序,将二维数组a[N][M]中每个元素向右移一列,最右一列换到最左一列,移动后的数组存到另一