C及C++每日练习(3)

news2024/11/18 14:23:19

选择题:

1.以下程序的输出结果是()

#include <stdio.h> 
main() { 
    char a[10] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', 0}, *p; 
    int i; 
    i = 8; 
    p = a + i; 
    printf("%s\n", p - 3); 
}

A.6  B. 6789   C. '6'   D.789

       对于本题,首先创建了一个大小为10的字符数组,数组名为a,接着创建了char*类型的指针p,随后,让p赋值为a+i,即a+8,此处的加法是针对于指针的加法,在对指针做加法时,表示的是跳过sizeof(type)*n个字节,即跳过指针指向数组类型*n个字节。在本题中,进行加法后,指针指向元素'9'

      在进行打印是,打印的初始位置为p-3,即从元素'6'开始对数组进行打印,此时的打印类型为%s对于这种类型的打印,当遇到结束标志'\0'时停止打印,需要注意的是,此处数组中的0并不是待打印的元素0,而是表示打印结束的标志,因此答案选择B

2.以下程序的输出结果是()

#include <iostream.h> 
int main() 
{ 
    int x=3,y=3; 
    switch(x%2) 
    { 
    case 1: 
        switch (y) 
        { 
        case 0: 
            cout<<"first"; 
        case 1: 
            cout<<"second"; 
            break; 
        default: 
            cout<<"hello"; 
        } 
    case 2: 
        cout<<"third"; 
    } 
    return 0; 
}

A.second third    B.hello    C. first second   D.hellothird

      对于本题,主要考察对于switch选择语句的语法规则。在上述给出的代码中,由于x%2==1,因此在进入switch选择语句时,执行case\, \, 1的情况,在case\, \, 1中,由于y==3,因此执行default情况下的语句,即打印字符串hello,在此处需要注意,由于在case\, \, 1中,并不存在break,因此,在执行完 case\, \, 1后,代码会继续执行case \, \, 2中所对应的代码,即打印字符串third。因此,答案选择D

3.以下能对二维数组a进行正确初始化的语句是()

A. int ta[2][]={{0,1,2},{3,4,5}};
 B. int ta[][3]={{0,1,2},{3,4,5}}; 
C. int ta[2][4]={{0,1,2},{3,4},{5}}; 
D. int ta[][3]={{0,,2},{},{3,4,5}};

       在初始化二维数组时,需要注意以下的点:表示二维数组行数的参数可以省略,但是表示二维数组列数的参数不能省略。并且,在初始化其中一行时,必须连续初始化,不能出现中断。

     在给出上面的两点后,对比各个选项,其中选项A省略了列参数,因此错误,对于选项C,由于数组的参数表示数组是一个两行四列的数组,但是在初始化时,确实三行,因此错误。对于选项D由于出现了不连续初始化,因此错误。答案选择B

4.能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是()

A. return这二个数

B.形参用数组

C.形参用二个指针

D.用二个全局变量

对于本题,BC两个选项的返回方式大致相同,都是采用指针,正确。对于D,由于全局变量的作用范围是整个程序,因此正确。对于选项A,由于一个函数只能返回一个值,所以错误。

5.int *p[4] 与选择项中的() 等价

A. int p[4]

B. int *p

C. int *(p[4])

D. int (*p)[4]

      对于题目中题目中给定的int*p[4],由于[]的结合优先级大于*,因此,p会先和[]结合,再和*结合,此时的p为指针数数组,即数组中存放了4个类型为int*的指针。

    对于A选项,此时的p只是一个数组的名称,所以不等价

   对于B选项,此时的p表示int类型的指针

    对于C选项,p先和[]结合,再和*结合,此时的p是指针数组,于A等价。

   对于选项Dp先和*结合,再与[]结合,此时的p是一个数组指针。

  综上,答案选择C

6.设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是

A.n=0;while(ch=getchar()!='\n')n++;
B.n=0;while(getchar()!='\n')n++; 
C. for(n=0;getchar()!='\n';n++); 
D.n=0;for(ch=getchar();ch!='\n';n++);

       对于选项A,其整体逻辑为:用变量ch接收getchar()读取的字符,如果不为'\n',则继续统计。因为'\n'为换行标志,因此可以正确的统计出字符个数。

       对于选项B,则是直接利用getchar()函数读取的字符进行判断,原理于选项A相同,正确。

      对于选项C,是将getchar()函数作为for循环中判断是否结束的标志,正确。

     对于选项D,这里需要注意,由于for循环中第一个;之前的内容是表示初始化变量,因此,再这种书写方法中,ch一直是getchar()第一次读取的字符,不会继续向后读取,因此错误,答案选择D

   

7.下面3段程序代码的效果一样吗()

int b; 
(1)const int *a = &b; 
(2)int const *a = &b; 
(3)int *const a = &b;

A. (2)=(3)

B. (1)=(3)

C. (1)=(2)

D.都不一样

       对于判断常量指针和指针常量的题目,在C及C++每日练习(2)-CSDN博客中给出了详细的解释,这里只进行大概的说明:对于常量指针,表示指针指向的内容为常量,不能通过解引用的方式来修改指向的内容,但是可以改变指针的指向,即可以指向另一个常量。其特点是const*之前。

     对于指针常量,表示指针本身就是一个常量,因此,不能改变指针的指向,但是可以通过解引用的方式来改变指针所指向的内容。

    因此,(1)是一个常量指针,(2)同样也是常量指针,(3)是指针常量,所以答案选择C

8.32位系统中,定义**a[3][4],则变量占用内存空间为()。

A.4      B. 48     C.192     D.12

由于是32位地址,因此,指针的大小为4字节,在上面提到了[]的结合优先级是大于*的,因此,题目中的代码表示,a是一个三行四列的二维数组,并且数组中存储的内容是二级指针。因此变量a占用内存空间的大小为12*4,即48字节。

9.假设在一个 32 位 little endian 的机器上运行下面的程序,结果是多少?

#include <stdio.h> 
int main(){ 
  long long a = 1, b = 2, c = 3;  
  printf("%d %d %d\n", a, b, c);   
 return 0; 
}

A.1,2,3 B. 1,0,2 C.1,3,2 D.3,2,1

      对于本题,首先需要看到,创建的三个变量的类型为long\, \, long,但是在打印时,却是采用打印int变量的格式。并且,在题干中给出的信息为:机器是一个32位的小端机。对于小端机,其定义为:低位存低地址。对于大端机,其特点为低位存高地址。例如存储一个1,如果采用16进制进行表示,并且左边为低地址,右边为高地址。则在小端机中存储为01\, 00\, 00\, 00。如果是一个大端机,则为00\, 00\, 00\, 01

      在了解了大端机,小端机的概念后,还需要直到,对于printf函数,其需要打印的变量的入栈参数是从右向左入栈的,并且从高地址进行入栈,因此,三个变量入栈的顺序为3,2,1具体效果可以由下面的图展示:
 

由于栈的性质是后进先出,并且,%d是将四个字节的内容以十进制的方式进行打印,因在打印时,首先打印后进入的内容的前四个字节的内容,即01\, 00\, 00\, 00,随后继续打印,即打印00\, 00\, 00\, 00,最后再打印02\, 00\, 00\, 00.因此答案选择B

编程题:

       第一题较为简单,创建3string 类型的对象,第一个命名为str,用于接收题目的输入,剩下二个命名为com,max,当str[i]所对应的字符为数字时com+=str[i],如果str[i]不是数字,此时对应的情况时,连续的数字串已经被遍历完毕,此时让max,com进行比较,如果max<com,则令max = com。随后清楚com中的内容。

     需要注意的一个点是,如果最大的数字串恰好在给定字符串的末尾结束,例如abc123egf1234567,此时需要注意对于一个长度为n的字符串循环时,需要循环n+1次,即i<=str.size()。对于代码如下:
 

#include <iostream>
#include<string>
using namespace std;

int main() 
{
    string str,max,com;
    cin >> str;
    for(int i = 0; i <= str.size(); i++)
    {
        if(str[i] >= '0' && str[i] <= '9')
        {
            com += str[i];
        }
        else 
        {
            if(max.size() < com.size())
            {
                max = com;
            }
            
                com.clear();
            
        
        }

    }
    cout << max;
    return 0;
}
// 64

