前幾天出去面試,筆試和面試後,技術主管給出了道上機題:六個數,要一直按由小到大的順序排列,可以隨意的添加和刪除。。。
對於這個公司的面試這裡不想多說什麼,只分享下技術。
程式是以很簡單的方式做出來的,其中並未考慮執行效率問題,上機題嘛,弄出個結果就很好了
#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();
}
}
運行結果如下: