c语言经典测试题6

1.题1

 

 void print(char* s)
{if (*s){print(++s);printf("%c", *s);}
}
#include<stdio.h>
int main()
{char str[] = "Geneius";print(str);return 0;
}

上述代码是一个递归,那么它运行的结果是什么呢?

我们来分析一下:首先我们在main函数中创建了一个char类型的数组。 然后我们将str传给print函数,我们知道一维数组传参,其实是将它的首元素地址传过去,我们观看print函数,它的返回类型为void,有一个char*的参数。 进入函数,if的判断条件是*s也就是数组的元素是否为真,当我们的*s为'\0'时,就会跳出if语句,当我们跳出if语句时就已经将所有的“递”算完了,现在就要开始计算"归"了,此时就开始从后往前开始进行运算printf库函数了,如果此时我们将*s进行监视的话,就会发现*s就像自己会往回走一样,那我们的结果会不会就是反过来的字符串呢?

我们来看看:

可能有人就会疑惑不是说好的倒过来吗? 怎么少了一个G呢? 其实是因为我们的代码递归时候的参数为++s,前置 ++的运算规则是先+1后使用,这样的话当我们的*s就直接指向第2个字符了,所以我们的递归式子也会直接过滤掉第一个字符,所以在归的时候第一个字母就不会被打印。

我们如何让字符全部打印出来呢?其实改一下调用条件即可。

演示如下:

2.题2

int main()
{char arr[] = { 'a','b','\0','c','\0' };printf("%s",arr);
}

 上述代码运行的结果是什么呢?

我们来分析一下:char类型的数组arr其元素中有‘\0’,我们思考一下%s打印字符串的规则是什么?应该是提供首元素地址打印到终止符吧。所以按照推理只会打印出ab两个字符。那么我们运行来看看:

3.题3

若有定义: int a[2][3]; ,以下选项中对 a 数组元素正确引用的是( )

 A: a[2][0] B: a[2][3] C: a[0][3] D: a[1>2][1]

我们来分析一下:我们知道数组下标是从0开始的所以它的第一个下标小于2,第二个下标小于3。

故我们可以排除A,B,C但是D选项看上去也感觉有点问题,其实1>2这个不等式是不成立的,所以它的结果为0,故D选项是对的。

4.题4

#include<stdio.h>
int main()
{
int a [12]= {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[3][2]);
return 0;
}

上述代码运行结果是什么呢?

我们来分析一下:我们定义了一个整型数组,一个整型指针数组,和一个整型变量。

然后利用for循环将整型数组每三个整型的方式,将它们的首元素地址存放在整型指针数组中,然后我们在打印的时候,使用到了整型指针数组,p[3]是找到它的第四个元素,也就是找到第四个三个一起整型的首元素地址,在通过[2],找到该整型数组的第三个元素,就是12。

我们运行看看:

如果大家有点不好理解的话,我们也可以换个方式理解,思考一下我们p[3]是找到它的第四个元素,并解引用其实就是10,然后我们的[2],其实就是将该地址加2再解引用,得到的就是12。

5.题5

输入数字和字符,输出从大到小排列(按照ASCLL大小排列)

#include<stdlib.h>
int main()
{char str[1024] = { 0 };gets(str);size_t n = strlen(str);for (int i = 0; i < n; i++){for (int j = 1; j < n-i; j++){if (str[j] < str[j -1]){char tmp = str[j];str[j] = str[j-1];str[j-1] = tmp;}}}printf(str);
}

大家也要多多动手,尝试尝试才能有更大的收获,当然这不是唯一正解,大家也可以发挥自己的想象。

谢谢

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

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

相关文章

跨区域复制建筑UI输入框脚本迷你世界

--复制区域文件 --设置坐标起点&#xff0c;终点 --创建区域 --获取坐标id,data --星空露珠工作室制作 local pos1{x-16,y7,z28} local pos2{x28,y44,z-9} local block{num0} local str{} local str0{} local num0 local count0 local ui6 --几个输入框 local romath.random(…

centos将sh文件设置为开机自动执行

一、先创建一个sh文件 vim redis-6.0.3.sh 这个是redis执行的sh脚本内容 #!/bin/sh # chkconfig: 2345 80 90 # Simple Redis init.d script conceived to work on Linux systems # as it does use of the /proc filesystem. REDISPORT7000 # 对应redis.conf文件的端口 E…

探索创意的无尽宇宙——Photoshop 2020,你的视觉魔法棒

在数字艺术的广阔天地中&#xff0c;Photoshop 2020无疑是一颗璀璨的明星。这款由Adobe公司精心打造的图像处理软件&#xff0c;自推出以来&#xff0c;便以其强大的功能和卓越的性能&#xff0c;赢得了全球数百万设计师、摄影师和爱好者的青睐。无论是Mac还是Windows系统&…

K8S安装部署

常见的K8S安装部署方式 Minikube Minikube是一个工具&#xff0c;可以在本地快速运行一个单节点微型K8S&#xff0c;仅用于学习、预览K8S的一些特性使用。 部署地址&#xff1a;Install Tools | Kubernetes Kubeadm Kubeadm也是一个工具&#xff0c;提供kubeadm init和kube…

k8s部署 多master节点负载均衡以及集群高可用

一、k8s 添加多master节点实验 1、master02节点初始化操作 2、在master01节点基础上&#xff0c;完成master02节点部署 ①从master01节点复制所需要的文件 需要从master01节点复制etcd数据库所需要的ssl证书、kubernetes安装目录&#xff08;二进制文件、组件与apiserver通信…

视频推流、视频处理、拉流、手机预览演示

