恒生测试开发笔试 2020.3.20*
第一部分c语言选择
比较有印象的是常量指针,指针常量
1、常量指针:本质上是一个指针,常量表示指针指向的内容,说明该指针指向一个“常量”。在常量指针中,指针指向的内容是不可改变的,指针看起来好像指向了一个常量。
const int *p,int const *p;
int a=10,b=20;
const int *p=&a;
p=&b;//指针可以指向其他地址,但是内容不可以改变。
2、指针常量:指针类型的常量(int *const p)
本身是一个常量,指针用来说明常量的类型,表示该常量是一个指针类型的常量。在指针常量中,指针自身的值是一个常量,不可改变,始终指向同一个地址。在定义的同时必须初始化。
int a=10,b=20;
int * const p=&a;
*p=30;//p指向的地址是一定的,但其内容可以修改。
还有数据库的视图
视图是虚拟的表,只包含使用时动态检索数据的查询。
视图的限制:(1)、视图不能索引,也不能有关联的触发器或默认值,
(2)、ORDER BY可以用在视图中,但如果从该视图检索数据的select语句中也含有 ORDER BY,那么该视图中的ORDER BY将被覆盖。
3、为score表建立Sno、Cno的唯一索引。
建立索引是加快查询速度的有效手段。
create unique index SCno on Score(Sno,Cno)
第二部分、编程题
1、海滩上有一堆桃子,5只猴子来分。第一只猴子把这堆桃子平均分 为5份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。 第二只猴子把剩下的桃子又平均分成5份,又多了一个,它同样把 多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的。试问,海滩上原来有最少有多少个桃子?
分析:第二到五只猴子看到猴子的数量一定是4的倍数,
#include<iostream>
using namespace std;
int main()
{
int x=0, i = 0, j = 1;//i执行次数 j=1最后猴子拿到的桃子数, x 每次均分后,第一只猴子拿了之后剩下的总数
while (i < 5) {
x = 4 * j;
for (i = 0; i < 5; i++)
{
if (x % 4 != 0) //检查看到的桃子是否是4的倍数
{
break;
}
x = (x / 4) * 5 + 1;
}
j++;
}
cout << x << endl;
return 0;
}
2、求1000以内所有的完数。
完数,一般指完全数,一个自然数如果它的所有真因子(即除了自身以外的约数)的和等于该数,那么这个数就是完全数,如:6的真因子有1 、2、3,6=1+2+3,所以6是一个完全数。
#include<iostream>
using namespace std;
bool isperfectNum(int n)
{
int sum = 0;
for (int i = 1; i < n; i++)
{
if (n % i == 0)
{
sum += i;
}
}
return sum == n;
}
int main()
{
for (int n = 1; n < 1000; n++)
{
if (isperfectNum(n))
{
cout << n << endl;
}
}
return 0;
}