题目较为简单,由于需要找出现次数大于数组长度一半的数字,所以直接对数组进行排序,取中间数,随后再进行一次遍历,如果这个是数字在数组中的出现次数超过一半,则返回整个数,代码如下:
 

class Solution {
public:
 
    int MoreThanHalfNum_Solution(vector<int>& numbers) {
        sort(numbers.begin(),numbers.end());
        int mid = numbers[numbers.size()/2];
        int count = 0;
        for(int i = 0; i < numbers.size(); i++)
        {
            if(numbers[i] == mid)
            {
                count++;
            }
        }

        if(count > (numbers.size()/2))
        {
            return mid;
        }
        return 0;

    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1501115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亚信安慧AntDB:企业数据管理的明日之星

在信息科技飞速发展的时代&#xff0c;亚信科技AntDB团队提出了一项颠覆性的“超融合”理念&#xff0c;旨在满足企业日益增长的复杂混合负载和多样化数据类型的业务需求。这一创新性框架的核心思想在于融合多引擎和多能力&#xff0c;充分发挥分布式数据库引擎的架构优势&…

unicloud 集合 Collection 详解及其使用示例

Collection Collection是unicloud数据的指定表集合 获取集合Collection示例如下 const db uniCloud.database(); // 获取 user 集合的引用 const collection db.collection(user);集合 Collection 通过 db.collection(name) 可以获取指定集合的引用&#xff0c;在集合上可…

网络工程师笔记9

动态路由 RIP路由协议 配置简单 易于维护 适用于小型网络 周期性是30s发一次

HTML—常用标签

常用标签&#xff1a; 标题标签&#xff1a;<h1></h1>......<h6></h6>段落标签&#xff1a;<p></p>换行标签&#xff1a;<br/>列表&#xff1a;无序列表<ul><li></li></ul> 有序列表<ol>&…

《解密云计算:企业之选》

前言 在当今数字化时代&#xff0c;企业面临着巨大的数据处理压力和信息化需求&#xff0c;传统的IT架构已经无法满足日益增长的业务需求。在这样的背景下&#xff0c;越来越多的企业开始转向云计算&#xff0c;以实现灵活、高效和可扩展的IT资源管理和利用。 云计算 云计算是…

css使用

文章目录 一、什么是CSS二、CSS导入方式三、CSS选择器四、CSS属性 一、什么是CSS <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>div{color: red;}</style> &…

清华大学1748页CTF竞赛入门指南,完整版开放下载!

CTF是一种针对信息安全领域的经济性挑战&#xff0c;旨在通过解决一系列的难题来寻找隐藏的“flag”。CTF比赛战队一般是以高校、科研单位、企业、信息安全从业者或社会团体组成。对于网安爱好者及从业者来说&#xff0c;拥有“CTF参赛经验”也是求职中的加分项。 前几天分享的…

[递归、搜索、回溯]----递归

前言 作者&#xff1a;小蜗牛向前冲 专栏&#xff1a;小蜗牛算法之路 专栏介绍&#xff1a;"蜗牛之道&#xff0c;攀登大厂高峰&#xff0c;让我们携手学习算法。在这个专栏中&#xff0c;将涵盖动态规划、贪心算法、回溯等高阶技巧&#xff0c;不定期为你奉上基础数据结构…

设计模式——2_4 中介者(Mediator)

我寄愁心与明月&#xff0c;随风直到夜郎西 ——李白《闻王昌龄左迁龙标遥有此寄》 文章目录 定义图纸一个例子&#xff1a;怎么调度一组地铁站台和地铁开车指挥中心 碎碎念中介者和表单平台思想但是这种平台便利性是要付出代价的变化隔离原则 姑妄言之 定义 用一个中介者对象…

「解析文件流,Java之FileOutputStream助您轻松操作文件!」

&#x1f3c6;本文收录于「滚雪球学Java」专栏&#xff0c;专业攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎大家关注&&收藏&#xff01;持续更新中&#xff0c;up&#xff01;up&#xff01;up&#xff01;&#xf…

电力物联网系统设计

电力物联网系统设计 简介 在新能源行业从业多年&#xff0c;参与和负责过大大小小的的项目&#xff0c;发电侧、电网侧、用户侧系统都有过实际的项目经验&#xff0c;这些项目或多或少都有物联网采集方面的需求&#xff0c;本篇文章将会对电力行业物联网经验做一个总结分享。 …

Python 中常用的 GUI(图形用户界面)库介绍

本文将为您详细讲解 Python 中常用的 GUI&#xff08;图形用户界面&#xff09;库&#xff0c;以及它们的特点、区别和优势。Python 提供了多种 GUI 库&#xff0c;每种库都有其特定的用途和优势。这些库包括 Tkinter、PyQt、wxPython 和 Kivy。 1. Tkinter 特点 - 内…

内联函数|auto关键字|范围for的语法|指针空值

文章目录 一、内联函数1.1概念1.2特性 二、auto关键字2.2类型别名思考2.3auto简介2.4auto使用细则2.4 auto不能推导的场景 三、基于范围的for循环(C11)3.1 范围for的语法 四、指针空值nullptr(C11)4.1 C98中的指针空值 所属专栏:C初阶 一、内联函数 1.1概念 以inline修饰的函…

❤ Vue3项目使用yarn 搭建 Vue3+Pinia+Vant3/ElementPlus+typerscript 系统篇(一)

❤ Vue3 完整项目搭建 Vue3PiniaVant3/ElementPlustyperscript系统篇&#xff08;一&#xff09; 1、项目环境和简介 环境 使用nvm 版本 20.10.0 node 版本 20.10.0 npm版本 10.2.3 项目简介&#xff1a; Vue3全家桶viteTSPiniaVant3/ElementPlus-搭建Vue3.x项目 项目开源地…

【JAVA】优化if else的几种方式

在代码编写初期&#xff0c;我们写出来的代码&#xff0c;脉络清晰&#xff0c;结构简单。可随着bug或者新需求的出现&#xff0c;状态变得越来越多&#xff0c;只能不停地加else来区分&#xff0c;久而久之&#xff0c;判断的次数越来越多&#xff0c;嵌套的层数也越来越深&am…

Day 8.TCP包头和HTTP

TCP包头 1.序号&#xff1a;发送端发送数据包的编号 2.确认号&#xff1a;已经确认接收到的数据的编号&#xff08;只有当ACK为1时、确认号才有用&#xff09;&#xff1b; TCP为什么安全可靠 1.在通信前建立三次握手 SYP SYPACK ACK 2.在通信过程中通过序列号和确认号和…

python密码判断 2023年12月青少年编程电子学会python编程等级考试二级真题解析

目录 python密码判断 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python密码判断 2023年12月 python编程等级考试级编程题 一、题目要求 …

云函数-激活码列表-并发同时读取操作数据解决方案

业务场景 第三方平台创建并提供了激活码列表&#xff0c;每个激活码只能使用一次。并将数据导入数据库中&#xff0c;用户在某个业务场景下获取激活码&#xff0c;N个用户同时请求获取计划码时&#xff0c;会返回同一激活码。 //获取数据 await db_activeCode.where({isUse: t…

手写简易操作系统(一)--环境配置

本专栏是我新开设的一个学术专栏&#xff0c;旨在全面介绍手写操作系统的相关内容。其中包括实模式向保护模式的过渡、锁机制、信号量操作、内存分配、硬盘驱动、文件系统、简单shell和管道等操作系统核心知识。该专栏旨在为有意开发自己操作系统的研究人员提供指导与帮助。作为…

如何在Windows环境下编译OpenOCD

1. 安装Cygwin Windows环境下编译OpenOCD可以是在MinGW-w64/MSYS或Cygwin下&#xff0c;这里选择Cygwin&#xff0c;下载安装Cygwin。 2. 进入OpenOCD源代码目录 打开Cygwin&#xff0c;进入OpenOCD源代码目录&#xff0c;例如代码放在D:\Temp\OpenOCD\openocd-code下&#…