IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 大一实验室C语言考核反思 -> 正文阅读

[C++知识库]大一实验室C语言考核反思

前言

上周进行了一次实验室考核,因为粗心大意,导致很多不该错的题出错了,所以特别做一次错题博客,并进行反思。

1、结构体

题目:

struct student{
    char name[10];
    int age;
    char gender;
}std[3], *p=std;

则以下各输入语句中错误的是:()(4.0分)

A、scanf("%c" ,&(p->gender));

B、scanf("%d" ,&(*p) .age );

C、scanf("%c" ,&std[0] .gender);

D、scanf("%s" ,&std.name);

分析:
对于D选项,std 和 name 这两个数组名都代表的是整个数组,进行取地址,但是 std 中并没有 name 这个成员,name 存在于 std[i] 中,而不是std。

正确答案: D

2、转义字符

题目:
以下字符中不是转义字符的是( ).(4.0分)

A、‘\c’

B、‘\b’

C、‘\a’

D、‘\’

分析:

转义字符作用ACSⅡ码值
\n换行10
\’单引号39
\”双引号34
\ \反斜杠92
\r回车13
\t水平制表9
\v垂直制表11
\a响铃7
\b退格8
\f换页12

正确答案: A

3、双向链表

题目:
在双向链表指针p的指针前插入一个指针q的结点,操作是___________.(4.0分)

A、q->next=p; q->prior =p->prior; p->prior->next=q; p->prior =q;

B、q->prior =p->prior; q->next=q; p->prior=q; p->prior =q;

C、p->prior=q; q->next=p; p->prior->next=q; q->prior =q;

D、p->prior=q; p->prior->next=q; q->next=p; q->prior =p->prior;

分析:
在单链表中,我们有一个数据域,还有一个指针域,数据域用来存储相关数据,而指针域则负责链表之间的“联系”。 而在双向链表中,我们需要有两个指针域,一个负责向后连接,一个负责向前连接。

关于双链表的插入,图解如下:
在这里插入图片描述
正确答案: A

二、简答题

1、指针

题目:

以下代码:

int main()
{
    int a[5] = { 1, 2, 3, 4, 5 };
    int *ptr = (int *)(&a + 1);
    printf("%d,%d", *(a + 1), *(ptr - 1));
    system("pause");
    return 0;
}

输出答案为____.(答案用单个空格分隔)(4.0分)

分析:
①system(“pause”) :
可以实现冻结屏幕,便于观察程序的执行结果。
②&a :
数组的整体 的地址,这里的 a 是数组整体;
③a+1:
数组的第二个成员,这里的 a 是数组首地址。
④关于指针 ptr :
假设是 int *ptr = (int *)(&a); 那么实际上 ptr 指向的是 a 这个数组整体,而我们又将 &a 进行强制转换为 int 型指针,所以那么执行 &a+1后,ptr 的偏移量相当于 a + sizeof(int) * 5 ,那么 ptr -1 其实就是 ptr - sizeof(int),综上所述,相当于 a + sizeof(int) * 4,而 a 的地址是数组首元素地址,所以加 4个int的就得到了 a[4] 的地址,即5。

正确答案: 2 5

2、逗号运算符

题目:

以下代码:

int main()
{
    int a[3][2] = { (0, 1 ), ( 2, 3 ), (4, 5 ) };
    int *p;
    p = a[0];
    printf("%d\n", p[0]);
    system("pause");
    return 0;
}

输出答案为____.(4.0分)

分析:
主要还是考察了逗号运算符的运用,逗号运算符的优先级是最低的,顺序是从左向右依次进行,以(0,1)为例,先将 0 赋给数组 a 的首元素,然后再将 1 赋给数组 a 的首元素,最后数组 a 的首元素的值为 1,举一反三,实际上数组 a ={1,3,5};所以 p[0] 的值为1。

正确答案: 1

三、简答题

1、简述结构体和共用体的区别。

正确答案:

两者最大的区别在于内存的分配,结构体和共用体的区别在于:结构体的各个成员会占用不同的内存互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员,结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙),共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉。

2、下述三个定义有什么区别?

char * const p;
char const * p
const char *p
(4.0分)

正确答案:

char * const p; //常量指针,p的值不可以修改
char const * p;//指向常量的指针,指向的常量值不可以改
const char *p; //和char const *p

总结

难度不大,但是就是太粗心了,看题也不认真,还有就是对于一些边边角角的知识仅仅是知道,但是没有完全掌握,出现了很多失误,这些都是以后学习中要注意的,还有很多不足,需要进一步加油!

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-08 13:38:17  更:2021-12-08 13:40:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:57:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码