C语言专项训练

C语言经典编程题100例(1-20) 本题要求编写程序,计算交错序列 1 - 2/3 + 3/5 - 4/7 + 5/9 - 6/11 +... 的前N项之和。在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后三位。在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后两位。 阅读详情

道阻且长,接下来就要开始数据结构的学习,而学不可以不练,在接下来的学习中,数据结构学习的同时,c语言训练也要开始更新了~

NO.1 函数

1.void函数声明

09b24792783848de8337212df87c94fb.jpg

 这道题一看就秒了(开玩笑)我们在知道答案的同时,也要明白其中的知识点(其实就是我的表达能力不好,想要向别人解释有点困难,所以借着复习来锻炼自己😝)

考点:函数声明 void

解析:void是这个函数返回的类型,这个类型就是没有类型的空类型,代表这个函数的返回值是空。

void也用于声明一些万能指针. 比如你要用一个指针,但是还不确定这个指针会指向什么类型的变量,那就申请一个void类型的指针,它就叫做万能指针,因为它可以指向任何类型的变量.

在c语言中,凡不加返回值类型限定的函数,都会被编译器作为返回整型值处理

NO.2 交换变量

64621ba7ae1e42e5895b2887ca374b94.jpg

失误

在实际编写代码时尽量不要用B,因为可能会出现溢出(即两个变量之和可能会超过变量类型能表示的最大范围)。

可以改为a^=b;b^=a;a^=b;不需要考虑溢出,a^=b,此时a记录了a和b两个数中二进制的异同情况,1表示不同,0表示相同。

操作符知识-CSDN博客

NO.3 指针

一.函数指针和指针函数

 dd4f8d6d4b8044969f5dd039790b8915.jpg

1.指针函数:当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,用于需要指针或者是地址的表达式中。是指带指针的函数,本质是函数

声明格式:类型说明符 *函数名(参数)

2.函数指针:指向函数的指针包含了函数的地址,可以通过它来调用函数。

声明格式:类型说明符 (*函数名)(参数)

拓展(复习):数组指针和指针数组

二.定值和定址

1f4a8b47fc26455f9475f279141d3155.jpg

const意思为"只读的",口诀:左定值,右定址(const在*的左边值不能变,在*的右边地址不能变)。

const int和int const的意思是一样的,也就是说,我们要从const* int和int*const中选择。

如果是const* int ptr,那么const限制的是*ptr,也就是地址,而ptr的值是可以改变的

如果是* const int ptr,那么const限制的是ptr,也就是值,而地址是可以改变的

如果是const int* const x,那么值和地址都被限制,不能改变。

注意:只要 在*之后有 const限定符,则该指针在声明时必须初始化 : 否则就是野指针

NO.4 分支和循环

一.if语句

9b9c515b353c448485e0d70d65ffb774.jpg

048a4ec49d4d4582bef7a3ab0d929349.jpg

 这道题本身很简单,而需要注意的是,对于for(;;)循环体,中间的表达式一般是个判定条件,返回布尔型。而for(表达式1;表达式2;表达式3)中,表达式2是判断,j=0这个表达式为0,因此判断条件为false,不会执行循环。

赋值语句的返回值是赋给的值

NO.5 操作符

dae5866aeb974d5bab1684d8470cce53.jpg

三目操作符从右到左计算

NO.6虚函数和纯虚函数

4a9ff0e411ab47edad37410695d1061a.jpg

纯虚函数是以=0为结尾的,并加上virtual关键字,且没有函数体的函数。

需要注意:

1、当类声明中包含纯虚函数时,则不能创建该类的对象

2、包含纯虚函数的类只用作基类

3、在类中使用=0指出类是一个抽象基类,在类中不可以定义该函数,只能声明

NO7.内存

22046f59de004a4f8556b77a12778310.jpg

1.动态内存管理

malloc和calloc的区别

1,malloc

函数原型:
void* malloc(unsigned size);
函数功能:
在堆内存中分配一块长度为size字节的连续区域,参数size为需要内存空间的长度。

2,calloc

函数原型:
void* calloc(size_t numElements, size_t sizeOfElement);  
函数功能:
与malloc相似,参数sizeOfElement为单位元素长度(例如:sizeof(int)),numElements为元素个数,即在内存中申请numElements * sizeOfElement字节大小的连续内存空间。

3,realloc

