3月6日做题总结(C/C++真题)

2024-03-07 19:28
文章标签 c++ 总结 真题 做题

本文主要是介绍3月6日做题总结(C/C++真题),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        星光不负赶路人,时光不负追梦人!多一份努力,多一份成功的机会!

第一题

int a, b, x, i;
a = 3;
b = 4;
i = 3;
x = a > b ? i++ : i--;

x的值为()

A---2

B---3

C---4

D---5

正确答案:B

解析:这题并不难,要注意细节。a>b为假也就是x=i--。注意i--是先执行后减一,而--i是先减一后执行。

第二题

在说明语句int *f();中,标识符f代表的是()

A---一个用于指向整型数据的指针变量

B---一个用于指向一维数组的行指针

C---一个用于指向函数的指针变量

D---一个返回值为指针型的函数名

正确答案:D

解析:A选项中,指向整型数据的指针变量应说明为int *f。B选项中,指向一维数组的行指针应说明为int (*f)[]。C选项中,指向函数的指针变量应说明为int (*f)();所以答案是D。

第三题

运行以下C语言代码,输出的结果是()

#include <stdio.h>
int main()
{char *str[3] ={"stra", "strb", "strc"};char *p =str[0];int i = 0;while(i < 3){printf("%s ",p++);i++;}return 0;
}

A---stra strb strc

B---s t r

C---stra tra ra

D---s s s

正确答案:C

解析:char *p=str[0]相当于char *p="stra",p先指向s,p++后,指向t。printf输出遇到空字符停止。所以第一次打印stra,第二次打印tra,第三次打印ra。

第四题

下面的程序执行输出几个hello?

A---3

B---4

C---6

D---8

正确答案:D

解析:

                fork(); //2个进程

                fork(); //4个进程

                fork(); //8个进程

                printf(“hello\n”);

第五题

已知如下代码,并在两个线程中同时执行f1和f2,待两个函数都返回后,a的所有可能值是哪些?

int a = 2, b = 0, c = 0
void f1()                        
{                                 b = a * 2;                      a = b;                            
}
void f2()
{c = a + 11;a = c;
}

A---4

B---13

C---15

D---26

正确答案:ABCD

解析:考虑四行代码的执行顺序即可。

(1)b=a*2,c=a+11,a=c,a=b a=4
(2)b=a*2,c=a+11,a=b,a=c a=13
(3)b=a*2,a=b,c=a+11,a=c a=15
(4)c=a+11,a=c,b=a*2,a=b a=26

所以答案都选。

第六题

以下的变量定义语句中,合法的是()

A---byte a = 128;

B---boolean b = NULL;

C---long c = 123L;

D---float d = 0.9239;

正确答案:C

解析:A选项中,byte能表示的范围[-128,127]。B选项中,boolean的取值只能是true或false。D选项请注意:

                double a = 0.9239(√)
                double a = 0.9239d(√)
                float a = 0.9239f(√)
                float a = 0.9239(×)

第七题

请问经过表达式a=5?0:1的运算,变量a的最终值是()

A---5

B---1

C---0

D---true

正确答案:C

解析:这题考察两个知识点,分别是三元运算、条件运算符的优先级高于赋值运算符的优先级。

三目运算符的格式:表达式1?表达式2:表达式3

执行流程:如果表达式1的值为真,则以表达式2的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。

由于5非0,所以结果为0 。a的值也为0 。

第八题

有以下函数定义:

void fun(int n, double x) {…}

 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是()

A---fun(int y,double m);

B---k = fun(10,12.5);

C---fun(x,n);

D---void fun(n,x);

正确答案:C

解析:A选项中,函数调用时不需要指明实参类型。B选项中,函数定义为void,没有返回值。D选项中,函数调用不需要指明函数类型。

第九题

class A 
{int a;short b;int c;char d;
};
class B{double a;short b;int c;char d;
};

在32位机器上用gcc编译以上代码,求sizeof(A),sizeof(B)分别是()

A---12        16

B---12        12

C---16        24

D---16        20

正确答案:C

解析:

class  A:  

int  a      (4个字节)                                                          4
short b     (2个字节,起始地址4是2的倍数,不补)             4+2
int  c        (4个字节,4+2不是4的倍数,被2个 )                 6+2(补)+4
char d      (1个字节,4+2+2+4是1的倍数,不补)              12+1
最后补3个字节,让整体大小为4的倍数                             13+3(补)= 16

class  B:

double a      (8个字节)                                                   8
short b     (2个字节,起始地址8是2的倍数,不补)            8+2
int  c         (4个字节,8+2不是4的倍数,被2个 )               10+2(补)+4
char d        (1个字节,8+2+2+4是1的倍数,不补)            16 +1
最后补7个字节,让整体大小为8的倍数                              17+7(补) =24

关于结构体对齐的题,讲两点原则:

(1)按顺序看,每一个变量的首地址必须是自己大小的倍数。

(2)整个结构体的大小必须是最宽数据类型的倍数。

        只要是在路上就没有到不了的地方,该奋斗的年龄不要选择安逸。不是每个人都能成为自己想要的样子,但每个人都可以努力成为自己想要的样子。

这篇关于3月6日做题总结(C/C++真题)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/784572

相关文章

C++右移运算符的一个小坑及解决

《C++右移运算符的一个小坑及解决》文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数... 目录我遇到了这么一个www.chinasem.cn函数由此可以看到也很好理解总结我遇到了这么一个函数template<typename T>unsigned

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

C++ vector越界问题的完整解决方案

《C++vector越界问题的完整解决方案》在C++开发中,std::vector作为最常用的动态数组容器,其便捷性与性能优势使其成为处理可变长度数据的首选,然而,数组越界访问始终是威胁程序稳定性的... 目录引言一、vector越界的底层原理与危害1.1 越界访问的本质原因1.2 越界访问的实际危害二、基

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

C++归并排序代码实现示例代码

《C++归并排序代码实现示例代码》归并排序将待排序数组分成两个子数组,分别对这两个子数组进行排序,然后将排序好的子数组合并,得到排序后的数组,:本文主要介绍C++归并排序代码实现的相关资料,需要的... 目录1 算法核心思想2 代码实现3 算法时间复杂度1 算法核心思想归并排序是一种高效的排序方式,需要用