视频推流、视频处理、拉流、手机预览演示 版本信息操作步骤搭建rtmp服务安装pingos配置nginx(/usr/local/pingos/conf/nginx.conf) http端口为:8081启动nginx服务搭建rtmp鉴权和启动视频处理的服务下载ffmpeg用于拉流、视频处理、推流rtmp推流服务的鉴权服务代码(rtmp_auth_srv…

优化进化算法

基本概念 进化算法&#xff08;Evolutionary Algorithms, EAs&#xff09;是受自然选择和生物进化机制启发而发展起来的一类优化算法。它们使用模拟生物进化的技术来解决复杂的优化问题&#xff0c;其核心思想是通过选择&#xff08;Selection&#xff09;、遗传&#xff08;C…

海外KOL合作指南:如何专业询价并成功建立合作关系?

近几年&#xff0c;随着社交媒体的迅速发展&#xff0c;与海外KOL合作已成为许多企业推广业务的有效手段。海外KOL具有庞大的粉丝基础和广泛的影响力&#xff0c;与他们合作可以帮助企业扩大品牌知名度、提高产品销售等方面取得显著成果。然而&#xff0c;如何向海外KOL询价&am…

与web3.0有关的科技热词的提问和SmartChat给出的回答

Q1. 请解释热词&#xff1a;元宇宙、web3.0、区块链、去中心化、比特币、以太坊、智能合约、NFT、EOS、DAO、Defi、Gamefi、Altcoin 当代科技领域出现了许多热门词汇&#xff0c;以下是这些词汇的解释&#xff1a; 元宇宙&#xff08;Metaverse&#xff09;&#xff1a;元宇…

123123132

GAaFWqDgpYHctHlalFiAGwnyLfjWSFiYNZyGU

R语言【base】——writeLines()

Package base version 4.2.0 Description 向连接写入文本行。 Usage writeLines(text, con stdout(), sep "\n", useBytes FALSE) Arguments 参数【text】&#xff1a;一个字符向量。 参数【con】&#xff1a;一个 connection 对象 或 一个字符串。 参数【se…

设计模式学习笔记 - 面向对象 - 8.实践:贫血模型和充血模型的原理及实践

1.Web开发常用的贫血MVC架构违背OOP吗&#xff1f; 前面我们依据讲过了面向对象四大特性、接口和抽象类、面向对象和面向过程编程风格&#xff0c;基于接口而非实现编程和多用组合少用继承设计思想。接下来&#xff0c;通过实战来学习如何将这些理论应用到实际的开发中。 大部…

Linux常见命令 | 文件传输命令scp

文章目录 scp介绍scp命令场景1.上传本地文件到服务器2.上传本地目录到服务器3.从服务器下载文件4.从服务器下载目录 scp介绍 scp是secure copy的简写&#xff0c;是用于在Linux下进行远程拷贝文件的命令。 scp传输是加密的&#xff0c;可能会稍微影响一下速度。另外&#xff…

leetcode初级算法(python)- 数组

文章目录 1.从排序数组中删除重复项2.买卖股票最佳时机23.旋转数组运行颠倒列表法整体移动元素块法4.存在重复运行包含判断法排序比较判断法运行集合判断法5.只出现一次的数字6.两个数组的交集27.移动零8.两数之和9.旋转图像这篇博客中的代码都是数组计算。 1.从排序数组中删除…

自动化部署证书 acme.sh 使用教程

简介 acme.sh 是一个开源的 ACME 协议的客户端工具&#xff0c;用于自动化申请、更新和部署 SSL/TLS 证书。通过使用 acme.sh&#xff0c;用户可以轻松地在服务器上设置 HTTPS 加密连接&#xff0c;而无需手动操作。它支持多种 DNS 接口和证书颁发机构&#xff0c;可以与各种 …

U盘拒绝访问?快速恢复数据的实用方案!

当您尝试访问U盘时&#xff0c;突然遇到“U盘拒绝访问”的提示&#xff0c;这无疑是一个令人头疼的问题。这不仅意味着您无法读取或写入U盘中的数据&#xff0c;还可能意味着重要文件的安全受到威胁。本文将深入探讨U盘拒绝访问的原因&#xff0c;并为您提供至少两种实用的数据…

electron+vue3全家桶+vite项目搭建【27】封装窗口工具类【1】雏形

文章目录 引入思路抽出公共声明文件抽出全局通用数据类型和方法主进程模块1.抽离基础常量2.封装窗口工具类 渲染进程模块测试结果 引入 demo项目地址 可以看到我们之前在主进程中的逻辑全部都塞到index.ts文件中&#xff0c;包括窗口的一些事件处理&#xff0c;handle监听&am…

机器学习打分函数在分子对接中的应用系列-GB_Score

欢迎浏览我的CSND博客&#xff01; Blockbuater_drug …点击进入 文章目录 前言一、GB-Score是什么&#xff1f;二、文献复现 -训练和验证环境1. GB score验证虚拟环境的配置2. Usage1- Preparing ligand and protein file2- Generating features3 - Repeat and extend current…

Linux第66步_linux字符设备驱动_挂载和卸载

1、了解linux中的驱动类型: 1)、字符设备驱动 字符设备是limnux驱动中最基本的一类设备驱动&#xff0c;字符设备就是一个一个字节&#xff0c;按照字节流进行读写操作的设备&#xff0c;读写数据是分先后顺序的。如&#xff1a;GPIO输入输出、UART、I2C、SPI、USB、LCD、音频…

基于相位的运动放大:如何检测和放大难以察觉的运动(01/2)

基于相位的运动放大&#xff1a;如何检测和放大难以察觉的运动 目录 一、说明二、结果的峰值三、金字塔背景3.1 可操纵金字塔3.2 亚倍频程复数可控金字塔 四、基本方针4.1 1D 问题陈述4.2 一维方法4.3 实际实施说明 五、放大倍率的限制5.1 空间支持的影响5.2 频带的影响 六、推…