C语言经典题目(三)
C站的小伙伴们,大家好呀!😊😊✨✨这一篇是C语言之经典题目篇,除程序设计,还有一些不错的程序分析,快来和我一起进入C语言的世界吧!✨✨✨
💕C语言其他·刷题篇在这里哦:
【C语言经典题目(一)】
【C语言经典题目(二)】
【C语言字符串刷题篇】
【C语言 语言篇数组和字符串】
C语言经典题目三
- 程序分析
- 一:输出指向字符的指针
- 二:for循环和switch语句体中break和continue
- 三 :双指针完成赋值
- 求数组相邻两个数之和
- 删除值为x的数组元素
程序分析
一:输出指向字符的指针
分析一下程序执行后的输出结果:___________
#include <stdio.h>
int main (void)
{char *string="I love China!"; //(1)printf("%s\n",string); //(2)string+=7; //(3)while(*string) //(4){putchar(string[0]);string++;} return 0; //(5)
}
对于指针类题目,画图可以更加直观地帮助我们分析理解。
(1)
字符型指针string指向了字符串"I love China!"的第一个元素,即C。
(2)
第二条语句,printf()函数中格式控制字符%s
控制输出项是指向字符的指针,输出方式是从该指针指向的字符即'C'
开始输出,直到遇到'\0'
输出结束。故第二条语句输出结果为 I love China!
(3)
指针向下移动7位,指向了元素’C’。
(4)
进入循环体,当*string (即指针指向的元素的值)为非零
值时,执行循环体中的语句。此语句依次输出’C’ ‘h’ ‘i’ ‘n’ ‘a’ ‘!’
故该程序所有的输出结结果为:
二:for循环和switch语句体中break和continue
分析程序执行后的输出结果______________
#include <stdio.h>
int main(void)
{char str[]="ssswlia",c; \\(1)int k; for (k=2;(c=str[k])!='\0';k++) \\(2){switch(c) {case 'i':++k;break;case 'l':continue;default:putchar(c);continue;}putchar('*'); \\(3)}printf("\n");return 0;
}
(1)
定义字符数组,将字符串存入字符数组。
注意,字符串的长度(用strlen()函数计算)为7
,而字符数组的长度为8
(用sizeof()函数计算,得到字符数组的字节数,再除以char型元变量所占的字节数,即1,即可得到字符数组的长度。)
(2)
指针进行for循环。
循环体是个switch语句,这里要搞清楚switch和break的用法。
break
只用于循环体或者switch语句体中。当用于循环体中时,它的作用是退出循环。当用于switch语句体内时,作用只是跳出该switch语句体,注意此时并不能终止循环。
continue
语句只用于循环体,它的作用是跳过本次循环体中剩下尚未执行的语句,立即进行下一次的循环条件判定。
分析
对于这个题目的分析,如下图。
- 指针指向’s’,进入for循环,for循环的第一条语句是switch语句,符合switch第三条语句,输出’s’,这是遇到continue语句(注意continue语句是对于for语句而言的),不执行在for循环体中该语句之后的语句,(即 putchar()语句),进行下一次的循环,k++,指针向下移动。
- 指针指向’w’,这个情况和刚刚的指针指向’s’的情况过程一样。
- 下一步,指针指向’l’,在这种情况下,执行continue语句,即要直接进行下一次的for循环,指针向下移动。
- 下一步,指针指向’i’,在这种情况下,执行switch语句体里的两条语句。指向向下移动,指向’a’,执行break语句,退出switch语句体,(注意此时并不会退出for循环),执行putchar()语句,输出’*’。指针移动,指向’\0’。结束for循环。
- 因此最终的输出结果为 sw*
三 :双指针完成赋值
#include <stdio.h>
int main(void)
{void fun(char *); //(1)char str[]="abcdefggedcba"; //(2)fun(str); //(3)puts(str);
}
void fun(char *p) //(4)
{int i,j;for (i=0;*(p+i)!='\0';i++)if (*(p+i)>='d'){*(p+j)=*(p+i);j++;}*(p+j)=0;
}
(1)
在主函数中声明被调函数。
(2)
将字符串存入字符数组。
(3)
调用被调函数。
(4)
分析大概思路
主函数将str传递给指针p,即将字符数组第一个元素’a’的首地址传递给了指针p,p指向a。
在被调函数体,有两个指针。它们初始状态都是指向a。
p+i不断移动,当满足for循环体中的条件时,p+j移动。
具体执行过程
指针p+i不断移动,p+0,p+1,p+2,所指向的值都小于’e’,因此p+j不移动(j=0)
当p+i(i=3时),满足if条件,*p+j(j=0)赋值为d,并向下移动……
最后,将p+j所指向的元素的值赋值为0。
求数组相邻两个数之和
求数组a中相邻两个元素之和,并将这些和存在数组b中,按每行3个元素的形式输出。
#include <stdio.h>
int main (void)
{int a[10],b[10],i; //初始化数组afor (i=0;i<10;i++)scanf("%d",&a[i]);//将相邻两个数之和依次赋值给数组bfor (i=1;i<10;i++)b[i]=a[i]+a[i-1];//输出数组bfor (i=1;i<10;i++){printf("3d",b[i]);if (i%3==0) printf("\n");//控制格式}return 0;
}
删除值为x的数组元素
主要思路
对数组中的元素进行遍历,检验每一个元素是否等于目标元素x,若是相等,则删除?
怎样实现删除
呢?就是自这个元素起,将其后面的每一个元素向前移动一位。
在这个过程我们使用指针实现,要注意指针越界行为。
#include <stdio.h>
int main(void)
{int a[10]={1,3,5,2,2,6,8,10,0,2};int x,*p,count=0,i;x=2;for (p=a;p<a+10-count;p++) //(1){if (*p=x) //(2){count++;for (i=p-a;i<10-count;i++) //(3)a[i]=a[i+1];p--; //(4) //注意这里的p--防止漏掉某个元素的检验}}for (p=a;p<a+10-count;p++)printf("5d",*p);printf("\n");return 0;
}
(1)
指针p初识指向数组a的第一个元素,即指向1。
这里设置的循环条件是为了防止指针越界。
1,3,5都不等于目标元素2,所以指针的指向不变。
(2)
当指针移动到下一个元素即2时,count++,这时会使得指针的下界向左移动。
(3)
在里层的for循环中,将p指针所指的位置开始,把后面的元素的值赋值给前一个元素。这样就实现了删除
。
(4)
假设这里没有p–,那么执行完for循环循环体中的语句,会p++(for循环(1)中),注意这时可以已经删掉一个目标元素后的数组,那么移动后p所指向的元素检验了吗?还没有,就又移动到了下一个元素。所以没有 p–这条语句,会使得漏掉一些元素,最终没法达到目的。
相关文章:
C语言经典题目(三)
C站的小伙伴们,大家好呀!😊😊✨✨这一篇是C语言之经典题目篇,除程序设计,还有一些不错的程序分析,快来和我一起进入C语言的世界吧!✨✨✨ 💕C语言其他刷题篇在这里哦&…...
九、(补充文章四)Arcgis实现深度学习训练样本数据的批量制作——只靠原图+shp如何批量制作样本图片
之前写了一些个深度学习系列文 其中先是单张样本的制作方法 最后通过构造模型批量处理 大大提高了生成样本的速度 四、Arcgis实现深度学习河流训练样本数据的制作(使用软件批量获取样本图片)——对已经获取到的完整面状样本数据进行处理 但是这个方法不仅仅需要shp和原图 还需要…...
MKS SERVO4257D 闭环步进电机_系列8 CAN通讯示例
第1部分 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口,支持MODBUS-RTU通讯协议,内置高效FOC矢量算法,采用高精度编码器,通过位置反馈&a…...
UnityVR--组件9--视频组件VideoPlayer
目录 前言 参数解释 RenderMode渲染方式 VideoPlayer类中的API 前言 在之前的VR场景中已经使用过VideoPlayer播放视频(Unity.UI的交互(6)-播放视频),不过在VR中设置是有些不同的,这里更详细地说明一下V…...
Java 深拷贝和浅拷贝
Java 中的深拷贝和浅拷贝是针对对象复制而言的。 浅拷贝(Shallow Copy) 当对象进行浅拷贝时,只会复制对象本身和其中的基本数据类型属性,而不会复制引用对象的实际内容。具体而言,浅拷贝只会创建一个新的对象&#x…...
[ruby on rails] docker
docker安装 ubuntu14.04后自带docker安装包,可以直接安装 sudo apt-get updatesudo apt-get install -y docker.io# 安装后启动sudo service docker start查看docker信息 docker infodocker命令 sudo service docker start sudo service docker stop sudo servic…...
网络协议——STP协议是什么?是如何实现的?
作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、STP协议是什么 二、为什么需要STP协议 三、STP的实现过程 编辑 1、选举跟桥 2、给非跟桥交换机选举跟端口 3、给每个网段选…...
【C++】智能指针 学习总结 |std::shared_ptr |std::unique_ptr | std::weak_ptr
文章目录 前言一、智能指针介绍二、普通指针和智能指针的比较案例三、std::shared_ptr四、std::unique_ptr五、std::weak_ptr六、std::shared_ptr |std::unique_ptr | std::weak_ptr三大智能指针的区别 前言 参考答案:chatgpt 一、智能指针介绍 智能指针是C的一种…...
iptables防火墙
文章目录 一.linux防火墙基础1.linux 包过滤防火墙概述1.1netfilter1.2 iptables 2.包过滤的工作层次2.1 通信的五元素和四元素 3.iptables 的表、链结构3.1 规则链3.2 默认包括5种规则链3.3 规则表3.4 默认包括4个规则表 二.数据包过滤的匹配流程1.规则表之间的顺序2.规则链之…...
properties、yaml作为配置文件的特点
说明:在软件开发中,经常需要把一些配置写在文件中,如数据库配置、MyBatis配置等。这样,后续如果数据库参数有改动,就可以避免直接对代码做修改,只要修改配置文件中关于数据库的配置。关于配置文件的选择&am…...
JavaSE-03 【流程控制语句】
文章目录 JavaSE-03 【流程控制语句】第一章 流程控制1.1 流程概述1.2 顺序结构 第二章 判断语句2.1 判断语句---if2.2 判断语句---if...else2.3 判断语句---if...else if ... else 第三章 选择语句3.1 选择语句--switch3.2 case的穿透性 第四章 循环语句4.1 循环概述4.2 循环语…...
笔记本电脑的BIOS是怎么保护安全的?
随着攻防技术的不断演进,像BIOS攻击、高级网络代码攻击等手段层出不穷,“受害者”也不仅限于企业级服务器、存储,很多魔爪也开始伸向了拥有商业机密数据的PC。 BIOS是Basic Input/Output System(基本输入/输出系统)的…...
Xubuntu之将rm删除内容移至回收站(一百七十七)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...
STM32F407实现1588v2(ptpd)
硬件: STM32F407ZGT6开发板 软件: VSCode arm-none-eabi-gcc openOCD st-link 在github搜到一个在NUCLEO-F429ZI开发板上移植ptpd的example,因为和F407差别很小,所以就打算用这个demo移植到手头的开发板上。因为目前只需要…...
架构师如何找到自己的商业模式
作为一个架构师,必须要在有限的资源下最大化架构活动所带来的商业价值。对于任何一个架构活动而言,架构师的可用资源,包括商业成本、研发成本、时间成本、迁移成本等等,都是非常有限的。但架构活动就是要在这些限制条件之下&#…...
SQLServer2022安装(Windows),已验证
一、SQLServer2022下载 1、官网下载地址 SQL Server 下载 | Microsoft 2、下载安装包 2.1、选择Developer版本,立即下载。 2.2、打开下载文件夹,双击运行SQL2022-SSEI-Dev.exe 尝试运行SQL2022-SSEI-Dev.exe,会收到以下信息:“…...
facenet, dlib人脸识别,人体检测,云数据库mysql,QQ邮箱,手机验证码,语音播报
目录 部分代码展示: 录入部分 识别部分编辑 活体检测部分编辑 同步到云数据库MySQL 其他操作 部分图片展示: 完整代码加ui链接: 涉及到的一些知识点的文章 部分代码展示: 录入部分 识别部分 活体检测部分 同步到云数…...
Spring Boot 面试题——定时任务
目录 1.什么是 cron 表达式?如何使用?2.Scheduled 注解有什么作用?3.介绍一下 spring-boot-starter-quartz。4.在 Spring Boot 中如何实现定时任务?4.1.使用 Schedule 注解4.2.Quartz 框架 1.什么是 cron 表达式?如何使…...
总建面64万平,配3所幼儿园+54班九年制学校,坪山江岭竹元规划
近日,坪山区城市更新和土地整备局发布,关于《坪山区马峦街道江岭竹元片区城市更新单元规划》已通过深圳市城市规划委员会法定图则委员会审批。现予以公告。 项目位于坪山区马峦街道,南邻南坪快速路,北邻比亚迪路,东西两…...
python3 爬虫相关学习7:使用 BeautifulSoup下载网页图片到本地文件夹
目录 1 一个爬图片pic的代码的例子 1.1 学习的原文章 1.2 原始代码的问题总结 问题1 问题2 问题3 其他问题 1.3 原始代码 2 直接在cmd里 python运行报错 和 处理 2.1 运行报错 2.2 报错原因: 没有提前安装这个bs4 模块 2.3 如何提前知道我的python环境…...
windows平台python脚本执行环境搭建笔记
1.python脚本环境下载 这里是原始发布源: https://www.python.org/downloads/release/python-3114/https://www.python.org/downloads/release/python-3114/安装时记得添加进系统path,这样你可以随时调用python环境。 2.扩展模块的安装 step1.找到py…...
MyBatis的动态SQL之OGNL(Object-Graph Navigation Language)表达式以及各种标签的用法
MyBatis的动态SQL 1、if标签的用法2、choose标签的用法3、where标签4、set标签5、trim的用法6、foreach标签7、bind标签 使用过JDBC或者是其他的ORM框架的开发者都知道,在很多操作中都需要去根据具体的条件进行SQL语句的拼接,并且在有些时候一些标点符号…...
基于Java+Springboot+Vue的二次元商城网站设计与实现
博主介绍:✌擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案…...
MyBatis操作数据库实现
说明:MyBatis是作用于三层架构开发,数据访问层(Data Access Object)的框架,用于访问数据库,对数据进行操作。 一、环境搭建 首先,创建一个SpringBoot模块,然后把MyBatis的环境搭建…...
Git GitLab 使用及规范
Git 基本操作 Git安装配置及基本使用 从官网下载安装包,手动完成安装。打开Git Bash命令行工具,执行命令ssh-keygen -t rsa -C Email-Addresss生成一个密钥对。登录到GitLab,点击右上角你的用户头像,点击Edit Profile settings&…...
【SpringCloud——Sentinel】
一、什么是雪崩? 微服务调用链路中的某个服务发生故障,引起整个链路中的所有微服务都不可用,这就是雪崩。 二、解决雪崩问题的常见措施 1、超时处理 设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休…...
面试专题:计算机网络常见面试点总结
socket、tcp、udp、http 的认识及区别 socket、tcp、udp、http 的认识及区别 一、先来一个讲TCP、UDP和HTTP关系的 1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传…...
PageHelper失效问题
问题出现记录: 修改代码后,出现分页失效问题,原本的代码再设置了 PageHelper.startPage(pageNum, pageSize);后只有一个mysql查询,我在原本的业务查询前,新增了其他的Mysql查询,导致原需要分页的查询失效 …...
Linux常用命令——grep命令
在线Linux命令查询工具 grep 强大的文本搜索工具 补充说明 grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本&…...
学校热水供应系统方案
学校热水供应系统是现代化校园建设的重要组成部分。一套高效、可靠、安全、环保的热水供应系统,不仅能够满足学生、教职工的日常生活需求,也能提高学校形象和竞争力。 在设计学校热水供应系统方案时,需要考虑以下几个方面: 一、热…...
网站开发需要考虑哪些方面/seo人才网
json-server获取服务器数据只能用get方式,而express支持post方式获取数据 express 一般项目中均安装,若未安装 npm install express --savebuild文件夹webpack.dev.config.js添加设置 //支持post mock数据 var express require(express); //启动expr…...
禁止wordpress网站上传图片时自动生成三张图片方法/百度手机seo软件
AUTOSAR_EXP_PlatformDesign - 10 Persistency 【translated by sky8336, 2019.06.09, Shanghai】 10 Persistency 10.1Overview 持久性为自适应平台的应用程序和其他功能集群提供了在自适应机器的非易失性内存中存储信息的机制。数据在启动和点火周期是可获得的。持久性提…...
网站注册信息查询/旺道网站排名优化
#!/bin/bashecho -n Count:tput sccount0while true;doif [ $count -lt 40 ];thenlet count;sleep 1;tput rctput edecho -n $count;elseexit 0;fidone使用Shell实现一个倒计时, 其中,tput sc 是存储光标位置, tput rc 是恢复光标位置 tput …...
wordpress插件设置/系统优化助手
为什么80%的码农都做不了架构师?>>> 今天心情比较好,就把自己的思想、理解画个比喻图什么的,给大家分享分享,觉得有些收获,就帮我点一下推荐,觉得无聊,就不看内容,看看图…...
海口中小企业网站制作/公司网站如何建设
数据去重复,一直都是表亲们痛点、难点,甚至是痛不欲生。在以前的教程中,小编讲过用数据透视表、函数、sql、、pq、技巧法。传统的函数解决办法是:indexsmallrow,简称裹脚布函数,很多表亲都望而生畏。今天小…...