函数原型:
void* realloc(void* ptr, unsigned newsize);
函数功能:
使用realloc函数为ptr重新分配大小为size的一块内存空间。下面是这个函数的工作流程:
(1),对ptr进行判断,如果ptr为NULL,则函数相当于malloc(new_size),试着分配一块大小为new_size的内存,如果成功将地址返回,否则返回NULL。如果ptr不为NULL,则进入(2)。
(2),查看ptr是不是在堆中,如果不是的话会抛出realloc invalid pointer异常。如果ptr在堆中,则查看new_size大小,如果new_size大小为0,则相当于free(ptr),将ptr指向的内存空间释放掉,返回NULL。如果new_size小于原大小,则ptr中的数据可能会丢失,只有new_size大小的数据会保存;如果size等于原大小,等于什么都没有做;如果size大于原大小,则查看ptr指向的位置还有没有足够的连续内存空间,如果有的话,分配更多的空间,返回的地址和ptr相同,如果没有的话,在更大的空间内查找,如果找到size大小的空间,将旧的内容拷贝到新的内存中,把旧的内存释放掉,则返回新地址,否则返回NULL。

二,malloc、calloc、realloc之间的区别

1,是否会对申请的内存空间进行初始化

函数malloc不能初始化所分配的内存空间,函数calloc() 会将所分配的内存空间中的每一位都初始化为零。

2,功能上的区别

malloc与calloc用来动态分配内存空间,而realloc则是对给定的指针所指向的内存空间进行扩大或者缩小。

NO8.数组

78ba637e1523485db56d393a2696bdda.jpg

NO.9 delete

bd1043c8a0b74552958416b6f6aec245.jpg

3b9fcbe8dac5466a954847a9b1850889.jpg

NO.10指针

 4661769c810f46879cc538bcb91150de.jpg

NO.11实型常数:

C语言语法规定,字母e或E之前必须要有数字,且e或E后面的指数必须为整数。如e3、5e3.6、.e、e等都是非法的指数形式。     E/e前面为十进制整数或实数,E/e后面为十进制整数且不能为实数,前后都不能省略

关键在于熟练掌握操作符的优先级和++的使用方法

写法一
y=*px+1; //y=(*px)++
此处*为间接访问,px指向地址的内容+1后的值赋给y。

此时,x=4,y=3。

写法二
y=*px++; //y=*(px++);
这里*(取值符)和++为同一优先级,px先和++结合;但会先使用px指向地址的内容并赋给y,之后px的值+1,只是改变了px指向的地址。

此时,x=3,y=3(这里大部分机器的结果 * px=3是因为系统给xy分配了相邻的地址,px+1指向的地址变成y的地址,如果xy的地址不相邻,则 * px的值不确定)。

两种写法 * px++和 * px+1的区别是后者是px指向地址的内容+1,前者是px指向的地址+1,所有后者、即单独的 * px++;等价于px++,是一种容易误解的写法,在实际程序中不会用到 * px++;这样的语句。

写法三(扩展)
y=*++px;
类似,px先和++结合;这次会先让px指向的地址+1,之后把px指向地址的内容赋给y,当然这个值是不确定的(一般系统给xy分配的地址是相邻的,所以px指向的地址一般就是y的地址,也就是说y的内容并为改变)。
此时,x=3,y= ?。

NO.12fscanf  sprintf  fgets  read  pread  write  pwrite  fseek  lseek


NO.13memcpy memmove


%d整型输出,%ld长整型输出,
   %o以八进制数形式输出整数,
   %x以十六进制数形式输出整数,
   %u以十进制数输出unsigned型数据(无符号数)。
  %c用来输出一个字符,
   %s用来输出一个字符串,
   %f用来输出实数,以小数形式输出,
   %e以指数形式输出实数,
%g根据大小自动选f格式或e格式,且不输出无意义的零。
其中%o和%x都是二进制的延伸,即八进制和十六进制,可以适用于unsigned变量输出


NO.14检测运算过程中整型溢出的方法

NO.15返回值

c c++中  返回值 只能有一个。   或者void ,没有返回值类型。
考虑到c++中的绑定器,类似可以返回多个值。结果不可以。
绑定器(Binder)是一种函数对象,它可以将一个或多个参数绑定到函数中的特定值,从而创建一个新的可调用对象
若想实现返回多个值的效果:使用struct  在函数体中,将要返回的多个值,赋到struct变量中,返回结构体变量。

NO.16标识符

标识符只能由字母(A~Z, a~z)、数字(0~9)和下划线(_)组成,并且第一个字符必须是字母或下划线。关键字不能定义为标识符


