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语言入门必做踩坑题《篇六》的主要内容,如果未能解决你的问题,请参考以下文章

C语言入门必做踩坑题《篇七》

C语言入门必做踩坑题《篇七》

C语言入门必做踩坑题《篇一》

C语言入门必做踩坑题《篇一》

C语言入门必做踩坑题《篇二》

C语言入门必做踩坑题《篇二》