c语言每日一练(12)

前言:
每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情况更新。

五道选择题:

1、程序运行的结果是() 

#define ADD(x) x+x
#include<stdio.h>
int main()
{
	int m = 1, n = 2, k = 3;
	int sum = ADD(m + n) * k;
	printf("sum = %d", sum);
}

A、 sum=9 B、 sum=10 C、 sum=12 D、 sum=18

解析:考察你对宏定义的理解。宏定义在预处理阶段就会被处理,也就是它走不到编译的阶段它就会被执行,因此我们可以粗略地把宏定义当作是一种替换。

比方说#define abc 5,那么abc*6,就可以直接看作5*6,不需要管其他运算符,你先替换完再说。这道题将ADD(x)宏定义为x+x,因此sum=1+2+1+2*3,不用管别的,你就先替换,所以sum=10,答案选B

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

#include<stdio.h>
void incre()
{
	static int x = 1;
	x *= x + 1;
	printf("%d ", x);
}
int main()
{
	int i;
	for (i = 1; i <= 2; i++) incre();
}

A、 3 3 B、 2 2 C、 2 6 D、 2 5

解析:观察代码构成发现,代码由一个main函数和一个incre函数构成,而main函数的主要作用就是调用了两次incre函数进行对应地操作。所以关键在incre,incre函数首先定义了一个x并将它初始化为1,但特别地是,这个x被static所修饰,因此,这个x的储存是放在静态区中的,故x是不会再被重定义,它在程序运行的一开始就会被定义且生命周期一直到程序结束。

由于次数少,所以直接进行代入,第一次进入incre(),x*=x+1,令x=2,故打印2,第二次进入,此时x=2,x*=x+1,令x=6,故打印6,因此答案为C

 3、以下程序的输出结果是哪一项()

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

A、 输出项不合法 B、6   C、8 D、12

解析:观察代码可以发现,代码首先定义了一个没有行数只有列数的数组a,接着又定义了一个整型指针数组p和一个控制循环次数的变量i。然后使用循环的方式将一些地址存放到整型指针数组p中,循环次数只有4次,可以直接代入。

当i=0时,将a[0][3]的地址存放到p[0],也就是1行4列的地址,但没有4列,走到2行,所以把2行1列的地址即4的地址存放到p[0]中。

当i=1时,将a[1][3]的地址存放到p[1]中,也就是2行4列的地址,但没有4列,走到3行,将3行1列即7的地址存放到p[1],

当i=2时,将4行1列即10存放到p[2]中,当i=3时,将5行1列存放到p[3]中,也就是将12后面的地址存放到p[3]中,但没有,所以p[3]越界了,因此一旦使用p[3]是有问题的。

最后打印p[2][2],p[2]为10的地址,因此p[2][2]为12,所以打印12,选D

 4、以下关于结构体与共用体的说法,其中正确的是()
A、共用体同一个内存段可以来存放几种不同类型的成员,但在某一时刻只能存放一个成员。
B、结构体变量所占的内存长度等于最长的成员的长度,共用体变量所占内存长度是各成员占的内存长度之和。
C、共用体每个成员分别占有自己的内存单元。
D、结构体类型可以出现在共用体类型的定义中,但共用体类型不能出现在结构体类型定义之中。

解析:共用体指的是由一系列具有相同数据类型或者不同数据类型的数据组成的集合,但它们的数据为互斥关系,因为共用体所有的成员共同使用一份内存空间,当使用成员A的时候,不同于成员A类型的成员B注定不是原来的它。因此A正确。B选项刚好相反,B错误。C选项与概念相悖,大错特错。D选项错误,结构体类型和共用体类型没什么特殊的,本质上都是类型,可以用。综上所述,选A

5、下列程序段的输出结果为()

#include<stdio.h>
int main()
{
	int arr[] = { 6,7,8,9,10 };
	int* ptr;
	ptr = arr;
	*(ptr + 2) += 2;
	printf("%d,%d\n", *ptr, *(ptr + 2));
}

 A、8,10   B、6,8    C、7,9    D、6,10

解析:先定义了一个数组arr,并在里面存放了6,7,8,9,10。接着定义了一个指针ptr,并将数组arr的首地址赋值给了ptr,然后*(ptr+2)+=2,令ptr这个地址往后移两个单位,来到8上,令8+=2,使数组arr中存放的6,7,8,9,10变为6,7,10,9,10,所以最后打印ptr时打印出6,打印(ptr+2)打印出10,选D

 编程题1:

 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

 

