首页 分享 【练习】

【练习】

来源:花匠小妙招 时间:2024-11-14 14:24

1、有以下程序

#include
#include<stdio.h>
using namespace std;
int main(){
int m=0123, n = 123;
printf("%o %on", m, n);
return 0;
}

程序运行后的输出结果是:

A 0123 0173
B 0123 173
C 123 173
D 173 173

答:D %o以八进制输出
2、7. 关于"深拷贝",下列说法正确的是()

A 会拷贝成员数据的值和会拷贝静态分配的成员对象
B 只会拷贝成员数据的值
C 只会拷贝静态分配的成员对象
D 只会拷贝动态分配的成员对象

答:A

对于
struct X { int x; int y; };
深浅拷贝没有区别
而一旦有了引用或者指针例如:
struct X { int x; int y; int* p; };
浅拷贝依然只是直接拷贝x, y , p,但是对于指针或者引用来说,若是只是拷贝表面,那么拷贝后的物体的指针也和原来的指针指向的是同一个对象,那么如果原来的物体销毁了,但是现在拷贝的物体还在,那么这时候你拷贝后的物体的成员指针就是一个悬挂指针,指向了不再存在的物体,访问便会出错。
而对于深拷贝,遇到指针的时候,他会知道new出来一块新的内存,然后把原来指针指向的值拿过来,这样的代价会比浅拷贝耗费的精力更大,但是当原来的物体销毁后,拷贝的指针依然有效。
但是大部分情况下都是使用浅拷贝

3、 下面关于"指针"的描述不正确的是()

A 当使用free释放掉一个指针内容后,指针变量的值被置为NULL
B 32位系统下任何类型指针的长度都是4个字节
C 指针的数据类型声明的是指针实际指向内容的数据类型
D 野指针是指向未分配或者已经释放的内存地址

答:A

free掉一个指针后,指针仍然指向原来的地址,free的意义在于告诉系统目标地址已经被收回

4、以下程序统计给定输入中每个大写字母的出现次数(不需要检查输入合法性)

void AlphabetCounting(char a[],int n){ int count[26]={},i,kind=0; for(i=0;i<n;++i) (1); for(i=0;i<26;++i){ if(++kind>1) putchar(';'); printf("%c=%d",(2)); } } 12345678

以下能补全程序,正确功能的选项是()

A ++count[a[i]-‘Z’];‘Z’-i,count[‘Z’-i]
B ++count[‘A’-a[i]];‘A’+i,count[i]
C ++count[i];i,count[i]
D ++count[‘Z’-a[i]];‘Z’-i,count[i]
E ++count[a[i]];‘A’+i,count[a[i]]

答:D

题意为输入设定全是大写 (ASCII码A-Z为65-90,递增):
一、count存储A-Z的个数,即count[0]存储A的个数,于是 ++count[a[i]-‘A’]; 'A’+i,count[i];
二、count存储Z~A的个数,即count[0]存储Z的个数,于是 ++count[‘Z’-a[i]]; ’Z’-i,count[i]。 所以答案为D

5、下面代码会输出()

int main(){
int a[4]={1,2,3,4};
int ptr=(int)(&a+1);
printf("%d",*(ptr-1));
}
A.4 B.1 C.2 D.3

答:A

其实测试可以发现,a 和 &a 是同一个地址,printf("%d",a),printf("%d", &a)结果是相同的。
但是其代表的含义不同,(a+1)代表从a数组首地址跳跃一个int的长度,(&a+1)表示从a数组首地址跳跃一个数组的长度,也就是指向a数组最后一个元素的下一个位置,因此*(ptr- 1)表示a数组的最后一个元素。

6、请找出下面程序中有哪些错误:

int main() { int i=10; int j=1; const int *p1;//(1) int const *p2=&i; //(2) p2=&j;//(3) int *const p3=&i;//(4) *p3=20;//(5) *p2=30;//(6) p3=&j;//(7) return 0; } 12345678910111213

A 1,2,3,4,5,6,7
B 1,3,5,6
C 6,7
D 3,5

答:C

1)const intp1:表示不能通过指针p1修改它指向的内存单元的值,但是p1本身可修改。
(2)int constp2=&i:与p1相同,即不能修改p2指向的内存单元的值,但是可以修改p2使其指向其它的内存单元。这里p2指向了整型变量i
(3)p2=&j:修改p2,使其指向整型变量 j ,由(2)可知(3)没错。
(4)int*constp3=&i:p3本身是指向整型变量的常指针,即p3初始化后不能再指向其它的内存单元,但是可以修改p3指向的内存单元的值。这里p3指向了整型变量i。
(5)*p3=20:通过p3将变量i的值修改为2,由(4)可知(5)没错。
(6)*p2=30:通过p2修改它所指向的内存单元的值,由(2)可知(6)错误。
(7)p3=&j:修改p3,使其指向j,由(4)可知(7)错误。

相关知识

如何练习星体投射
Python 水仙花数练习
免费的英语口语练习软件,还不收藏?
农业专题练习
抗压练习的方法
生物圈中的其他生物单元练习资料优选
乔叶《鲜花课》阅读练习及答案
下载刷刷题APP,创建题库手机练习
幼儿园课程练习及答案
CAD中怎么画花朵?绘制花朵CAD练习图步骤

网址: 【练习】 https://www.huajiangbk.com/newsview547472.html

所属分类:花卉
上一篇: 经典算法动态规划之商品最优购买问
下一篇: 2024合肥祥源花世界(门票预约

推荐分享