NO.17按位存储

c语言基础程序——100实例 /根据公示Π/4=1-1/3+1/5-1/7+1/9-1/11+......,计算Π的近似值,当最后一项的绝对值小于0.000001为止。int f=1;//变号用//i是分母,sum是Π/4的值while (fabs(1.0/i)>=1e-6)//当绝对值小于10的-5次方认为为0//累加每项的值f*=-1;//变号i+=2;//分母+2变化printf("Π的近似值为%.5lf",sum*4); 阅读详情

相关推荐

C语言基础代码训练(适合初学者)

一些简单的C语言上手代码,非常适合与初学者,希望对大家有帮助

C语言基础编程练习(精选例题+题解)

目录 1.求最大公约数和最小公倍数 2.打印图形 3.质数因子 4.数字排序 5.十进制数转换为八进制数(进制转换) 6.寻找完数 1.求最大公约数和最小公倍数 题目描述:输入两个正整数m和n,求其最大公约数和最小公倍数。 输入:输入为一行,包括两个数字,以空格隔开。 输出:输入应为两行,第一行为最大公约数,第二行为最小公倍数。 样例输入: 2 3 样例输出: 1 6 解题思路: 1.求最大公约数时,先找出输入的两个数中小的那一个,从该数开始,依次-1,判断..

qq_58284486的博客 3万+

银河麒麟系统安装redis【亲测可行】

架构:Linux 5.10.0-9-generic x86_64 GNU/Linux。redis版本:redis-6.2.3.tar.gz。然后在执行make install,结束;OS:银河麒麟V10(SP1)未激活。cpu:I5-10代;

lx_nhs的博客 3326

C基础:45道练习题汇总(初学者加油)

本文汇总了c基础阶段所有的练习题,有需要的可以参考下

weixin_57535837的博客 3万+

BBR算法原理与实现深度解析

BBR算法通过重新定义拥塞控制的基本范式,为现代网络应用提供了突破性的解决方案。随着QUIC协议的普及和智能网卡技术的发展,BBR类算法将在边缘计算、云游戏、工业物联网等领域发挥更重要的作用。

程序猿老樊的博客 2408

C# NX二次开发:两种过滤器设置方案的实战解析与场景适配

本文深入解析C# NX二次开发中的两种过滤器设置方案:AddFilterHandler回调与MaskTriple属性设置。通过实战案例对比其性能差异与适用场景,帮助开发者根据需求选择最优方案,提升NX插件开发效率与交互体验。特别针对BlockStyler集成场景提供专业建议,是NX二次开发者的实用指南。

weixin_33739646的博客 838

C语言第八课,数组专项训练

i < len-1;i++)

2303_76294729的博客 535

Python小白也能玩转迅投QMT量化交易?手把手教你从安装到第一个策略

本文为零基础Python用户提供了上手迅投QMT量化交易平台的完整指南。从Python 3.6环境配置、QMT客户端获取安装,到核心概念讲解,并手把手教你编写并回测一个经典的双均线交易策略,帮助初学者快速迈出量化交易的第一步。

weixin_29103191的博客 760

c语言链表设计题,C语言程序设计专项训练题之 单链表

计算机等级考试二级C语言程序设计专项训练题——单链表一.程序填空题1.给定程序的主函数中,已给出由结构体构成的链表结点a、b、c,各结点的数据域中均存入字符,函数fun的功能是:将a、b、c 三个结点链接成一个单向链表,并输出链表结点中的数据。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#include typedef struc...

weixin_34221653的博客 567

STM32CubeMX平台F4系列固件下载核心要点

详解STM32CubeMX平台下F4系列单片机的固件包下载方法与常见问题,重点讲解stm32cubemx固件包下载流程及配置技巧,帮助开发者快速完成开发环境搭建。

weixin_42575505的博客 879

当R语言遇见MaxENT:参数优化的艺术与自动化调参实践

本文探讨了R语言与MaxENT在生态位建模中的结合应用,重点介绍了参数优化与自动化调参的实践方法。通过caret与ENMeval工具链,研究人员可以高效处理多物种、多环境变量的大规模分析任务,提升模型性能与工作效率。文章还涵盖了从数据准备到结果可视化的全流程,为生态学家提供了实用的技术指导。

corn8的博客 453

pta c语言专项训练 7-1 然后是几点

有时候人们用四位数字表示一个时间,比如1106表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为530;0 点 30 分表示为030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。

