2005年11月神州数码华工笔试题C++部分两个大题--处女帖啊!!!
2005年11月神州数码华工笔试题C++部分两个大题1.char *GetMemory(void)
{
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test函数会有什么样的结果?
答:可能是乱码。
因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是 NULL,但其原现的内容已经被清除,新内容不可知。
2.输入一个整数,要求每一位的数字相加,直至结果为一位数,如552,相加得12,再次相加得3.
解答:1递归实现
#include<stdio.h>
int add(int a)
{
int b=0;
while(a!=0)
{
b+=a%10;
a=a/10;
}
if(b/10==0)
printf("\nthe result:%d",b);
else add(b);
return 1;
}
void main()
{
int num;
printf("input a integer:");
scanf("%d",&num);
if(num<0)num=-num;
if(num/10==0)
printf("\nthe result:%d",num);
else add(num);
}
2.迭代实现
#include<stdio.h>
void main()
{
int num,total;
total=0;
printf("input a integer:");
scanf("%d",&num);
if(num<0)num=-num;
while(num!=0)
{
total+=num%10;
num=num/10;
if(num==0)
if(total/10==0)break;
else {num=total;total=0;}
}
printf("\nthe result:%d",total);
}
注意:递归与迭代的比较,递归可能受到堆栈的可利用容量的限制,其次,递归占用较多的运行内存,频繁调用函数会在堆栈中产生较多的运行开销. That\'s easy.
第一题,考察堆,栈,在一个专题见过
第二题,见过至少3道这样的练习题了。
这是招什么的? 应该是测试的。
听说设计类的要做j2ee的题 我连笔试都没有...惨烈啊... 原来笔试就做这些题啊?
楼上说话真的比较夸张,怪不得你的沟通能力有问题。
楼上的楼上的楼上把我想说的话给说了,见到这种题Y滴就是想点评点评。。
页:
[1]