Sony笔试题

原创 2007年09月18日 22:38:00
.完成下列程序
*
*.*.
*..*..*..
*...*...*...*...
*....*....*....*....*....
*.....*.....*.....*.....*.....*.....
*......*......*......*......*......*......*......
*.......*.......*.......*.......*.......*.......*.......*.......
#include
#define N 8
int main()
{
int i;
int j;
int k;
---------------------------------------------------------
│ │
│ │
│ │
---------------------------------------------------------
return 0;
}
答:

#define N 8
int main()
{
int i;
int j;
int k;

for(i=0;i<N;i++)
{
for(j=0;j<i+1;j++)
{
printf("*");
for(k=0;k<i;k++)
printf(".");
}
printf("/n");
}
return 0;
}

2.完成程序,实现对数组的降序排序
#include
void sort( );
int main()
{
int array[]={45,56,76,234,1,34,23,2,3}; //数字任意给出
sort( );
return 0;
}
void sort( )
{
---------------------------------------------------------
│ │
│ │
│ │
---------------------------------------------------------
}
答:使用选择排序法,我为sort函数多加了两个形参,至少第一个是必须的,否则无法传入待排序数组。不知道这样做是否符合题意。

void sort(int *array,int num)
{
int temp;
for(int i=0;i<num-1;i++)
for(int j=i+1;j<num;j++)
if (array<array[j])
{
temp=array;
array=array[j];
array[j]=temp;
}
}


3.费波那其数列,1,1,2,3,5……编写程序求第十项。可以用递归,也可以用其他方法,但要说明你选择的理由。
#include
int Pheponatch(int);
int main()
{
printf("The 10th is %d",Pheponatch(10));
return 0;
}
int Pheponatch(int N)
{
--------------------------------
│ │
│ │
--------------------------------
}
答:
使用递归,理由是递归编程简单,代码容易理解,但缺点是效率不高,而且有深度限制,如果深度太深,则堆栈会溢出。

int Pheponatch(int N)
{
if (N==3)
return 2;
else if (N==2||N==1)
return 1;
else
return Pheponatch(N-1)+Pheponatch(N-2);
}

4.下列程序运行时会崩溃,请找出错误并改正,并且说明原因。

#include <stdio.h>
#include <malloc.h>
typedef struct TNode
{
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, 数字任意给出
return 0;
}

void append(int N)
{
TNode* NewNode=(TNode *)malloc(sizeof(TNode));
NewNode->value=N;
NewNode->left=NULL; //新增
NewNode->right=NULL; //新增
if(root==NULL)
{
root=NewNode;
return;
}
else
{
TNode* temp;
temp=root;
while((N>=temp->value && temp->left!=NULL)||(N<temp->value && temp->right!=NULL))
{
while(N>=temp->value && temp->left!=NULL)
temp=temp->left;
while(N<temp->value && temp->right!=NULL)
temp=temp->right;
}
if(N>=temp->value)
temp->left=NewNode;
else
temp->right=NewNode;
return;
}
}
答:因为新节点的左右指针没有赋NULL值,至使下面的while循环不能正确结束而导致内存越界,最后崩溃(注意结束条件是temp->left!= NULL或temp->right!=NULL)。改正就是增加两条赋值语句,如上文红色部分字体就是新增的两条语句。
 

PHP初级程序员笔试题(含答案)

  • 2017年10月25日 11:41
  • 27KB
  • 下载

面试笔试题集锦

  • 2014年11月19日 15:29
  • 4.95MB
  • 下载

java笔试题(引自传智播客)-其他

5. html&JavaScript&ajax部分 1. 判断第二个日期比第一个日期大        如何用脚本判断用户输入的的字符串是下面的时间格式2004-11-21 必须要保证用户的输入是此...

java面试笔试题集锦

  • 2017年08月24日 22:45
  • 5.05MB
  • 下载

锐捷网络嵌入式笔试题2015

  • 2015年11月25日 17:46
  • 683KB
  • 下载

笔试题引发的思考--引用传递

引用传递

华为软件研发岗笔试题总结

  • 2016年05月08日 13:05
  • 5.72MB
  • 下载

JAVA企业笔试题集

  • 2015年01月18日 20:11
  • 28KB
  • 下载

阿里巴巴公司DBA笔试题及参考答案

一:SQL tuning 类   1:列举几种表连接方式   2:不借助第三方工具,怎样查看sql的执行计划   3:如何使用CBO,CBO与RULE的区别   4:如何定位重要(消...

腾讯笔试题精选二

  • 2015年07月11日 11:36
  • 49KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Sony笔试题
举报原因:
原因补充:

(最多只允许输入30个字)