dancer10086的博客 247

【x265编码器】章节6——x265的码率控制

对于CRF模式而言,右边这部分是是固定值m_rateFactorConstant,在初始化的时候确定,跟分辨率,qCompress这个参数是外部可设参数,默认值0.6,因此QP的选择只跟编码复杂度有关,跟码率无关,编码复杂度越高,QP值越高,因此可以一定程度上说CRF模式是恒定质量的编码模式。其中Complex表示当前帧的编码复杂度,x265中用lookahead模块计算的SATD作为衡量当前帧的复杂度,c为模型参数,qscale是率失真优化中的拉格朗日乘子,R为编码当前帧需要的比特数。

vcvdv123的博客 1万+

c语言与web程序设计,计算机二级《WEB程序设计》专项训练题

计算机二级《WEB程序设计》专项训练题想知道自己复习有哪些不足,就应该看看自己做题有哪些错误点,以下是小编整理的计算机二级《WEB程序设计》专项训练题,欢迎参考阅读!一、选择题1在HTTP协议的“请求/响应”交互模型中,以下说法中错误的是( )。A.客户机在发送请求之前需要主动与服务器建立连接B.服务器无法主动向客户机发起连接C.服务器无法主动向客户机发送数据D.以上都错参考答案:D2关于浏览器对...

weixin_35476698的博客 342

【RT-DETR实战】159、改进九:知识蒸馏从YOLOv8教师模型学习

摘要: 本文探讨了知识蒸馏在RT-DETR目标检测模型中的应用挑战与实践经验。作者以YOLOv8作为教师模型,针对特征对齐、损失函数设计和训练策略等核心问题,提出了适配器模块、动态权重调整和多阶段训练等优化方案。文章重点分析了教师模型选择、特征图匹配、损失函数组合等关键环节的实战技巧,并总结了蒸馏模型部署时的注意事项。通过实验验证,作者指出知识蒸馏应关注模型"思维方式"的迁移而非简单特征复制,并强调合理评估指标和教师模型选择的重要性。最后,作者分享了技术迭代中的边际效应认知,为工业场景下的模型优化提供了实用

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 264

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

c语言程序长度单位换算表大全,小学数学单位换算公式大全(附专项训练)

原标题:小学数学单位换算公式大全(附专项训练)ID: u-jiaoyu在小学数学的学习中,单位换算贯穿始终。无论是在小升初数学考试中,还是在生活方面,都会涉及单位换算的问题。在小学阶段,主要涉猎的单位换算包括长度、面积、体积、重量、人民币以及时间方面的换算。由于换算值的不统一,导致很多小学生容易把这些换算值混淆,导致考试出错丢分,有时还会在生活中闹笑话。对此,下面牛老师将分享小学阶段数学单位换算的...

weixin_39955421的博客 1690

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

c语言数组移动k,C语言程序设计专项训练题之数组元素的移动-20210506190435.doc-原创力文档...

计算机等级考试二级C语言程序设计专项训练题一一数组元素的移动在计算机等级考试二级C语言程序设计试题中,按要求对数组元素进行移 动处理是一个重要的考点,有关数组元素移动的试题在历年考试试卷的程序填空 题和程序设计题中经常出现。例题讲解例1编写函数fun,它的功能是:逆置数组元素中的值。例如,若“所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆 置后依次为:9、8、7、6、5、4、3、...

weixin_30322969的博客 241

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

安卓 c语言宝典,C语言编程宝典下载_C语言编程宝典APP安卓版下载10.0.6_飞飞巴士下载...

C语言程序编写秘笈是款C语言学习的软件,手机软件是以便要想学习培训C语言的客户出示技术专业的学知识,客户可以在手机软件中学习培训到有关的专业知识,可以在手机中立即实际操作,让客户可以加重自身所学习培训的专业知识,赶紧来下载应用吧。C语言程序编写秘笈手机软件特点1、将Visual C 搬到手机上之中,彻底摆脱电脑上也可以程序编写(是否超棒呢)。2、章节目录层级独特,关键突显,注重基本知识,轻松学好...

weixin_29614223的博客 206

2c语言程序设计_辽宁师范大学计算机与信息技术学院836C语言程序设计考研全套资料...