提示:由于只需要最后一个单词的长度,所以我们可以根据单词之间有空格的特性来进行遍历,你也可以尝试以下反着计算,也就是先用strlen计算出字符串的长度然后用反着的方式来计算最后一个单词的长度,都是可以的。 

int lengthOfLastWord(char* s) {
	int i = 0;
	int count = 0;
	//计数器,计算最后一个单词的长度
	int min = 0;
	//存储器,避免最后一个单词后面有空格,将计数器清零
	for (i = 0; s[i] != '\0'; i++)
	{
		if (s[i] == ' ')
		{
			count = 0;
			//一旦遇到空格清空计数器
		}
		else
		{
			count++;
			min = count;
		}
	}
	if (count == 0)
		//当计数器为0,不是最后一个单词后面有空格
		//就是本身就全为空格,本身就全为空格,count也为0,不影响
	{
		count = min;
	}
	return count;
}

编程题2:

 136. 只出现一次的数字 - 力扣(LeetCode)

快乐的暑假马上就结束了,最后来道简单题,放松一下 

 

提示:两个相同的数^(异或)=0且^满足交换律 

int singleNumber(int* nums, int numsSize){
int i=0;
int a=0;
for(i=0;i<numsSize;i++)
{
  a^=nums[i];
}
return a;
}

好了,今天的练习到这里就结束了,感谢各位友友的来访,祝各位友友前程似锦O(∩_∩)O

 

 

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

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

相关文章

浅谈AI浪潮下的视频大数据发展趋势与应用

视频大数据的发展趋势是多样化和个性化的。随着科技的不断进步&#xff0c;人们对于视频内容的需求也在不断变化。从传统的电视节目到现在的短视频、直播、VR等多种形式&#xff0c;视频内容已经不再是单一的娱乐方式&#xff0c;更是涉及到教育、医疗、商业等各个领域。 为了…

day03_注释丶关键字丶标识符丶常量

​注释 注释就是使用人类的自然语言对代码的解释和说明。 代码本身和人类的自然语言相比&#xff0c;可读性肯定是要差一些&#xff0c;所以为了更快能够知道代码的含义、作用、需要注意地方&#xff0c;所有程序员都应该养成写注释的好习惯。 由于注释的内容是给程序员看的&…

网络编程

1. 网络编程入门 1.1 网络编程概述 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统…

C# 使用NPOI操作EXCEL

1.添加NOPI 引用->管理NuGet程序包->添加NOPI 2.相关程序集 3.添加命名空间 using NPOI.HSSF; using NPOI.XSSF; using System.IO; using NPOI.XSSF.UserModel; using NPOI.HSSF.UserModel; 4.从Excel导入的dgv样例 //NPOI读入dgv private void button1_Click(object s…

【C++练习】C++中读取.txt文件中的数据(由简到难)

1 将数据写入.txt文本中&#xff0c;再从.txt中读取到string字符串里&#xff0c;输出到终端 #include <iostream> #include <fstream>//包头文件 using namespace std;int main() {//1. 创建流对象ofstream ofs;//2. 以写的方式打开文件&#xff08;若文件不存在…

视频汇聚/视频监控管理平台EasyCVR接入海康SDK协议后无法播放该如何解决?

开源EasyDarwin视频监控/安防监控/视频汇聚EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多路视频流&#…

即时通讯开发中的性能优化技巧

即时通讯开发在如今的数字化社会中扮演着重要角色&#xff0c;然而&#xff0c;随着用户对即时通讯应用的需求不断增长&#xff0c;开发者们面临着使其应用保持高性能和可靠性的挑战。本文将探讨即时通讯开发中关键的性能优化技巧&#xff0c;帮助开发者们提升应用的用户体验和…

基于java Swing 和 mysql实现的飞机订票系统(源码+数据库+ppt+ER图+流程图+架构说明+论文+运行视频指导)

一、项目简介 本项目是一套基于java Swing 和 mysql实现的飞机订票系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过…

使用GoLand进行远程调试

对部署进行配置 在此配置远程服务器地址&#xff0c;映射&#xff0c;是否自动上传(更新)等 选择SFTP类型 选择上传 另外给自动上传选项打钩 此时在本地修改某个文件&#xff0c;远程机器相应目录的文件&#xff0c;也会被同步修改 对远程调试进行配置 远程机器需要安装delve 而…

JavaSE(四)

详细知识点可以点击标题超链接 一、多线程&JUC 并发与并行 多线程的三种实现方式 第一种继承Thread类 第二种实现Runnable接口 第三种实现Callable接口 对比 常用方法 基础 优先级 守护线程 礼让线程 &#xff08;了解&#xff09; 结果尽量均匀 插入线程&#xff08…

智慧水产养殖方案,守护养殖水产品安全!

水产品在人们的饮食文化中占据着举足轻重的地位&#xff0c;更是人们摄入蛋白质的重要来源。因此&#xff0c;保障食品安全&#xff0c;提升养殖水产品的品质至关重要然。而传统的人工观察水产养殖方式较为单一&#xff0c;难以及时发现水质问题和投喂情况&#xff0c;容易导致…

Linux 多线程同步机制(上)

文章目录 前言一、线程同步二、互斥量 mutex三、死锁总结 前言 一、线程同步 在多线程环境下&#xff0c;多个线程可以并发地执行&#xff0c;访问共享资源&#xff08;如内存变量、文件、网络连接 等&#xff09;。 这可能导致 数据不一致性, 死锁, 竞争条件等 问题。 为了解…

RedisDesktopManager(redis客户端,可输入用户名密码)

RedisDesktopManager&#xff08;redis客户端&#xff0c;可输入用户名密码&#xff09; Redis桌面管理器&#xff08;又名RDM&#xff09; - 是一个用于Windows&#xff0c;Linux和MacOS的快速开源Redis数据库管理应用程序。可以使用url连接或账号密码。 redis设置账号密码后…

【Rust日报】2023-08-27 Collie:专为您打造的简约 RSS 阅读器

第一个 Rust 项目&#xff1a;模板引擎 大家好&#xff01; 我是 Rust 新手&#xff0c;决定为我的第一个 Rust 项目编写一个模板引擎。并不是出于需要&#xff0c;因为生态系统已经有一些不错的选择&#xff0c;而是为了乐趣和学习。 这是我第一次尝试这种类型的库&#xff0c…

Python框架【模板继承、继承模板实战、装饰器、蓝图(介绍、单文件、目录结构、模版文件、静态文件 url_for函数子域名实现)】(五)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小王&#xff0c;CSDN博客博主,Python小白 &#x1f4d5;系列专栏&#xff1a;python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 &#x1f4e7;如果文章知识点有错误…

C语言练习题解析:挑战与突破,开启编程新篇章!(1)

&#x1f493;博客主页&#xff1a;江池俊的博客⏩收录专栏&#xff1a;C语言刷题专栏&#x1f449;专栏推荐&#xff1a;✅C语言初阶之路 ✅C语言进阶之路&#x1f4bb;代码仓库&#xff1a;江池俊的代码仓库&#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐&a…

政府科技项目验收全流程分享

科技验收测试 &#xff08;验收申请→主管部门初审→科技厅审核→组织验收→归档备案→信用管理&#xff09;&#xff1a; &#xff08;一&#xff09;验收申请 项目承担单位通过省科技业务管理系统提交验收申请。 按期完成的项目&#xff0c;项目承担单位应当在项目合同书…

Kotlin的Lambda闭包语法

Lambda 表达式是一种在现代编程语言中常见的特性&#xff0c;它可以用来创建匿名函数或代码块&#xff0c;使得将函数作为参数传递、简化代码以及实现函数式编程范式变得更加便捷。Lambda 表达式在函数式编程语言中得到广泛应用&#xff0c;也在诸如 Java 8 和 Kotlin 等主流编…

设计模式之桥接模式

文章目录 一、介绍二、案例1. 组件抽象化2. 桥梁抽象化 一、介绍 桥接模式&#xff0c;属于结构型设计模式。通过提供抽象与实现之间的桥接结构&#xff0c;把抽象化与实现化解耦&#xff0c;使得二者可以独立变化。 《Head First 设计模式》&#xff1a; 将抽象和实现放在两…

TensorFlow-slim包进行图像数据集分类---具体流程

TensorFlow中slim包的具体用法 1、训练脚本文件&#xff08;该文件包含数据下载打包、模型训练&#xff0c;模型评估流程&#xff09;3、模型训练1、数据集相关模块&#xff1a;2、设置网络模型模块3、数据预处理模块4、定义损失loss5、定义优化器模块 本次使用的TensorFlow版本…