您的位置:首页 > 其它

【牛客 题库】 指针移动 || 类创建对象的个数|| 求字符串数组中长度最短的字符串所在的行下标

2017-09-22 14:29 260 查看
1.

请问p1+5= 什么?

p2+5= 什么?

801005   810005


801010   810014


801005   810014


801010  810015


解答:B

p1指向字符型,一次移动一个字符型,1个字节;p1+5后移5个字节,16进制表示为5;

   p2指向长整型,一次移动一个长整型,4个字节,p2+5后移20字节,16进制表示为14。

把一个地址赋给指针变量,注意格式。当指针自增时,地址按sizeof(类型)增加

{char每次移动1个字节;short移动2个字节;int
,long ,float移动4个字节;double移动8个字节}


2.假定CSomething是一个类,执行下面这些语句之后,内存里创建了____个CSomething对象。

10


9


8


7


6


5


解答:6

CSomething a();// 没有创建对象,这里不是使用默认构造函数,而是一个函数声明,在C++ Primer393页中有说明。
CSomething b(2);//使用一个参数的构造函数,创建了一个对象。
CSomething c[3];//使用无参构造函数,对象数组,创建了3个对象。

CSomething &ra=b;//ra引用b,没有创建新对象。
CSomething d=b;//使用拷贝构造函数,创建了一个新的对象d。
CSomething *pA = c;//创建指针,指向对象c,没有构造新对象。
CSomething *p = new CSomething(4);//新建一个对象。

3.下列给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,
并把其串长放在形参n所指的变量中。ss所指字符串数数组中共有M个字符串,且串长小于N。 
#define M 5
#define N 20
int fun(char(*ss)
, int *n)
{
int i, k = 0, len = N;
for (i = 0; i < M; i++)
{
len = strlen(ss[i]);
if (i == 0)
*n = len;
if (len < * n)
{
*n = len;
k = i;
}
}
return (k);
}
int main()
{
char ss[M]
= { "shanghai", "guangzhou", "beijing", "tianjing", "chongqing" };
int n, k, i;
printf("\nThe originalb stringsare:\n");
for (i = 0; i < M; i++)
puts(ss[i]);
k = fun(ss, &n);
printf("\nThe length of shortest string is: % d\n", n);
printf("\nThe shortest string is: % s\n", ss[k]);
}
运行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