前几天出去面试,笔试和面试后,技术主管给出了道上机题:六个数,要一直按由小到大的顺序排列,可以随意的添加和删除。。。
对于这个公司的面试这里不想多说什么,只分享下技术。
程序是以很简单的方式做出来的,其中并未考虑执行效率问题,上机题嘛,弄出个结果就很好了
#include<stdio.h>
#include<string.h>
int num[6];
void add(int n)
{
int i,post=0;
int k;
while((n>num[post])&&(post<6))
post++;
for(i=0;i<post;i++)
{
num[i]=num[i+1];
}
num[post-1]=n;
for(k=0;k<6;k++)
printf("%d ",num[k]);
printf("\n");
}
void del(int n)
{
int i;
int k;
int post=n;
for(i=post-1;i>0;i--)
{
num[i]=num[i-1];
}
num[0]=0;
for(k=0;k<6;k++)
printf("%d ",num[k]);
printf("\n");
}
void ret()
{
int i,k;
for(i=0;i<6;i++)
num[i]=0;
for(k=0;k<6;k++)
printf("%d ",num[k]);
printf("\n");
}
main()
{
int n,i;
char chr;
for(i=0;i<6;i++)
num[i]=0;
for(i=0;i<6;i++)
printf("%d ",num[i]);
printf("\n");
while(1)
{
scanf("%c,%d",&chr,&n);
if(chr=='A')
add(n);
else if(chr=='D')
del(n);
else if(chr=='R')
ret();
}
}
运行结果如下: