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

 

 

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

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

相关文章

红黑树(AVL树的优化)下(代码实现)

我们先简单的将节点找到要插入的位置&#xff0c;进行前后链接&#xff08;先不进行调整&#xff09; 解决情况一的 &#xff1a; cur为红&#xff0c;parent是红 &#xff0c; grandfater是黑&#xff0c;uncle存在且为红的情况 情况二情况三&#xff1a;

指针的进阶一

目录 1.字符指针 2.数组指针 3.指针数组 4.数组传参 5.函数指针 1.字符指针 int main() { const char* pstr "hello world."; printf("%s\n", pstr); return 0; } pstr中存放的就是字符串的首元素地址&#xff0c;并不是把字符串hello world 放到字符…

Spring Boot 中是使用 JDK Proxy 动态代理还是 CGLib ?

1. Spring Boot 中是使用 JDK Proxy 动态代理还是 CGLib ? 首先我们知道在 Spring 里面&#xff0c;动态代理的底层&#xff0c;默认使用的是 JDK Proxy 代理&#xff0c;这一点在官方文档有具体的说明&#xff1a; 既然 Spring 中的动态代理默认使用 JDK Proxy&#xff0c;那…

C++调用Python Win10 Miniconda虚拟环境配置

目录 前言1. Win10 安装 Miniconda2. 创建虚拟环境3. 配置C调用python环境4. C调用Python带参函数5.遇到的问题6. 总结 前言 本文记录了Win10 系统下Qt 应用程序调用Python时配置Miniconda虚拟环境的过程及遇到的问题&#xff0c;通过配置Python虚拟环境&#xff0c;简化了Qt应…

探索OLED透明屏的优缺点:引领科技未来的革命性突破

OLED透明屏作为一项革命性的创新技术&#xff0c;其令人惊叹的透明度和柔性性能引起了全球范围内的关注。 然而&#xff0c;了解OLED透明屏的优缺点对于我们全面认识其在科技未来中的地位至关重要。 今天&#xff0c;尼伽将深入探讨OLED透明屏的优势和限制&#xff0c;并借助…

Java课题笔记~ 综合案例

3.综合案例 3.1 功能介绍 以上是我们在综合案例要实现的功能。除了对数据的增删改查功能外&#xff0c;还有一些复杂的功能&#xff0c;如 批量删除、分页查询、条件查询 等功能 批量删除 功能&#xff1a;每条数据前都有复选框&#xff0c;当我选中多条数据并点击 批量删除 按…

LeetCode 热题 100(七):105. 从前序与中序遍历序列构造二叉树、14. 二叉树展开为链表

题目一&#xff1a; 105. 从前序与中序遍历序列构造二叉树https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 思路&#xff1a;依据前序遍历的根左右和中序遍历的左根右&#xff0c; 且根左长度&#xff1d;左根 代码&#xff1a; …

uniapp的 picker 日期时间选择器

效果图&#xff1a; dateTimePicker.js function withData(param){return param < 10 ? 0 param : param; } function getLoopArray(start,end){var start start || 0;var end end || 1;var array [];for (var i start; i < end; i) {array.push(withData(i))…

Flutter:getX的学习

前言 学习教程&#xff1a;Getx教程_FlutterGetx系列实战教程 简介 getX是第三方的状态管理插件&#xff0c;不仅具有状态管理的功能&#xff0c;还具有路由管理、主题管理、国际化多语言管理、网络请求、数据验证等功能。相比其他状态管理组件&#xff0c;getX简单、功能强大…

Node爬虫项目精简版 wallhaven网站实操 2023.8.29

练习地址&#xff1a; https://wallhaven.cc/toplist const express require(express); const axios require(axios); const cheerio require(cheerio); const schedule require(node-schedule); const fs require(fs);async function downloadImage(url) {const response…

漏洞发现-web应用发现探针类型利用

关于在真实环境下面&#xff0c;这个漏洞该如何发现 这里老师把它分成了三块第一类是 #已知cms 如常见的dedecms&#xff0c;discuz&#xff0c;wordpress等源码结构&#xff0c;这些都是网上比较知名的php源码的cms的名称&#xff0c;这是我们在国内常见的几个程序&#xf…

WPF基础入门-Class5-WPF命令

WPF基础入门 Class5-WPF命令 1、xaml编写一个button&#xff0c;Command绑定一个命令 <Grid><ButtonWidth"100"Height"40" Command"{Binding ShowCommand}"></Button> </Grid>2、编写一个model.cs namespace WPF_Le…