【导语】辽宁师范大学计算机与信息技术学院836C语言程序设计考研全套资料已发布,现分享给大家。本内容全面丰富,共分为5部分内容,助力全面备考。通过对比分析,汇编了全国各院校的历年考研试题进行汇编,旨在更好地帮助广大考生朋友有针对性、有重点的掌握专业课考试的侧重考点、核心知识点,总结命题规律和特点,做到知己知彼、针对性备考;教材是学习的基础,因此结合指定的参考教材的重难点笔记、配套练习题、课后练习题...

weixin_32102305的博客 181

【C语言】用TXT文本实现选择题刷题|选择题刷题|程序|

用C语言实现TXT文本刷选择题

Ganxy03的博客 760

C语言学习

我是一名刚入学的大一新生,计算机应用专业。在进入大学后的第一个学期,我就开始接触计算机专业的核心课程——C语言程序设计。通过这段时间的学习,我深刻认识到C语言在计算机领域的基础性和重要性。为了系统性地掌握C语言编程,并为后续学习Java、Python等高级语言打下坚实基础,我制定了为期6个月的学习计划。我相信通过这样的学习,配合持续的努力,不仅能扎实掌握C语言,更能培养出优秀的编程思维,为未来的技术发展奠定坚实基础。学习过程中我会使用Git进行版本控制,建立代码仓库记录成长轨迹。

c07dawn的博客 47

计算机二级资料(公共基础知识、考纲、历年真题、VB、Java、Access、C/C++)---百度网盘下载

1.二级公共基础知识 链接:https://pan.baidu.com/s/1r7dNCxsIYmEWK4CmHEzVuQ 提取码:32hf 2.考纲方向 链接:https://pan.baidu.com/s/15lcMLAKwRii6BPAwFzU9Ng 提取码:1guy 3.数十套历年真题 链接:https://pan.baidu.com/s/1VebsmWc9Fclxgfl3vAuRMw 提取码:th0z 4.二级Visual Basic语言程序设计 链接:https://pan.baidu.c

要像蜗牛一样一步一步往上爬! 2万+

小白如何掌握C语言

**工具**:安装Visual Studio Code + C/C++插件,或Code::Blocks、Dev-C++。// 分配10个int的空间。- **控制结构**:`if-else`, `for`, `while`, `switch-case`。- **变量与数据类型**:`int`, `float`, `char`, 类型转换。- **简单Shell**:解析用户输入命令并执行(如`ls`、`cd`)。- **动态内存分配**:`malloc`、`free`,避免内存泄漏。

mkDNFkkSUV的博客 641

华为OD机试备考指南:多语言题库与实战技巧

算法与数据结构是编程面试的核心考察点,尤其在华为OD这类技术机试中占比超过75%。理解动态规划、DFS/BFS等经典算法原理,掌握不同语言在指针操作、递归处理等方面的实现差异,是应对ACM模式编程考试的基础。在实际工程场景中,这些技能直接关系到系统性能优化和复杂问题解决能力。本文以华为OD最新题库为例,详解Java/Python等语言在算法实现上的语法差异,并提供双机位环境下的编码优化技巧,帮助考生在标准输入输出限制下提升解题效率。特别针对字符串处理、数学建模等高频考点,给出多语言对照解决方案和性能调优方法

weixin_34279184的博客 431

CS 自学指南 · C 语言入门专题:Duke University Introductory C Programming Specialization 自学指南

**导读**:C 语言是后续操作系统、体系结构与编译原理等系统类课程的地基,而指针、内存管理又是 C 语言自学路上最大的拦路虎。本文面向准备入门 C 语言的读者,系统解析本项目 [docs/编程入门/C/Duke-Coursera-Intro-C.md](https://link.gitcode.com/i/de8c563b5b85a3eb5230c1a6b5f8ea58) 所推荐的 Duke(杜

gitblog_00099的博客 818

掌握C语言的核心控制结构:分支与循环语句详解

嵌套结构的学习曲线:语法掌握→逻辑构建→性能优化→设计模式刻意练习:完成至少20个嵌套结构练习题代码审查:学习优秀开源项目的嵌套处理(如Linux内核)模式积累:记录常见嵌套范式形成个人知识库记住:嵌套不是目的,而是表达复杂逻辑的手段。真正的高手能用最简洁的嵌套层次解决最复杂的问题,这正是编程之美的体现。掌握分支与循环语句是成为合格C程序员的必经之路。通过:理解不同结构的适用场景编写大量练习代码分析调试常见错误您将能游刃有余地构建复杂程序逻辑。

2302_80429594的博客 942
上一篇: 数据结构--栈
下一篇: 编译的基本知识
无聊的框框
博客等级 码龄3年 526粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值