![](https://img-blog.csdnimg.cn/b710579563934a40a3d6a657b08aeb42.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++
文章平均质量分 76
c/C++
吉大秦少游
吉林大学硕士,研究兴趣为芯片数字设计
展开
-
C/C++学习目录
文章目录面向对象面向对象面向对象编程中多态的快速理解原创 2019-10-10 09:53:35 · 563 阅读 · 0 评论 -
c语⾔的\r与\n在linux与windows下的区别
看c model,打印时遇到了\r的问题,整理如下:windows下\r表⽰光标会移动到开头然后覆盖输出,\b是会回退⼀格然后输出。\b和\r比较常用的作用是实现进度条的打印。实例1:#include<stdio.h>#include<stdlib.h>void main(){ int i,j; for(i=0;i<5;i++){ printf("abc\rde\n"); for(j=0;j<5;j++) printf("张无忌赵敏\r周芷原创 2022-05-25 21:47:18 · 412 阅读 · 1 评论 -
C语言指针的总结
文章目录1 指针实例1.1 实例11.2 实例22 指针运算2.1 *p++的作用2.2 0地址2.3 指针的类型转换2.4 指针能做的事情2.5 动态内存分配2.6 函数间传递指针需要注意的3 指针的重要作用3.1 指针允许你以更简洁的方式引用大的数据结构3.2 指针使程序的不同部分能够共享数据3.3 利用指针,能在程序执行过程中预留新的内存空间3.4 指针可以用来记录数据项之间的关系1 指针实例1.1 实例1 #include <stdio.h> main()原创 2022-04-20 13:53:24 · 339 阅读 · 0 评论 -
带图形库函数的C/C++编译软件
最近在《C语言的科学与艺术》中学到了图形库函数,无论用DEVc++还是VC6.0++,都没有图形库以及图形库函数。所以即使画一个简单的直线都成问题。所以,花了点时间去找能够在c语言编辑器的图形库头文件,网上说都没有支持DEVc++和VC6.0++的图形库,找了半天,只有一种方法:EasyX 是针对 C++ 的图形库,可以帮助 C++语言初学者快速上手图形和游戏编程。比如,可以用 ...原创 2018-04-10 22:51:34 · 2358 阅读 · 0 评论 -
指针里的*符号是要靠近变量类型还是要靠近变量名称?
在C语言中只要使用指针,必然用到*运算符。然后经常会看到不同的书中*有靠近变量类型的,有靠近变量名称的,很迷惑这两者有什么区别。后来上网查证了一下,总结如下:总体来说,*靠近哪一个都可以,编译器都会认为是指针变量,所以本质是一样的。但是两个形式有不同的优点。int* p;这个可以理解为p是int类型的指针。而下面这个int *p;可以理解为有一个指针p是int类型,实际上...原创 2018-06-18 10:35:42 · 11087 阅读 · 5 评论 -
分数比较
题目内容:本题要求编写程序,比较两个分数的大小。输入格式:输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是int类型范围内的正整数。输出格式:在一行中按照“a1/b1 关系符 a2/b2”的格式输出两个有理数的关系。其中“>”表示“大于”,“<”表示“小于”,“=”表示“等于”。注意在关系符前后各有一个空格...原创 2018-06-24 16:37:16 · 1242 阅读 · 1 评论 -
接口设计的一般原则
在C语言中,使用函数和过程(不返回值而起到作用的函数称为过程)降低一些复杂性。接口提供了类似的作用,但它处于一个更高的层次上。函数是让访问它的程序实现某一功能。接口是让它的客户访问一组具有抽象行为的函数。接口对程序设计的简化程度很大程度上依赖于它的设计。构造一个接口的挑战在于接口的设计而非编码!一般接口设计应该具有以下特性:同一性一个接口应该定义一个与某一明确的主题一致的抽象,如果...原创 2018-05-05 00:31:53 · 2512 阅读 · 0 评论 -
动态储存结构体数组
在实际的编程中,数据的储存是常常遇到的,数组作为最简单实用的数据结构,常常被使用,而在c语言中数组是静态的,不允许静态的建立数组,而在实际应用中,如果固定数组的大小,在不知道输入数据的数量时,往往会造成数组定义过大,产生浪费;或是数组定义过小,不足够储存数据的问题。除此之外,结构体能储存大量的信息且方便使用,那么可以将二者结合起来,通过动态的为结构体分配内存,来达到一个不限定大小的结构体数组用...原创 2018-06-24 15:32:05 · 8965 阅读 · 3 评论 -
最小包围矩形
最小包围矩形(10分)题目内容:给定一组二维坐标,表示直角坐标系内的一个多边形的连续的顶点的坐标序列。计算能包围这个多边形的平行于坐标轴的最小矩形,输出它的左下角和右上角的坐标。输入格式:第一行是一个正整数n表示顶点的数量,第二行是n组整数,依次表示每个顶点坐标的x和y值。输出格式:四个整数,依次表示所计算的矩形的左下角的坐标的x、y值和右上角坐标的x、y...原创 2018-06-24 12:52:23 · 2390 阅读 · 0 评论 -
C语言指针类型重要性
C语言中,带上类型运算是一个很好的习惯。我们来看一道题目。若定义char a[3][3]={“ad”,“ce”,“fb”}, *s = (char *)a;那么下列表达式语法正确,并且其值与a[2][1]相等的表达式是_______。 A.*(a+3)B.*(*a+5)C.s[2][1]D.*++s-2答案是D这题设计的挺巧妙,其中有个理解的重点...原创 2018-06-23 20:04:50 · 5091 阅读 · 2 评论 -
C语言中 ++ 和 * 的优先级
本来我想当然的以为在C语言中指针预算符的优先级肯定比++高,后来在写程序时发现并没有这么当然。在C语言中,自增运算符++和指针运算符*的优先级关系为左++ > * >右++比如++ *i 相当于 ++ (*i) ,指针i对应的变量+1。*i ++ 相当于 * (i++) ,指针i,也就是地址值 +1(其实是加1个变量所占的地址空间)#include<st...原创 2018-06-23 18:24:30 · 47395 阅读 · 13 评论 -
排序-翁恺《C语言程序进阶》
题目内容:程序读入一个正整数n(0<n<=100000),然后读入n个整数,均为32位下的整数。输出对这个整数排序后的结果,每个整数后面有一个空格。输入格式:一个表示个数的正整数n,和n个整数,以空格间隔。输出格式:排序后的n的整数,每个整数后面有一个空格。输入样例:6 2 23 54 12 6 8输出样例:2 6 8 12 ...原创 2018-06-21 11:18:05 · 506 阅读 · 0 评论 -
排序算法之选择排序
选择排序思路:每次从后面开始遍历,将遍历之后的最小值放在a[0],紧接着再从最后开始遍历,将次最小值排在a[1],依次循环。//给定数组选择排序#include <stdio.h>int main(){ inti,j,small,index; inta[10]={1,23,41,31,45,767,45,90,6,...原创 2017-10-04 17:44:27 · 245 阅读 · 0 评论 -
如何自定义C语言.h头文件?
在项目实践中,如果一个.c文件程序过长,可以把文件中的函数单独放在一个头文件中,然后在.c中包含该头文件即可。这两天,根据所看的书《C语言的科学与艺术》和网上的资料,发现实际上有两种写法。写法1:在.h头文件中就包含函数的实现,这种头文件实际上是把函数放在一起,便于管理而已。这种情况下只有一个.h文件。写法2:在.h头文件中只包含一些函数的声明,没有具体的实现。函数的实现放在另外一...原创 2018-05-04 13:38:47 · 46322 阅读 · 8 评论 -
C++的几种特殊函数:带默认形参值的函数,重载函数,内联函数
C++中有几种常见且重要的特殊函数,查阅了相关资料,整理如下:带默认形参值的函数函数可以带默认形参值,即在函数的某些变量中没有数据传入时,使用默认值,如有数据传入,再使用传入值。实例:#include <iostream>using namespace std;void fun(int p=10); //指定文件作用域的形参默认值为10int main(){ ...原创 2019-09-15 10:25:11 · 564 阅读 · 0 评论 -
C++和Python的正则表达式
正则表达式在字符匹配上有很巧妙的作用,特别是字符串形式或者结构的检查方面。C语言没有源生的正则表达式库函数或者头文件,而C++和Python具有。C++C++的正则表达书头文件是,这是regular expression正则表达式的缩写。具体的应用实例:例1:#include <iostream>#include <regex>using namespace...原创 2019-09-13 20:13:54 · 861 阅读 · 0 评论 -
C/C++数组的申请方式总结
C语言中数组的申请方式有两种:静态申请固定大小的空间、动态申请内存空间。动态申请需要用到malloc函数,记得要释放。#include <stdio.h>#include <stdlib.h>int func(int *p,int size){ return *(p+2); }int main(){ int array[10]={1,2,3,4,5}; ...原创 2019-09-11 22:19:05 · 4192 阅读 · 0 评论 -
编程面试题总结
文章目录1、堆和栈的区别2、引用与指针的区别3、malloc()申请的内存空间能不能在函数中返回1、堆和栈的区别这里的堆和栈指的是内存里面的堆区和栈区。C语言的内存模型可以分为5类:栈区、堆区、静态区、常量区、代码区。栈区stack:存放函数的参数值,局部变量等等。由编译器自动分配和释放(可以回忆编程的时候好像局部变量不需要特别的申请内存和释放),通常在函数执行结束之后释放。其操作方式类似...原创 2019-09-09 20:20:15 · 980 阅读 · 0 评论 -
C语言实现返回字符串函数的四种方法
前言C语言返回字符串函数共有四种方式,分别如下: 使用堆空间,返回申请的堆地址,注意释放 函数参数传递指针,返回该指针 返回函数内定义的静态变量(共享) 返回全局变量下面来看看详细的介绍其实就是要返回一个有效的指针,尾部变量退出后就无效了。使用分配的内存,地址是有效char *fun() { char* s = (...原创 2018-04-15 17:14:42 · 3973 阅读 · 0 评论 -
C语言编程练习题库
1. 题目:写一个程序,判断两个浮点数是否足够精确。/* File name:ApproximatelyEqual Function: ensure the accurcy of two numbers.|x-y|/min(|x|,|y|)<e Time: 2018.04.07 edited by QJX */#include <stdio.h>#incl...原创 2018-04-07 15:08:18 · 34698 阅读 · 0 评论 -
输出1900年之后任意一年的日历
题目:输出1900年之后任意一年的日历。原题出自《C语言的科学与艺术》P132/* File name:calendar.c Function:generate a calendar for a year Time:2018.04.08.00:02 the source code from book《The art and science of C》,eric ro...原创 2018-04-08 00:11:00 · 1785 阅读 · 0 评论 -
“ 输出1900年之后任意一年的日历 ”完整编程思路!
采用自顶向下、逐步求精的设计方法。这种分解问题的思想很重要,可以帮助我们更好地分析疑难问题,特别是对于工程项目,较多的功能和耦合会让问题无从下手,只有采用自顶向下、逐步求精、分而治之的思想才能很好地解决这类问题!题目:根据用户输入年份,显示该年12个月的日历,并对应具体的星期几。分析:首先根据问题处理的思路,可以分为三个过程:UserInput,Process,Print。User...原创 2018-04-08 01:48:22 · 2859 阅读 · 0 评论 -
查找变量类型的范围和字节大小
编程时经常需要知道各种字符型变量、整型变量的范围和占用的字节大小,各种编译器可能会略有区别,因此可以通过将头文件包含进来进行查找。如下:#include <stdio.h> #include <limits.h>main(){ int a; printf("The value of INT_MAX is %i\n", INT_MAX); print...原创 2018-04-10 08:52:45 · 715 阅读 · 0 评论 -
变量私有化和函数私有化,以及私有化的好处
变量私有化为什么变量要私有化?在一个结构良好的程序中,独立的模块之间通过在模块间传递参数的函数调用来交换数据。在大多数情况下,尤其是刚开始养成程序设计习惯的时候,最好确保每个全局变量不会被一个以上的模块引用。为了避免两个模块引用同一个全局变量的可能性,可以将变量私有化。变量如何私有化?变量私有化是在声明前用关键字static,如:static int cpos;这个声明定...原创 2018-05-09 12:35:49 · 1800 阅读 · 0 评论 -
对结构的探究
对结构,我们没有像对数组那样使用sizeof和&这两个工具来探究一下。我们把这个任务留给你。建议可以做这么几个方向的探究: 不同的成员变量组合,结构的sizeof如何,是否正好等于全部成员的sizeof之和? 结构内的成员之间是否连续,相邻的成员的地址的差是否等于对应的成员的sizeof? 第一个显然是不等于;第二个说明内存也不是连续的。那到底是怎样存储的呢?...原创 2018-05-24 11:01:17 · 846 阅读 · 0 评论 -
结构和数组的联系与区别
数组和结构相似的地方是都不再是单一的原子类型,而是一个集合。区别在于数组是相同类型元素(元素可以是原子类型的整型、浮点型、字符型或者结构体、数组等)的集合,而结构是不同类型元素(元素可以是原子类型的整型、浮点型、字符型或者结构体、数组等)的集合。所以结构无所不包,当然结构中也可以定义相同类型的元素,而数组则不然,从这个角度,结构体的普世意义更为广泛,但是毫无疑问,如果结构定义为成员类型是相同的,那...原创 2018-05-24 09:35:42 · 9851 阅读 · 1 评论 -
排序算法之快速排序
快速排序思想:快速排序的思想更为深刻,随意选取一个数(一般选择a[0])作为基准值,然后在数组的左右两边设置两个哨兵,先让右边的哨兵进行巡逻,找到比基准值小的数;再让左边的哨兵进行巡逻,找到比基准值大的数,将两者交换。这里注意要先让右边的哨兵先出动。左右哨兵都找到后将找到的数据调换,就这样左右两个哨兵一直寻找一直调换,最后左右哨兵会相遇。由于总是右边的哨兵先寻找,所以最后找到的数字一定是比起始...原创 2017-10-04 17:43:08 · 492 阅读 · 0 评论 -
结构体和联合体的区别——全网最佳文章
目录0. 联合体与结构体1. struct的巨大作用2. struct成员对齐2.1 自然对界2.2 指定对界2.3面试题的解答3. C和C++之间结构体的深层区别4. struct编程注意事项0. 联合体与结构体联合体用途:使几个不同类型的变量共占一段内存(相互覆盖)结构体用途:把不同类型的数据组合成一个整体-------自定义数据类型...原创 2018-12-20 21:52:04 · 666 阅读 · 0 评论 -
如何编写有多个返回值的C语言函数
编写有多个返回值的函数是所有C语言教材里均没有提到的知识点,但在实际教学与应用的过程中我们都有可能会遇到这样的问题。有学生也尝试了不少方法:如把多个需要返回的值作相应的处理后变成一个可以用return语句返回的数据,再在主调函数中拆开返回的数据使之变成几个值;或者把需要返回多个值的一个函数分开几个函数去实现多个值的返回。这些方法虽然最终都能实现返回要求的多个值,但从程序算法的合理性与最优化方面去考...原创 2018-06-24 21:55:58 · 3715 阅读 · 0 评论 -
素数的几道小题(c语言版本)
求素数一直以来是c语言的经典题目,下面是PAT做题过程中想到的几道素数小题,整理如下:1 求素数的两种方法1.1 判断n是否能被1~n-1整除#include<stdio.h>int main(){ int i, n; scanf("%d", &n); for (i = 2; i < n ; i++) { ...原创 2018-10-21 09:31:56 · 746 阅读 · 0 评论 -
作用域规则
每个代码块都有自己的命名规则。外层代码块的名字总是有效的,除非内层的代码块对它进行了重新定义。如果内层代码块的名字进行了重新定义,那么在这个内层代码块中,外层代码块的名字被隐藏或屏蔽。代码块可以嵌套多层,其深度取决于系统限制。 #include <stdio.h> int main() { int a=1,b=2,c=3; p...原创 2018-10-22 15:44:28 · 201 阅读 · 0 评论 -
scanf("%*s")
scanf("%*s"),其中*是表示输入的"以空格符结束的字符串"不传入任何变量,也就是舍弃的意思,因为这里sanf函数读入的是不正确的数据,当然就需要舍弃了,以免影响下一次的读入如果我没猜错的话 楼主现在正在看C Primer Plus(第五版)吧因为我依稀记得这个代码出自这里解释:scanf("%*s")首先我们跳到代码:(status = scanf("%d", &cod...原创 2018-10-22 16:02:15 · 8323 阅读 · 8 评论 -
Time Limit Exceeded错误的原因
目录1.没有循环终止条件。2.函数调用超时。3.程序算法不够优化。4.程序本身存在问题。很多时候我们看到Time Limit Exceeded马上会想到一定是算法太慢,不符合要求,其实往往还可能遇到一种情况是没有判断输入结束,不然系统一直在那等你的输出结果,发现你一直不输出,或者程序一直不退出,所以给Time Limit Exceeded。比如让你输入整数n,然后输入n...原创 2018-10-23 09:49:19 · 13205 阅读 · 1 评论 -
PAT乙级踩过的坑
1、判断多个数字是否相等?不能使用下面这样的代码:if(a==b==c==d){……}编译器看不懂这样人类的表示方法,只能每两个进行判断:if(a==b&&b==c&&c==d){……}2、DEVc++ 中scanf和printf 的double类型与int不同int i;scanf("%d",&i);printf(...原创 2018-10-24 08:12:33 · 616 阅读 · 0 评论 -
c的qsort,C++的sort,python的sort和sorted
c的qsort编程中排序函数可以自己写,也可以调用头文件中的库函数。c编程中如果需要使用排序函数,需要调用<stdlib.h>头文件。排序函数是qsort,也就是快速排序。具体函数语法如下:#include<stdio.h>#include<stdlib.h>int cmp(const void*a,const void*b)//用来做比较的函...原创 2018-10-29 19:29:44 · 826 阅读 · 0 评论 -
整数四舍五入的两种方法——c实现
四舍五入是c语言编程经常使用的函数。这里记录用整数输入进行四舍五入的判断方法。1、使用条件表达式实际上只需要观察四舍五入之后的余数,如果余数大于0.5,则进1,反之保留整数。这里可以用条件表达式。假设输入的int整数a,int整数b是a四舍五入之后的整数。相应程序如下:int b=(a-2*(a/2))>=1?a/2+1:a/2; //四舍五入上面方法易于理解,使用条件...原创 2018-11-01 10:08:21 · 23454 阅读 · 0 评论 -
puts()函数详解
功能puts()函数用来向标准输出设备屏幕输出字符串并换行。具体是把字符串输出到屏幕上,将‘\0’转换为回车换行。调用方式是:puts(str)。其中str是字符串数组名或者字符串指针。实际上,数组名就是指针。用法int puts(const char *string)puts()函数包含在头文件<stdio.h>中实例1、输出字符串数组#includ...原创 2018-11-14 22:47:52 · 54259 阅读 · 6 评论 -
debug的小工具system-pause
从程序中发起系统命令行调用,执行命令:pause。作用和效果就是dos下的pause。system("PAUSE"); 和system("pause"); 作用和效果一样,因为dos命令是不区分大小写的。system("PAUSE") 是暂停的意思,等待用户信号;不然控制台程序会一闪即过,你来不及看到执行结果。扩展资料:system是C函数库stdlib.h、pr...原创 2018-11-15 09:37:50 · 1324 阅读 · 0 评论 -
传入函数的数组和指针之间的关系
函数参数表中的数组实际上是指针sizeof(a)== sizeof(int*)但是指针传进函数之后,可以用数组的运算符[]进行运算。#include <stdio.h> void minmax(int a[],int len,int* min,int* max); main(){ int a[]={1,2,3,4,5,6,7,8,9,6,5...原创 2018-06-24 20:28:35 · 3065 阅读 · 3 评论 -
指针的应用场景
场景1:函数需要返回多个值时,通过把地址传入函数,修改地址,可以使传入的参数的地址发生变化。比如: #include <stdio.h> void swap(int x,int y); main() { int x=5,y=6; swap(x,y); printf("%d%d",x,y); }...原创 2018-06-24 19:42:37 · 1765 阅读 · 0 评论