C语言入门必做踩坑题《篇六》
Posted 跳动的bit
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言入门必做踩坑题《篇六》相关的知识,希望对你有一定的参考价值。
第1题
🎗有如下代码
char acHello[] = "hello\\0world";
char acNew[15] = 0;
strcpy(acNew,acHello);
则 strlen(acNew) =_____________, sizeof(acHello) = ______________
📝 分析:
1️⃣ strlen:计算字符串的长度,遇 \\0 停止,且不包括 \\0
2️⃣ sizeof:计算变量所占的内存大小,单位 (字节),包括 \\0
3️⃣ strcpy:拷贝字符串,遇到 \\0 就停止拷贝
所以 strlen(acNew) = 5;sizeof(acHello) = 12
第2题
🎗下列程序执行后, n 的值等于____
char a[20];
char *p1 = (char *)a;
char *p2 = (char*)(a+5);
int n = p2-p1;
A. 4
B. 5
C. 10
D. 20
📝 分析:
此题考查指针的运算
在同一块空间内一个指针 - 另一个指针得到的是两个指针之间的元素个数
⚠ 注意
1️⃣ 指针的相减运算只能在同一块空间
2️⃣ 两指针不能相加、乘、除,这是标准未定义的
所以选择 B
第3题
🎗下列程序运行后的输出结果是____
#define F(X,Y) ((X)+(Y))
int main()
int a = 3,b = 4;
printf("%d\\n",F(a++, b++));
A. 7
B. 8
C. 9
D. 10
📝 分析:
因为 a 和 b 都是后置++,所以 x = 3, y = 4
所以选择 A
第4题
🎗执行 x = 5 > 1 + 2 && 2 || 2 * 4 < 4 - !0 后, x 的值为____
A. -1
B. 0
C. 1
D. 5
📝 分析:
所以选择 C
第5题
🎗执行以下代码后,a = __ ;b = __ ;c = __ ;d = __ ;
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++ && ++b && d++;
printf("a = %d\\nb = %d\\nc = %d\\nd = %d\\n", a, b, c, d);
📝 分析:
⚠ 注意
1️⃣ &&,同真为真,其余为假
2️⃣ ||,同假为假,其余为真
3️⃣ 表达式中:对于 && , 只要有一个为假,其余都为假,且后面部分表达式不参与计算;对于 ||,只要有一个为真,其余都为真,且后面部分表达式不参与计算
所以 a = 1 ;b = 2 ;c = 3 ;d = 4 ;
以上是关于C语言入门必做踩坑题《篇六》的主要内容,如果未能解决你的问题,请参考以下文章