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;}
};

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

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

相关文章

吴恩达机器学习-可选实验室:特征工程和多项式回归(Feature Engineering and Polynomial Regression)

文章目录 目标工具特征工程和多项式回归概述多项式特征选择功能备用视图扩展功能复杂的功能 恭喜! 目标 在本实验中&#xff0c;你将:探索特征工程和多项式回归&#xff0c;它们允许您使用线性回归的机制来拟合非常复杂&#xff0c;甚至非常非线性的函数。 工具 您将利用在以…

2023最新pytorch安装教程,简单易懂,面向初学者(Anaconda+GPU)

一、前言 目前是2023.1.27,鉴于本人安装过程中踩得坑&#xff0c;安装之前我先给即将安装pytorch的各位提个醒&#xff0c;有以下几点需要注意 1.判断自己电脑是否有GPU 注意这点很重要&#xff0c;本教程面向有NVIDA显卡的电脑&#xff0c;如果你的电脑没有GPU或者使用AMD显…

STM32day3

1.思维导图 1.总结任务的调度算法&#xff0c;把实现代码再写一下 /* Definitions for myTask02 */ osThreadId_t myTask02Handle; uint32_t myTask02Buffer[ 64 ]; osStaticThreadDef_t myTask02ControlBlock; const osThreadAttr_t myTask02_attributes {.name "myTa…

代码随想录算法训练营第三十九天|62.不同路径、63. 不同路径 II

62.不同路径 刷题https://leetcode.cn/problems/unique-paths/description/文章讲解https://programmercarl.com/0062.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84.html视频讲解https://www.bilibili.com/video/BV1ve4y1x7Eu/?vd_sourceaf4853e80f89e28094a5fe1e220d9062 题解&…

react的diff源码

react 的 render 阶段&#xff0c;其中 begin 时会调用 reconcileChildren 函数&#xff0c; reconcileChildren 中做的事情就是 react 知名的 diff 过程 diff 算法介绍 react 的每次更新&#xff0c;都会将新的 ReactElement 内容与旧的 fiber 树作对比&#xff0c;比较出它们…

md5绕过

文章目录 \\和\\\md5数组绕过科学计数法绕过双md加密md5碰撞Hash长度攻击 下面会以同一道题给大家演示&#xff1a; (题目来源与nssctf) 和 在php代码中我们会看到和&#xff0c;虽然两个都是表示相等&#xff0c;但是在细节上会有所部区别 &#xff1a;是弱比较&#xff0c;只…

0201安装报错-hbase-大数据学习

1 基础环境简介 linux系统&#xff1a;centos&#xff0c;前置安装&#xff1a;jdk、hadoop、zookeeper&#xff0c;版本如下 软件版本描述centos7linux系统发行版jdk1.8java开发工具集hadoop2.10.0大数据生态基础组件zookeeper3.5.7分布式应用程序协调服务hbase2.4.11分布式…

Sora 作者被曝读博期间仅发表两篇论文,我们是否需要重塑科研价值观?

众所周知&#xff0c;在当今学术界&#xff0c;论文数量和产出速度常常被视为研究者生产力和学术成就的重要标尺。笔者也面试过很多博士生候选人&#xff0c;大家普遍会以自己读博期间发表过10几篇甚至几十篇论文而骄傲&#xff0c;很少有候选人会强调自己读博期间虽然发表论文…

Matlab|基于目标级联法的微网群多主体分布式优化调度

目录 主要内容 1.1 上层微网群模型 1.2 下层微网模型 部分程序 实现效果 下载链接 主要内容 本文复现《基于目标级联法的微网群多主体分布式优化调度》文献的目标级联部分&#xff0c; 建立微网群系统的两级递阶优化调度模型: 上层是微网群能量调度中心优化调度…

java中的字符串比较(题目作示例)

错误的代码 import java.util.Scanner; public class one {public static void main(String[] args) {Scanner scnew Scanner(System.in);String b"47568";int i0;for ( i 0; i <3; i){String asc.next();if(ab){System.out.println("密码正确&#xff0c;登…

在外包公司干了4年,技术退步2年...

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

白话模电:1.绪论与半导体(考研面试常问问题)

一、什么是信号&#xff1f;什么是电信号&#xff1f; 信号反映消息的物理量&#xff0c;电信号是反应电压或电流变化的物理量。 二、什么是模拟信号&#xff1f;什么是数字信号&#xff1f; 模拟信号是时间和数值上均连续的信号&#xff0c;数字信号是时间和数值上均离散的信号…

[HackMyVM]靶场 Zeug

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Un…

Seata 2.x 系列【5】直接部署

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Seata 版本 2.0.0 本系列Spring Boot 版本 3.2.0 本系列Spring Cloud 版本 2023.0.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 概述2. 环境要…

学习嵌入式C语言要掌握到什么程度?

学习嵌入式C语言要掌握到什么程度&#xff1f; 在开始前我分享下我的经历&#xff0c;我刚入行时遇到一个好公司和师父&#xff0c;给了我机会&#xff0c;一年时间从3k薪资涨到18k的&#xff0c; 我师父给了一些 电气工程师学习方法和资料&#xff0c;让我不断提升自己&#…

Java注解介绍

Java注解 注解介绍元注解RetentionTargetDocumentedInherited接口类测试结果 注解介绍 Java注解&#xff08;Annotation&#xff09;是一种元数据&#xff08;Metadata&#xff09;的形式&#xff0c;它可以被添加到Java代码中的类、方法、变量、参数等元素上&#xff0c;以提…

一分钟带你入门Selenium入门!【建议收藏】

Selenium入门 欢迎阅读Selenium入门讲义&#xff0c;本讲义将会重点介绍Selenium的入门知识以及Selenium的前置知识。 自动化测试的基础 在Selenium的课程以前&#xff0c;我们先回顾一下软件测试的基本原理&#xff0c;为我们进一步完成Selenium自动化测试做好准备。 软件…

考研数学|张宇30讲,搭配什么基础题?

如果基础跟的是张宇&#xff0c;那么基础做的题目要根据自己的题目来决定 题集的选择最好不要太难&#xff0c;而且基础也不用做太多题目&#xff0c;以数学知识点的运用&#xff0c;培养做题感觉为主。 张宇老师的课程在基础阶段也有配套的课程&#xff0c;就是《张宇基础30…

关于进程和线程

目录 前言: 1进程: 1.1定义&#xff1a; 1.1.1进程是操作系统分配资源的基本单元&#xff0c;拥有自己的独立空间和资源。 1.1.2每个进程都有一个唯一的PID&#xff08;进程标识符&#xff09;来标识。 1.2进程间通信&#xff1a; 1.2.1进程不是孤立的&#xff0c;它们之…

搜索引擎都没流量啦,官网建设还有啥意义?

百度等搜索引擎都没啥流量了&#xff0c;再建设官网还有啥用&#xff1f;如果你把官网定位于获客&#xff0c;那真的没啥太大用处&#xff0c;但是官网不仅仅是用来获客的。 一、搜索引擎的流量被稀释了 搜索引擎流量减少的原因有多个&#xff0c; 1. 社交媒体的崛起&#xf…