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

简介: C语言入门必做踩坑题《篇八》

第 1 题

🎗 -27 在内存中的存储形式是以下哪一种 ___

A. 0001 1011

B. 1110 0100

C. 1110 0101

D. 1010 0111

📝 分析:

数据在内存中是以二进制的形式进行存储的,二进制有 3 种表示形式:原码、反码、补码,且在内存中存储的是补码,且有正负数之分 —— 如果为正,高位为0;如果为负,高位为1

1️⃣ 正数的原码、反码、补码相同

2️⃣ 负数:

     原码 —— 根据数值直接写出它的二进制序列

     反码 —— 原码的符号位不变,其它位按位取反

     补码 —— 反码+1

所以选择 C 选项

第 2 题

🎗若有以下定义和语句,则选项中错误的语句是 ____

int a = 4,b = 3,*p,*q,*w;
p = &a;
q = &b;
w = q;
q = NULL;

A. *q = 0

B. w != p

C. *p = a

D. *w = b

📝 分析:

所以选择 A 选项

第 3 题

🎗执行以下程序,输出结果为 _____

#include<stdio.h>
#include<math.h>
#define POWER(x, y) pow(x, y)*y
#define ONE 1
#define SELEVE_ADD(x) ++x
main()
{
  int x = 2;
  printf("%f\n", POWER(SELEVE ADD(x), ONE + 1));
}

📝 分析:

此题考查的是宏替换,一定记住宏替换是在预处理阶段完成的,而预处理阶段不会计算,如果计算了那么你和编译器计算的结果可能不同

还要注意的是这里以 %f 输出是匹配的,因为 pow 函数的返回值是浮点型的。之前豌豆在这就被误导了,还扯到链式访问去了

所以输出结果是 10.000000

第 4 题

🎗执行以下程序,输出结果为 _____

int fun(int x)
{
  int count = 0;
  while(x){
    count++;
    x = x & (x-1);
  }
  return count;
}
int main()
{
  printf("fun(2017)=%d\n",fun(2019));
}

📝 分析:

所以 count = 8

第 5 题

🎗执行以下程序,输出结果为 _____

#define CIR(r) r*r
void main()
{
  int a = 1;
  int b = 2;
  int t;
  t = CIR(a + b);
  printf("%d\n", t);
  return;
}

📝 分析:

根据宏替换原则可得出以下执行过程

所以输出结果为 5

第 6 题

🎗下面的代码中,函数 Test 执行完毕后,打印的结果是 _____

unsigned long g_ulGlobal = 0;
void GlobalInit(unsigned long ulArg)
{
  ulArg = 0x01;
  return;
}
void Test()
{
  GlobalInit(g_ulGlobal);
  printf("%lu", g_ulGlobal);
  return;
}

📝 分析:

这里考查的就是值传递和址传递,所以 g_ulGlobal 还是 0

第 7 题

🎗以下程序的运行结果是 _____

int fun(int a,int b)
{
  if(a>b)
    return(a+b);
  else
    return(a-b);
}
int main()
{
  int x = 3, y = 8, z = 6, r;
  r = fun (fun(x,y), 2 * z);
  printf("%d\n",r);
  return 0;
}

A. -48

B. 58

C. -58

D. -17

📝 分析:

先执行内层 fun(x, y) -> fun(3, 8) 得到 -5

再执行外层 fun(x, y) -> fun(-5, 12) 得到 -17

所以选择 D 选项

第 8 题

🎗 一个 8 位的二进制整数,采用补码表示,且由 3 个 “1” 和 5 个 “0” 组成,则最小值为 ____

A. -127

B. -32

C. -125

D. -3

📝 分析:

根据题意我们可以得出二进制

100000111

求原码得

-125

所以最小值是 C 选项

第 9 题

🎗 int a = 4 , 则对于表达式 ++(a++) 的结果说法正确的是 ____

A. 5

B. 6

C. 7

D. 以上不都是

📝 分析:

++ 或 - - 是单目运算符,只能作用于一个变量,而 (a++) 是一个表达式,类似于 ++(2 + 3),编译器都会报错

所以选择 D 选项

第 10 题

🎗 以下程序的运行结果是 _____

int main()
{
  char ch = 0xff;
  int i = 0xff;
  if(ch == i)
  {
    printf("相同\n");
  }
  else
  {
    printf("不相同\n");
  }
  return 0;
}

A. 相同

B. 不相同

📝 分析:

这里主要考查隐式类型转换

当比较的两个数类型不相同时,会有整型提升

所以 ch 应该提升为整型 11111111 11111111 11111111 11111111

     i 不用整形提升 00000000 00000000 1111111 11111111

所以选择 B 选项

❓ 这里 ch 的提升是把 ch 变成 int 吗 ❔

 并不是,而是生成一个临时变量 int


相关文章
|
安全 编译器 C语言
C++入门1——从C语言到C++的过渡
C++入门1——从C语言到C++的过渡
220 2
|
11月前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
350 7
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
10月前
|
存储 编译器 C语言
【C语言程序设计——入门】C语言入门与基础语法(头歌实践教学平台习题)【合集】
本文档介绍了C语言环境配置和编程任务,主要内容包括: - **C语言环境配置**:详细讲解了在Windows系统上配置C语言开发环境的步骤。 - **第1关:程序改错**:包含任务描述、相关知识(如头文件引用、基本语法规则)、编程要求、测试说明及通关代码。 - **第2关:scanf函数**:涉及`scanf`和`printf`函数的格式与使用方法,提供编程要求、测试说明及通关代码。 文档结构清晰,涵盖从环境搭建到具体编程任务的完整流程,适合初学者学习和实践。
261 4
|
10月前
|
C语言
【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
这份文档详细介绍了编程任务的多个关卡,涵盖C语言的基础知识和应用。主要内容包括: 1. **目录**:列出所有关卡,如`print函数操作`、`转义字符使用`、`数的向上取整`等。 2. **各关卡的任务描述**:明确每关的具体编程任务,例如使用`printf`函数输出特定字符串、实现向上取整功能等。 3. **相关知识**:提供完成任务所需的背景知识,如格式化输出、算术运算符、关系运算符等。 4. **编程要求**:给出具体的代码编写提示。 5. **测试说明**:包含预期输入输出,帮助验证程序正确性。 6. 文档通过逐步引导学习者掌握C语言的基本语法和常用函数,适合初学者练习编程技能。
264 1
|
存储 Java 编译器
初识C语言1——C语言入门介绍
初识C语言1——C语言入门介绍
182 1
C语言------程设设计入门
这篇文章是C语言程序设计的入门教程,涵盖了C程序的实现过程、VC集成开发环境的使用、基本数据类型的使用、格式控制字符的作用,以及通过示例代码演示了如何使用printf()函数输出不同类型的数据。
C语言------程设设计入门
|
存储 Java C语言
【C语言入门】初识C语言:掌握编程的基石
【C语言入门】初识C语言:掌握编程的基石
169 4
【C语言入门】初识C语言:掌握编程的基石
|
C语言
回溯入门题,数据所有排列方式(c语言)
回溯入门题,数据所有排列方式(c语言)
125 0
|
NoSQL Java 编译器
C语言从入门到精通该怎样学?
持续学习与实践:编程是一门需要不断学习和实践的技能,要保持对新技术和新知识的敏感性,并持续进行编程实践。
220 1
|
编译器 C语言 C++
C++从遗忘到入门问题之C++持从C语言的过渡问题如何解决
C++从遗忘到入门问题之C++持从C语言的过渡问题如何解决
122 0