概述
前言:
本章为数组部分的练习章节,一共八个大题。配备答案+详细画图解析。
如果你还没有学过数组,或者想复习一下再写:
???? 传送门:【维生素C语言】第四章 - 数组
???? 例题:
???? 题目详解展示:
数组笔试题(答案+详解)
8道大题(共63小题),每小题1分,满分63分
???? 说明:
① 建议做题时拿出纸和笔写出你认为的结果;
② 建议先不要看答案,写完后再看答案进行核对;
③ 部分题目前面有对应知识点的传送超链接,可自行选择复习;
④ 对于做错的题,可以看题目答案下面的解析部分,以便深入理解;
⑤ 可以在评论区回复自己做对了几题;
第一大题:
每小题1分,满分7分
???? 复习:【维生素C语言】第五章 - 操作符( 0x05 操作数的类型长度 sizeof )
???? 预测下列代码的运行结果( sizeof )
int main()
{
int a[] = {1, 2, 3, 4}; // 一维数组
/* 1 */ printf("%dn", sizeof(a));
/* 2 */ printf("%dn", sizeof(a + 0));
/* 3 */ printf("%dn", sizeof(*a));
/* 4 */ printf("%dn", sizeof(a + 1));
/* 5 */ printf("%dn", sizeof(a[1]));
/* 6 */ printf("%dn", sizeof(&a));
/* 7 */ printf("%dn", sizeof(*&a));
/* 8 */ printf("%dn", sizeof(&a + 1));
/* 9 */ printf("%dn", sizeof(&a[0]));
/* 10 */ printf("%dn", sizeof(&a[0] + 1));
return 0;
}
???? 答案:
/* 1 */ printf("%dn", sizeof(a)); // 16
/* 2 */ printf("%dn", sizeof(a + 0)); // 4/8
/* 3 */ printf("%dn", sizeof(*a)); // 4
/* 4 */ printf("%dn", sizeof(a + 1)); // 4/8
/* 5 */ printf("%dn", sizeof(a[1])); // 4
/* 6 */ printf("%dn", sizeof(&a)); // 4/8
/* 7 */ printf("%dn", sizeof(*&a)); // 16
/* 8 */ printf("%dn", sizeof(&a + 1)); // 4/8
/* 9 */ printf("%dn", sizeof(&a[0])); // 4/8
/* 10 */ printf("%dn", sizeof(&a[0] + 1)); // 4/8
???? 解析:
1️⃣
2️⃣
3️⃣
4️⃣
5️⃣
6️⃣
7️⃣
8️⃣
9️⃣
????
第二大题:
???? 复习:【维生素C语言】第四章 - 数组( 0x02 一维数组的初始化 )
每小题1分,满分7分
???? 预测下列代码的运行结果( sizeof )
int main()
{
char arr[] = {'a','b','c','d','e','f'}; // 字符数组
/* 1 */ printf("%dn", sizeof(arr));
/* 2 */ printf("%dn", sizeof(arr+0));
/* 3 */ printf("%dn", sizeof(*arr));
/* 4 */ printf("%dn", sizeof(arr[1]));
/* 5 */ printf("%dn", sizeof(&arr));
/* 6 */ printf("%dn", sizeof(&arr+1));
/* 7 */ printf("%dn", sizeof(&arr[0]+1));
return 0;
}
???? 答案:
/* 1 */ printf("%dn", sizeof(arr)); // 6
/* 2 */ printf("%dn", sizeof(arr+0)); // 4/8
/* 3 */ printf("%dn", sizeof(*arr)); // 1
/* 4 */ printf("%dn", sizeof(arr[1])); // 1
/* 5 */ printf("%dn", sizeof(&arr)); // 4/8
/* 6 */ printf("%dn", sizeof(&arr+1)); // 4/8
/* 7 */ printf("%dn", sizeof(&arr[0]+1)); // 4/8
???? 解析:
1️⃣
2️⃣
3️⃣
4️⃣
5️⃣
6️⃣
7️⃣
第三大题:
每小题1分,满分7分
???? 预测下列代码的运行结果( strlen )
int main()
{
char arr[] = { 'a','b','c','d','e','f' }; // 字符数组
/* 1 */ printf("%dn", strlen(arr));
/* 2 */ printf("%dn", strlen(arr + 0));
/* 3 */ printf("%dn", strlen(*arr));
/* 4 */ printf("%dn", strlen(arr[1]));
/* 5 */ printf("%dn", strlen(&arr));
/* 6 */ printf("%dn", strlen(&arr + 1));
/* 7 */ printf("%dn", strlen(&arr[0] + 1));
return 0;
}
???? 答案:
/* 1 */ printf("%dn", strlen(arr)); // 随机值
/* 2 */ printf("%dn", strlen(arr + 0)); // 随机值
/* 3 */ printf("%dn", strlen(*arr)); // error
/* 4 */ printf("%dn", strlen(arr[1])); // error
/* 5 */ printf("%dn", strlen(&arr)); // 随机值
/* 6 */ printf("%dn", strlen(&arr + 1)); // 随机值-6
/* 7 */ printf("%dn", strlen(&arr[0] + 1)); // 随机值-1
???? 解析:
1️⃣
2️⃣
3️⃣
4️⃣
5️⃣
6️⃣
7️⃣
第四大题:
每小题1分,满分7分
???? 预测下列代码的运行结果( sizeof )
int main()
{
char arr[] = "abcdef";
/* 1 */ printf("%dn", sizeof(arr));
/* 2 */ printf("%dn", sizeof(arr+0));
/* 3 */ printf("%dn", sizeof(*arr));
/* 4 */ printf("%dn", sizeof(arr[1]));
/* 5 */ printf("%dn", sizeof(&arr));
/* 6 */ printf("%dn", sizeof(&arr+1));
/* 7 */ printf("%dn", sizeof(&arr[0]+1));
return 0;
}
???? 答案:
/* 1 */ printf("%dn", sizeof(arr)); // 7
/* 2 */ printf("%dn", sizeof(arr+0)); // 4/8
/* 3 */ printf("%dn", sizeof(*arr)); // 1
/* 4 */ printf("%dn", sizeof(arr[1]));// 1
/* 5 */ printf("%dn", sizeof(&arr)); // 4/8
/* 6 */ printf("%dn", sizeof(&arr+1)); // 4/8
/* 7 */ printf("%dn", sizeof(&arr[0]+1)); // 4/8
???? 解析:
1️⃣
2️⃣
3️⃣
4️⃣
5️⃣
6️⃣
7️⃣
第五大题:
每小题1分,满分7分
???? 预测下列代码的运行结果( strlen )
int main()
{
char arr[] = "abcdef";
/* 1 */ printf("%dn", strlen(arr));
/* 2 */ printf("%dn", strlen(arr + 0));
/* 3 */ printf("%dn", strlen(*arr));
/* 4 */ printf("%dn", strlen(arr[1]));
/* 5 */ printf("%dn", strlen(&arr));
/* 6 */ printf("%dn", strlen(&arr + 1));
/* 7 */ printf("%dn", strlen(&arr[0] + 1));
return 0;
}
???? 答案:
/* 1 */ printf("%dn", strlen(arr)); // 6
/* 2 */ printf("%dn", strlen(arr+0)); // 6
/* 3 */ printf("%dn", strlen(*arr)); // error
/* 4 */ printf("%dn", strlen(arr[1])); // error
/* 5 */ printf("%dn", strlen(&arr)); // 6
/* 6 */ printf("%dn", strlen(&arr+1)); // 随机值
/* 7 */ printf("%dn", strlen(&arr[0]+1)); // 5
???? 解析:
1️⃣
2️⃣
3️⃣
4️⃣
5️⃣
6️⃣
7️⃣
第六大题:
每小题1分,满分7分
???? 复习:【维生素C语言】第十章 - 指针的进阶(上)( 0x00 字符指针的定义 )
???? 预测下列代码的运行结果( sizeof )
int main()
{
char* p = "abcdef";
/* 1 */ printf("%dn", sizeof(p));
/* 2 */ printf("%dn", sizeof(p + 1));
/* 3 */ printf("%dn", sizeof(*p));
/* 4 */ printf("%dn", sizeof(p[0]));
/* 5 */ printf("%dn", sizeof(&p));
/* 6 */ printf("%dn", sizeof(&p + 1));
/* 7 */ printf("%dn", sizeof(&p[0] + 1));
return 0;
}
???? 答案:
/* 1 */ printf("%dn", sizeof(p)); // 4/8
/* 2 */ printf("%dn", sizeof(p+1)); // 4/8
/* 3 */ printf("%dn", sizeof(*p)); // 1
/* 4 */ printf("%dn", sizeof(p[0])); // 1
/* 5 */ printf("%dn", sizeof(&p));// 4/8
/* 6 */ printf("%dn", sizeof(&p+1)); // 4/8
/* 7 */ printf("%dn", sizeof(&p[0]+1)); // 4/8
???? 解析:
1️⃣
2️⃣
3️⃣
4️⃣
5️⃣
6️⃣
7️⃣
第七大题:
每小题1分,满分7分
???? 预测下列代码的运行结果( strlen )
int main()
{
char *p = "abcdef";
/* 1 */ printf("%dn", strlen(p));
/* 2 */ printf("%dn", strlen(p+1));
/* 3 */ printf("%dn", strlen(*p));
/* 4 */ printf("%dn", strlen(p[0]));
/* 5 */ printf("%dn", strlen(&p));
/* 6 */ printf("%dn", strlen(&p+1));
/* 7 */ printf("%dn", strlen(&p[0]+1));
return 0;
}
???? 答案:
/* 1 */ printf("%dn", strlen(p)); // 6
/* 2 */ printf("%dn", strlen(p+1)); // 5
/* 3 */ printf("%dn", strlen(*p)); // error
/* 4 */ printf("%dn", strlen(p[0])); // error
/* 5 */ printf("%dn", strlen(&p)); // 随机值
/* 6 */ printf("%dn", strlen(&p+1)); // 随机值
/* 7 */ printf("%dn", strlen(&p[0]+1)); // 5
???? 解析:
1️⃣
2️⃣
3️⃣
4️⃣
5️⃣
6️⃣
7️⃣
第八大题:
每小题1分,满分11分
???? 预测下列代码的运行结果( sizeof )
int main()
{
int a[3][4] = {0}; // 二维数组
/* 1 */ printf("%dn",sizeof(a));
/* 2 */ printf("%dn",sizeof(a[0][0]));
/* 3 */ printf("%dn",sizeof(a[0]));
/* 4 */ printf("%dn",sizeof(a[0]+1));
/* 5 */ printf("%dn",sizeof(*(a[0]+1)));
/* 6 */ printf("%dn",sizeof(a+1));
/* 7 */ printf("%dn",sizeof(*(a+1)));
/* 8 */ printf("%dn",sizeof(&a[0]+1));
/* 9 */ printf("%dn",sizeof(*(&a[0]+1)));
/* 10 */ printf("%dn",sizeof(*a));
/* 11 */ printf("%dn",sizeof(a[3]));
return 0;
}
???? 答案:
/* 1 */ printf("%dn",sizeof(a)); // 48
/* 2 */ printf("%dn",sizeof(a[0][0])); // 4
/* 3 */ printf("%dn",sizeof(a[0])); // 16
/* 4 */ printf("%dn",sizeof(a[0]+1)); // 4/8
/* 5 */ printf("%dn",sizeof(*(a[0]+1)));// 4
/* 6 */ printf("%dn",sizeof(a+1)); // 4
/* 7 */ printf("%dn",sizeof(*(a+1))); // 16
/* 8 */ printf("%dn",sizeof(&a[0]+1)); // 4/8
/* 9 */ printf("%dn",sizeof(*(&a[0]+1))); // 16
/* 10 */ printf("%dn",sizeof(*a)); // 16
/* 11 */ printf("%dn",sizeof(a[3])); // 16
???? 解析:
1️⃣
2️⃣
3️⃣
4️⃣
5️⃣
6️⃣
7️⃣
8️⃣
9️⃣
????
1️⃣1️⃣
总结:
???? 数组名的意义:
① sizeof ( 数组名 ) - 数组名表示整个数组,计算的是整个数组的大小。
② &数组名,这里的数组名表示整个数组,取出的是整个数组的地址。
③ 除此之外,所有的数组名都表示首元素的地址。
花絮:
制作不易……大半夜肝出来的!看到画图工具就想吐……
参考资料:
Microsoft. MSDN(Microsoft Developer Network)[EB/OL]. []. .
比特科技. C语言进阶[EB/OL]. 2021[2021.8.31]. .
???? 本文作者: 王亦优
???? 更新记录: 2021.7.8
❌ 勘误记录: 某处过程对了但是答案标错了(由Mu_Muxi_提出)
???? 本文声明: 由于作者水平有限,本文有错误和不准确之处在所难免,本人也很想知道这些错误,恳望读者批评指正!
本篇完。
最后
以上就是神勇面包为你收集整理的【维生素C语言】数组笔试题(附答案+详解)数组笔试题(答案+详解)的全部内容,希望文章能够帮你解决【维生素C语言】数组笔试题(附答案+详解)数组笔试题(答案+详解)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复