
c语言
__N4c1__
rr
展开
-
c语言中的主调函数与被调函数
被调用的函数为被调函数,调用该函数的函数为主调函数。。这样说可能让人一脸懵逼举例: main() { float a,b; int c; scanf("%f,%f",&a,&b); c=max(a,b); printf(“Max is %d\n”,c); }int max(float x, float y) { float z; z...转载 2019-03-21 23:32:44 · 31507 阅读 · 9 评论 -
一道递归题:输入一个五位正整数,用递归来求该整数每一位上的数字的总和。
#include<stdio.h>#include<math.h>int cal(int i,int number);int cal(int i,int number);int main(){ int i,sum; scanf("%d",&i); printf("\n"); sum=cal(i,4); printf("最终的结果:%d",...原创 2019-04-12 19:00:47 · 900 阅读 · 0 评论 -
编程语言面向对象与面向过程
一开始作为一个计算机小白时,看到这两个专业名词是相当mengB的。而且一开始看大佬们的博客也看不懂,现在用小白的立场来说说。面向对象就是高度实物抽象化、面向过程就是自顶向下的编程。假设有一个问题,刷抖音。面向过程:打开手机,打开app,点击视频。面向对象:整个过程可以分开为1:玩的人。 2:手机。 3:app可以明显地看出,面向对象是以功能来划分问题,而不是步骤。可以看出,面向...原创 2019-04-09 20:57:30 · 7695 阅读 · 0 评论 -
位运算符
计算机中的数,都是按二进制存储的。而所谓位运算,就是对数的二进制位进行操作。位运算包括位逻辑运算和移位运算。1.位逻辑运算规则:只要把对应的整数的二进制形式列出来,然后按照上述规则,按照整数像小学时候学的加减法那样就可以算出对应的方法。2.移位运算符左移运算符运算规则:对运算符<<左边的运算量的每一位全部左移右边运算量表示的位数,右边空出的位补0。右移运算符运算规...原创 2019-04-14 17:40:15 · 251 阅读 · 0 评论 -
函数返回值的问题
如果主函数的类型是 int main(){},那么就需要 return 0;如果主函数的类型是 void main(){},那么就不需要返回值 ;上面的情况同样也适用于自定义的函数,但是自定义函数是返回一个具体变量或值。主函数结束的时候,写不写 return 也取决于不同的编译器,int 类型的主函数,建议还是写上。...原创 2019-04-15 15:12:49 · 379 阅读 · 0 评论 -
c链表 简单的学生成绩操作
今天又忘了链表简单的几个操作怎么写了,awsl,awsl。完整的链表操作代码:库文件:#include<stdio.h>#include<stdlib.h>结构体和全局变量:struct Student{ char cName[20]; int iNumber; struct Student* pNext;};int iCount;输入函数:...原创 2019-05-03 22:38:29 · 324 阅读 · 0 评论 -
指针的初始化和一些常见类型的指针
指针初始化时,“=”的右操作数必须为内存中数据的地址,不能够是变量,int*p=0;除外,该语句表示指针为空。在编译过程中,不能通过对没有初始化的指针的引用,没有初始化的指针,简称野指针,可能会乱指,指向一些无关紧要的区域问题是不大的,但是,如果指向一些重要的内存区域,就可能引起数据丢失。试想一下,你去遛狗,溜的一只是一只没经驯养的野狗,一只是被调教极好的贵族狗,哪个安全一点呢。ex...原创 2019-04-24 22:04:26 · 5043 阅读 · 0 评论 -
c语言随机函数的生成问题(了解种子函数)
当c语言用随机生成数,来做测试时,应该怎么做呢?????我们先引入两个库函数:#include<stdlib.h>#include<time.h>再引入两个函数:rand()srand()那么现在来解释下这两个东东有什么用:rand()可以理解成 生成数据的东西,吃粥还是吃饭就靠这东西了,可以看成是一颗种子突然从光秃秃的地上崩出来。srand(...原创 2019-05-08 17:22:54 · 2259 阅读 · 0 评论 -
0/1背包问题 动态规划法
动态规划法:Dynamic Programming,DP就像分治法一样可以将问题分为若干个子问题,但是呢,用动规法处理的子问题往往不是独立的,也就是说,子问题之间有相互联系,会相互影响的,参考Fibonacci数列,子问题之间是有联系的。一般来说,子问题的重叠关系体现在给定问题满足的递推关系中(称谓动态规划函数)通常来说,动态规划法将每个子问题求解一次并将其保存在一个表格中,当程序需要调用这...原创 2019-05-06 22:03:08 · 1210 阅读 · 0 评论 -
win10 vc++6.0 2019下载实测有效
首先,我们先下载安装包。链接:https://pan.baidu.com/s/1B8pzo3Ivs_WkeoAQfJqhWA永久有效下载完成后,双击安装,注意:一定要是默认路径,千万不要修改。直到安装完成,和普通安装软件一样。然后完成,会直接运行vc++6.0,有的win10可以运行,但有的不行。不行的看下面,可以运行的一边玩去。我们发现是无法运行的,会出现提醒下一步,我们来替换掉一...原创 2019-05-14 12:26:27 · 6682 阅读 · 1 评论 -
DEV C++编写程序出现 [errror]Id returned 1 exit status错误可能出现的原因
可能有如下原因:1、库函数拼写错误。如:printf,scanf,等2、定义的函数名在调用时,函数名拼写错误3、在执行函数时可能函数体本身的问题4、关于其他人说的有程序在运行...原创 2019-05-22 12:06:45 · 5999 阅读 · 1 评论 -
位运算(C语言)详解
首先来引入位域这概念,下面是常见位运算符号:注意结合性和优先级,考试会考。几个例子:左右移运算符:原创 2019-05-27 20:39:21 · 1454 阅读 · 0 评论 -
1e-5的含义 c语言条件判断中的精度控制
fabs(a[i]-x)<1e-5,表示a[i]-x的绝对值小于10^-5。通常用于条件判断语句中,进行精度控制。fabs是C语言中求绝对值的函数。函数原型:double fabs(double x);功 能:计算x的绝对值返 回 值 :计算结果1e-5是C语言中一种计数形式,1表示尾数,e表示阶码标志,-5表示阶码。1e-5表示1*10^-5...原创 2019-05-27 20:53:18 · 29384 阅读 · 0 评论 -
c
我们要注意,c的函数的返回值,与那个函数改变数据的差异。可以返回3,啊呀,可能是我比较笨,把这个搞混了,也表达不清楚f但不用指针时,不能令变量的值变。这里是不用返回的意思,就是直接一个函数后,什么都不干,形参是int等等。...原创 2019-04-01 16:57:04 · 181 阅读 · 0 评论 -
free()出错
malloc后free出错总结:1、malloc与free配套使用。不要跨进程分配和释放;2、指向malloc申请的堆内存的指针,在运用过程中千万不要另外赋值,否则同样导致内存泄露(我曾经犯过这样的错误)3、malloc后,实际使用时指针长度超过了你申请的范围。再去free时肯定出问题。4、改变指针的初始指向地址。...原创 2019-04-01 19:41:21 · 2813 阅读 · 0 评论 -
一级指针和双重(二级)指针作为函数参数传递
今天做了一条让我懵逼的题,让我重新认识到指针。函数参数传递的只能是数值,所以当指针作为函数参数传递时,传递的是指针的值,而不是地址。当指针作为函数参数传递时,在函数内部重新申请了一个新指针,与传入指针指向相同地址。在函数内部的操作只能针对指针指向的值。注意!!!是重新申请了一个指针,与main中的指针是不一样的!!!!!但他们指向同一个值的地址,因此,对函数中的指针搞的时候,能改变了那个值,...原创 2019-04-01 20:12:42 · 648 阅读 · 0 评论 -
关于字符数组的赋值和字符串赋值以及编译错误:variable-sized object may not be initialized
字符串其实就是特殊的字符数组,只是同样的输入时字符串后面系统会自动加上"\0"而已罢了。学了这么久的C语言,突然发现连字符赋值都出错,真的很痛哭流涕。先给出一段我写错的代码。char a[5];a="str"; 这样是不行的!a作为数组名表示数组在内存中的地址,a指向的是地址,5个字符所占的地址,但此时又把str赋值给它,a的指向就会混乱,这是极其危险的,所以编译器会禁止。再举个例...原创 2019-03-16 00:28:47 · 8782 阅读 · 0 评论 -
VC++6.0 VC: error C2143: syntax error : missing ';' before'type'
老年编译器,学校要用来考试的,才去熟悉一下。与win10极其不兼容(可能是我找不到合适版本,手动滑稽),于是就开了个虚拟机跑win7.按书上打打简单代码熟悉一下。有一段在别的IDE中都可以过的总是过不了。找了很久才发现了原因。代码如下: double s; s=0.0; int i=1;总是报出 C:\Users\linshi\Desktop\实验报告 vc++\exp622.c(7...原创 2019-03-03 22:14:53 · 2603 阅读 · 1 评论 -
c中scanf函数用法
初看scanf时,觉得还是蛮简单的,但当深入学习后,才发现里面有很多小细节值得我们去注意。首先,看看scanf的基本格式:scanf("<格式化字符串>",<地址表>)scanf()函数返回成功赋值的数据项数,出错时则返回EOF。我们输入的数据大体上可以分为几个类型::格式化说明符空白符*****(空白符包括 空格,制表符,换行符,回车符和换页符)*****非...原创 2019-04-04 20:40:29 · 505 阅读 · 0 评论 -
gets和scanf函数
小小的总结:gets()会清缓冲区。scanf()不会清缓冲区。scanf("%s",&str),这里指定了 %s的格式,那就会加‘\0’,这是编译器做的,是字符串类型特有的,其他的输入都不加任何东西gets()也会自动帮你加的!...原创 2019-04-04 20:42:16 · 230 阅读 · 0 评论 -
-1.#IND00, 1.#INF00 :浮点数运算时的报错。
这是我在c浮点数编程常见的错误输出。#INF :这个值表示“无穷大 (infinity 的缩写)”,即超出了计算机可以表示的浮点数的最大范围(或者说超过了 float或者double 类型的最大值)。例如,当用 0 除一个整数时便会得到一个1.#INF / inf值;相应的,如果用 0 除一个负整数也会得到-1.#INF / -inf 值。解决方法:观察程序中的/号,观察是否有一步除...原创 2019-04-10 12:33:27 · 11272 阅读 · 0 评论 -
脚本语言与编程语言的差别
脚本语言(JavaScript,VBscript等)HTML和C,C++,Java,C#等编程语言。那么脚本语言和编程语言之间的差别有哪些呢?编程语言:是用来定义计算机程序的形式语言,是一种将程序员所定义的代码,编译即翻译成计算机所认识的二进制代码的工具,所以编程语言需要编译器。脚本语言是为了缩短传统的编写-编译-链接-运行过程而创建的计算机编程语言。最简便的区别:脚本语言因为不需要编...原创 2019-04-06 21:14:39 · 4081 阅读 · 5 评论 -
对于scanf缓冲区的理解 %c和其他的%类型
前几天发过个scanf()的应用,但写的太散了。新手在用scanf()时遇到的最大问题无疑就是这个缓冲区,再精炼一点就是%c,和其他格式化说明符也就是一个笨方法:当看到%c时,就要考虑前面是否有一处输入会输入空白符(回车,空格等),若有,有三种较快解决方法1:在%c前加空格2:fflush(stdin) 不会自行百度。(这是个万能无脑的方法,死怼就行)3:getchar()其他...原创 2019-04-07 19:27:58 · 247 阅读 · 0 评论 -
c语言冒泡排序与二分法排序
1.冒泡排序:将元素进行两两比较,大的向后排。外层循环:N-1(控制比较的轮数)内层循环:N-1-i(控制每轮比较的的次数,i代表外层循环变量)如有四个元素,外层3层。1时要比三次,2时比两次,3时比一次,4时不用比了。2.二分法查找(折半查找):前提查找的元素必须有序。将待查找的元素与数组中的中间位置元素进行比较。将待查找的数字与数组中的中间位置进行比较。如果比中间位置的元素值小,...原创 2019-04-07 21:01:23 · 2439 阅读 · 0 评论 -
C转义字符
前几天做题的时候,被一个\b恶心到了,重新看一下。\b:回退:向后退一格:反斜杠\‘:单引号":双引号?:问号\ddd:三位八进制\xhh:二位十六进制所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加”\”来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。在学...原创 2019-04-08 15:20:28 · 1454 阅读 · 0 评论 -
c语言结合性问题
C语言运算符优先级自行百度即可。左结合就是从左到右结合,右结合也同理。大多数运算符结合方向是“自左至右”, 即: 先左后右, 例如a- b+c, b 两侧有- 和+两种运算符的优先级相同, 按先左后右结合方向, b 先与减号结合, 执行a- b 的运算, 再执行加c 的运算。除了自左至右的结合性外, C 语言有三类运算符参与运算的结合方向是从右至左。即: 单目运算符, 条件运算符, 以及赋...原创 2019-04-08 15:41:47 · 3623 阅读 · 0 评论 -
C语言自增自减运算 恶心的问题
c语言中,自增(++)和自减(–-)运算是很有c语言特色(恶心)的一种运算符。可以按教科书那种记:b = a++ 是先赋值后运算,即先 b=a,然后 a++。b = ++a 是先运算后赋值,即先 ++a,然后 ++a。例子:好好想一下即可。注意结合性,从右边到左边。自增:后缀:同表达式中Turbo C的情况相同:先统一取值后依次自增,如:int a,i=5; a=i+++i+++...原创 2019-04-08 16:49:51 · 4665 阅读 · 4 评论 -
[Error] invalid operands of types 'float' and 'int' to binary 'operator%' c错误
错误提示告诉你,% 的所有两边,一个是整形(int),一个是浮点型(float),类型不匹配报错,所以你把应该把 其中一个变量定义成整形。原创 2019-04-12 13:10:12 · 30810 阅读 · 0 评论 -
宏定义(无参宏定义和带参宏定义)
宏定义是比较常用的预处理指令,即使用“标识符”来表示“替换列表”中的内容。标识符称为宏名,在预处理过程中,预处理器会把源程序中所有宏名,替换成宏定义中替换列表中的内容。常见的宏定义有两种,不带参数的宏定义和带参数的宏定义。无参宏定义无参数宏定义的格式为:#define 标识符 替换列表替换列表可以是数值常量、字符常量、字符串常量等,故可以把宏定义理解为使用标识符表示一常量,或称符号常量。...转载 2019-06-01 10:04:38 · 3288 阅读 · 0 评论