sony往年程序笔试真题
面试笔试3.24W
A、该题用语言描述是指:第i行第一个输出*,然后输出i-1个.,重复上i次。 #include
#define N 8
int main()
{
int i;
int j;
int k;
for(i=0;i<=N;i++)
{
for(j=1;j<=i;j++)
{
printf("*");
for(k=1;k
printf(".");
}
printf("n");
}
return 0;
B、降序排列数组,很常见的,这里我采用冒泡排序法还有选择排序法:
冒泡排序:
#include
void sort(int *array,int num );
int main()
{
int num=9,i;
int array[]={45,56,76,234,1,34,23,2,3};
sort(array,num);
for(i=0;i
printf("%dt",array);
return 0;
}
void sort(int *array,int num)
{
int i,j;
int temp;
for(i=0;i
{
for(j=0;j
{
if(array[j]
{
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
选择排序:
#include
void sort(int *array,int num );
int main()
{
int num=9,i;
int array[]={45,56,76,234,1,34,23,2,3};
sort(array,num);
for(i=0;i
printf("%dt",array);
return 0;
}
void sort(int *array,int num)
{
int i,j,k;
int temp;
for(i=0;i
{
k=i; //每次一趟结束后就从新的一个值开始,无需从头来,因为每一次排完后都是最大的了
for(j=i+1;j
if(array[k]
{
k=j;
}
if(k!=i) //如果k不等于i就说明有更大的值,交换二值
{
temp=array;
array=array[k];
array[k]=temp;
}
}
}
C、该题考查同学们对递归算法的认识程度,在这里我们采用迭代算法,优点是程序运行效率高,而且不用担心堆栈溢出,在运算值大的情况下比递归算法可以提高上万倍的速度,比如同样计算30,递归算法用时
0.019s,而迭代算法则只用了0.003s,可见是递归算法的八分之一,值更大时这种越明显。缺点是程序比较不容易懂。有兴趣的可以参见《C和指针》127页,具体程序如下:
递归法:
#include
int Pheponatch(int);
int main()
{
printf("The 10th is %d",Pheponatch(30));
return 0;
}
int Pheponatch(int N)
{
if(N<=2)
return 1;
return Pheponatch(N-1)+Pheponatch(N-2);
}
迭代法:
#include
int Pheponatch(int);
int main()
{
printf("The 10th is %d",Pheponatch(30));
return 0;
}
int Pheponatch(int n)
{
long result;
long previous_result;
long next_older_result;
result=previous_result=1;
while(n>2)
{
n-=1;
next_older_result=previous_result+result; previous_result=result;
result=next_older_result;
}
return result;
}
D、源程序如下,红笔写出的是修改的地方:(其实这个程序有好多漏洞,不知为什么会那这个程序来考)
#include
#include
typedef struct{
TNode* left;
TNode* right;
int value;
} TNode;
TNode* root=NULL;
void append(int N);
int main()
{
append(63);
append(45);
append(32);
append(77);
append(96);
append(21);
append(17); // Again, 数字任意给出
}
void append(int N)
{
TNode* NewNode=(TNode *)malloc(sizeof(TNode));
NewNode->value=N;
NewNode->right=NULL;
NewNode->left=NULL;
if(root==NULL)
{
root=NewNode;
return;
}
else
{
TNode* temp;
temp=root;
while((N>=e && !=NULL) || (N
right
!=NULL
))
{
while(N>=e && !=NULL)
temp=;
while(N
temp=t;
}
if(N>=e)
=NewNode;
else
t=NewNode;
return;
}
}
原因:因为新节点的左右指针没有赋 NULL 值,至使下面的 while循环不能正确结束而导致内
存越界,最后崩溃(注意结束条件是 temp->left!= NULL 或 temp->right!=NULL)。
#define N 8
int main()
{
int i;
int j;
int k;
for(i=0;i<=N;i++)
{
for(j=1;j<=i;j++)
{
printf("*");
for(k=1;k
printf(".");
}
printf("n");
}
return 0;
B、降序排列数组,很常见的,这里我采用冒泡排序法还有选择排序法:
冒泡排序:
#include
void sort(int *array,int num );
int main()
{
int num=9,i;
int array[]={45,56,76,234,1,34,23,2,3};
sort(array,num);
for(i=0;i
printf("%dt",array);
return 0;
}
void sort(int *array,int num)
{
int i,j;
int temp;
for(i=0;i
{
for(j=0;j
{
if(array[j]
{
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
选择排序:
#include
void sort(int *array,int num );
int main()
{
int num=9,i;
int array[]={45,56,76,234,1,34,23,2,3};
sort(array,num);
for(i=0;i
printf("%dt",array);
return 0;
}
void sort(int *array,int num)
{
int i,j,k;
int temp;
for(i=0;i
{
k=i; //每次一趟结束后就从新的一个值开始,无需从头来,因为每一次排完后都是最大的了
for(j=i+1;j
if(array[k]
{
k=j;
}
if(k!=i) //如果k不等于i就说明有更大的值,交换二值
{
temp=array;
array=array[k];
array[k]=temp;
}
}
}
C、该题考查同学们对递归算法的认识程度,在这里我们采用迭代算法,优点是程序运行效率高,而且不用担心堆栈溢出,在运算值大的情况下比递归算法可以提高上万倍的速度,比如同样计算30,递归算法用时
0.019s,而迭代算法则只用了0.003s,可见是递归算法的八分之一,值更大时这种越明显。缺点是程序比较不容易懂。有兴趣的可以参见《C和指针》127页,具体程序如下:
递归法:
#include
int Pheponatch(int);
int main()
{
printf("The 10th is %d",Pheponatch(30));
return 0;
}
int Pheponatch(int N)
{
if(N<=2)
return 1;
return Pheponatch(N-1)+Pheponatch(N-2);
}
迭代法:
#include
int Pheponatch(int);
int main()
{
printf("The 10th is %d",Pheponatch(30));
return 0;
}
int Pheponatch(int n)
{
long result;
long previous_result;
long next_older_result;
result=previous_result=1;
while(n>2)
{
n-=1;
next_older_result=previous_result+result; previous_result=result;
result=next_older_result;
}
return result;
}
D、源程序如下,红笔写出的是修改的地方:(其实这个程序有好多漏洞,不知为什么会那这个程序来考)
#include
#include
typedef struct{
TNode* left;
TNode* right;
int value;
} TNode;
TNode* root=NULL;
void append(int N);
int main()
{
append(63);
append(45);
append(32);
append(77);
append(96);
append(21);
append(17); // Again, 数字任意给出
}
void append(int N)
{
TNode* NewNode=(TNode *)malloc(sizeof(TNode));
NewNode->value=N;
NewNode->right=NULL;
NewNode->left=NULL;
if(root==NULL)
{
root=NewNode;
return;
}
else
{
TNode* temp;
temp=root;
while((N>=e && !=NULL) || (N
right
!=NULL
))
{
while(N>=e && !=NULL)
temp=;
while(N
temp=t;
}
if(N>=e)
=NewNode;
else
t=NewNode;
return;
}
}
原因:因为新节点的左右指针没有赋 NULL 值,至使下面的 while循环不能正确结束而导致内
存越界,最后崩溃(注意结束条件是 temp->left!= NULL 或 temp->right!=NULL)。
-
金地集团笔试题(精华)
1.你为什么选择现在的专业?请列举出你这个专业的三个特点?你最喜欢的一门课程是什么?你从中的最大收获是什么?你最不喜欢的课程有哪些?为什么?列举出你记忆中最轻松的一件事情,最费劲的一件事情2.A公司:高速发展、制度不完善、?B公司:稳健发展、制度完善、??如果你是毕业...
-
AMD北京笔试经历
分软件,硬件两套卷子,都要做1software都是简答题,主要是汇编,计算机体系结构,AMD和Intel的cpu有什么区别,实模式与保护模式。2hardware10道简答题1个有缘RC回路的电流方程us=uc+dUc/dt*RC?常见的计算机总线有什么sram,dram,sdram,ddr都是什么串行总线,并行总线哪个更...
-
大唐移动笔试归来
组织的非常混乱,首先教室没有安排好,人多位置少,最后临时换了一个教室,大家紧挨着坐,本来8:45的笔试拖到9:15才开始,笔试的内容在宣讲的时候说要考c语言,但是笔试的卷子都是通信知识,不过比较可取的一点就是不同的职位不同的卷子,目前为止,我参加的笔试内容都...
-
欧司朗笔试因祸得福
欧司朗笔试题目要求一小时搞定,主要包括:英语题目,专业题考什么是光电效应,LED发光的原因,还有几道画图的。都是电子的基础题吧,可是我都不会做,唉!谁叫我过去不努力呢!胡乱写些就过去了。前后不到10分钟,然后就是问答题,英语回答,英语提问。第一题是中译英,顺便跟自己做下...