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

选择题:

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;

    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【视频图像取证篇】模糊图片复原车牌号技术原理和实战应用小结

【视频图像取证篇】模糊图片复原车牌号技术原理和实战应用小结 模糊图片复原车牌号常用的技术原理和实战应用—【蘇小沐】 &#xff08;一&#xff09;运动模糊视频图像 由于各种各样的原因&#xff0c;主体或者拍摄设备运动共同造成的视频图像模糊等。 1、快门速度 快门速…

【虚拟换衣+论文+代码】2403.OOTDiffusion:高分辨率(1024x768)可控的虚拟试穿(已开源,暂不能训练)

项目地址&#xff1a;https://github.com/levihsu/OOTDiffusion 试用地址&#xff1a;https://ootd.ibot.cn/ 论文地址&#xff1a;2403.OOTDiffusion: 基于衣服融合的可控虚拟试穿潜在扩散 | readpaper arxiv: Outfitting Fusion based Latent Diffusion for Controllable Vir…

第三节:在Sashulin中自定义组件

上一节讲解了如何建立一个业务消息流&#xff0c;流程是由组件构成的。目前SMS提供了General、Database、MessageQueue、Socket、WebService、Http、Internet等系列常用组件&#xff0c;如果不满足业务需求&#xff0c;可以进行自定义组件开发。 一、组件开发 1、建立一个Jar…

二维码门楼牌管理系统应用场景:推动旅游与文化产业的智慧化升级

文章目录 前言一、二维码门楼牌管理系统在旅游领域的应用二、二维码门楼牌管理系统在文化产业的应用三、结语 前言 随着信息技术的不断发展&#xff0c;二维码门楼牌管理系统作为一种创新的信息化手段&#xff0c;正在逐渐渗透到旅游和文化领域。它通过为文化景点、旅游景点和…

面试经典150题——两数相加

​Anything is worth "fighting for," and when you get it, dont doubt it, you deserve it, you deserve it. 1. 题目描述 2. 题目分析与解析 2.1 思路一 这个题目虽然标的是中等&#xff0c;但是大家看一下应该还是比较容易想到思路的&#xff0c;这不就相当于…

华为通过FTP 进行文件操作示例

通过FTP进行文件操作示例 组网图形 图1 通过FTP进行文件操作组网图 通过FTP进行文件操作简介配置注意事项组网需求配置思路操作步骤配置文件相关信息 通过FTP进行文件操作简介 配置设备作为FTP服务器&#xff0c;用户可以在终端通过FTP客户端软件访问设备&#xff0c;在本…

深入理解 HTTP Authorization 头:基础知识

在当今的互联网世界中&#xff0c;安全性贯穿于 web 应用的每个方面&#xff0c;HTTP Authorization 头的使用在这个过程中扮演着不可或缺的角色。它是 HTTP 请求中的一个重要部分&#xff0c;用来在客户端和服务器之间安全地传输认证信息。用途广泛&#xff0c;无论是浏览器还…

外包干了1个多月,技术退步明显...

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 这次来聊一个大家可能也比较关心的问题&#xff0c;那就是就业城…

JS-04-javaScript数据类型和变量

一、数据类型 计算机能处理的远不止数值&#xff0c;还可以处理文本、图形、音频、视频、网页等各种各样的数据&#xff0c;不同的数据&#xff0c;需要定义不同的数据类型。在JavaScript中定义了以下几种数据类型&#xff1a; 1-1、Number JavaScript不区分整数和浮点数&…

听 GPT 讲 client-go 源代码 (23)

分享更多精彩内容&#xff0c;欢迎关注&#xff01; File: client-go/kubernetes/scheme/register.go 在client-go项目中&#xff0c;client-go/kubernetes/scheme/register.go文件的作用是进行Kubernetes API对象的Scheme注册。 Scheme是一个用于序列化和反序列化Kubernetes A…

Redis核心数据结构之字典(二)

字典 解决键冲突 当有两个或以上数量的键被分配到了一个哈希表数组的同一个索引上面&#xff0c;我们称这些键发生了冲突(collision)。 Redis的哈希表使用链地址法(separate chaining)来解决键冲突&#xff0c;每个哈希表节点都有一个next指针&#xff0c;多个哈希表节点可以…

官网正在被哪些产品蚕食,定制网站又被哪些建站产品挤占。

2023-12-09 16:22贝格前端工场 官网建设是一个被大多数人看衰的市场&#xff0c;本文来理性分析下&#xff0c;谁在蚕食这个市场&#xff0c;谁又在挤占这个产品生存空间&#xff0c;欢迎大家评论&#xff0c;探讨。 网站正在被以下产品形式取代&#xff1a; 1. 移动应用&…

探索数据结构:单链表的实战指南

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty‘s blog 前言 在上一章节中我们讲解了数据结构中的顺序表&#xff0c;知道了顺序…

【Spring知识体系】1.1 Java 注解(Annotation)

文章目录 1.1 注解&#xff08;Annotation&#xff09;1.1.1 什么是注解1.1.2 内置注解1.1.3 元注解&#xff08;5种&#xff09;1.14 自定义注解1.15 注解使用场景介绍※ 本文小结 1.1 注解&#xff08;Annotation&#xff09; 1.1.1 什么是注解 注解的定义&#xff1a;它提…

Java中接口新增的方法(默认方法,静态方法,私有方法)

Java中接口新增的方法&#xff08;默认方法&#xff0c;静态方法&#xff0c;私有方法&#xff09;

遗传算法理解与代码实战(二)- demo(python+deap)

前文介绍了遗传算法&#xff0c;并且手动python代码进行了实践&#xff0c;但是在遇到复杂的问题时&#xff08;遗传算法理解与代码实战&#xff08;三&#xff09;会介绍&#xff09;&#xff0c;手写代码很麻烦&#xff0c;所以需要借助专门的遗传算法库来实现&#xff0c;这…

使用Python快速提取PPT中的文本内容

直接提取PPT中的文本内容可以方便我们进行进一步处理或分析&#xff0c;也可以直接用于其他文档的编撰。通过使用Python程序&#xff0c;我们可以快速批量提取PPT中的文本内容&#xff0c;从而实现高效的信息收集或对其中的数据进行分析。本文将介绍如何使用Python程序提取Powe…

Vue | 基于 vue-admin-template 项目的跨域问题解决方法

目录 一、现存问题 二、解决方法 2.1 修改的第一个地方 2.2 修改的第二个地方 2.3 修改的第三个地方 自存 一、现存问题 报错截图如下&#xff1a; 二、解决方法 2.1 修改的第一个地方 在 .env.development 文件中&#xff1a; # base api # VUE_APP_BASE_API /d…

阿里云服务器地域和可用区选择及关系说明

阿里云服务器地域和可用区怎么选择&#xff1f;地域是指云服务器所在物理数据中心的位置&#xff0c;地域选择就近选择&#xff0c;访客距离地域所在城市越近网络延迟越低&#xff0c;速度就越快&#xff1b;可用区是指同一个地域下&#xff0c;网络和电力相互独立的区域&#…

如何使用Python的Open3D 库LAS对点云进行重建

在 Python 中对点云进行重建也可以使用 PCL 库&#xff0c;不过更为常见的是使用 Open3D 库。Open3D 是一个开源的现代化 3D 数据处理库&#xff0c;提供了许多用于点云和三维几何数据处理的功能&#xff0c;包括点云重建。 下面是一个简单的示例代码&#xff0c;演示了如何使…