自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

无烬幻空的博客

计算机专业小白的学习过程

  • 博客(63)
  • 收藏
  • 关注

原创 内部函数和外部函数

我们之前了解到,变量有着作用域,有局部变量和外部变量之分。那么相对于函数而言,也有着内部函数与外部函数的区别。在程序中,有的函数可以被本文件中的其他函数调用,也可以被其他文件中的函数调用但是有的函数却只能被本文件中的其他函数调用,不能被其他文件中的函数调用。我们定义一个函数的目的就是为了让它被另外的函数调用,那么在不加声明的情况下,这个函数就是全局的,也就是说该函数既可以被本文件中的函数调用,也可以被其他文件中的函数调用。这里我们就需要考虑一些情况,

2023-11-20 17:17:53 121

原创 变量的声明与定义的关系

对于外部变量的声明,就是声明该变量是一个已在其他地方定义的外部变量,只是为了扩展其作用域。关于声明和定义,我们一般是认为他们是一样的,这就出现了混淆,我们这里来分析一下。声明部分的作用就是对有关的标识符(变量,函数,结构体,共用体等)的属性进行声明。在函数中对变量的声明只要没有用extern来声明,那么他就是定义。但是他的声明却可以有很多次,既可以在函数内,也可以在函数外。int a,这是一个定义性声明,对函数的类型也进行了定义。而在函数中对其他函数的声明就不是定义,比如被调用函数。

2023-09-23 19:00:20 144

原创 变量的存储方式与生存期

因为程序运行时,调用函数后他的值并不会消失,也就不需要再一次赋初值。这个程序就可以用来求阶乘,它的这个被调用函数里面就是根据n的值来确定被调用的次数,而f是一个静态局部变量,这样,就可以从1累成到n,也就实现了阶乘的运算。我们在程序的整体来看,A,B,C是在函数的外部定义的外部变量,常规来说,他的作用域就是从定义处开始到程序结束,也就是说上面的主函数是不可以用这三个变量的。我们可以看出,每一次循环结束,b的值都会消失,在调用时,重新赋值为0,而c的值不会随着调用结束而消失,这就是static的作用。

2023-09-23 14:56:35 187

原创 局部变量与全局变量

也就是说只有在本函数内部才可以引用它们。同理,

2023-09-16 12:28:20 199

原创 数组作为函数参数

X调用有参函数时,需要提供实参,实参可以是常量、变量或表达式。数组元素的作用与变量相当,一般来说,凡是变量可以出现的地方,都可以用数组元素代替。因此,数组元素也可以用作函数实参,其用法与变量相同,像形参传递数组元素的值。此外,数组名也可以用作形参和实参,传递的是数组第一个元素的地址。

2023-07-12 18:49:49 4953

原创 函数的递归调用

因为int类型的存储单元有限,更大的结果就不准确,上面的20!这里是再调用函数f时,其内部有一次调用了f函数,这五个就是直接调用本函数。在调用一个函数的过程中又出现直接或间接的调用该函数本身,这张图里的第一个就是直接调用,第二个是间接调用。为了出现有限次的调用,我们使用if语句来控制。考虑了所有的情况,首先是n的正负,附属不要。有5个学生坐在一起,问第五个学生的年龄。这两种递归调用都是无终止的自身调用。在这个程序里面,主要是函数部分的定义。第三个学生比第二个学生大两岁,第二个学生比第一个学生大两岁,

2023-05-15 13:45:38 70

原创 程序:求四个实数中最大的数(嵌套调用)

这个就是嵌套调用,看程序还是很好理解的。主调函数先调用max4,将abcd的值给了形参,在一个函数中不能再定义另一个函数,既不能嵌套定义。我们之前说了,函数之间是平行关系。之后max4调用max2,但可以进行嵌套调用。

2023-05-15 11:56:13 153

原创 调用函数

我们定义函数的目的就是调用此函数。

2023-05-15 11:37:44 2895

原创 定义函数

1.定义无参函数这个函数的一般形式为:类型名 函数名()函数体或类型名 函数名(void)函数体函数名后面括号内的void表示空,即函数没有参数。2.定义有参函数我们来看一个max函数:int z;z = x>y?x : y;return(z);这个就是一个有参函数,求的是x和y中的最大值。我们在调用这个函数时,主调函数将x和y值传递给此被调用函数,x和y是形式参数。

2023-05-15 10:28:18 151

原创 调用函数的注意事项

(1).库函数,系统提供的,可直接使用,不同的C语言编译系统的库函数某些是不同的。1.C程序的执行是从main函数开始的,如果在main函数中调用其他函数,在调用后流程返回到main函数,在main函数中结束整个程序的运行。2.所有函数都是平行的,即在定义函数时是分别进行的,是互相独立的。一般情况下,执行被调用函数时会得到一个函数值,供主调函数使用。无参函数可以带回或不带回函数值,但一般不带回的居多。一个函数并不从属于另一个函数,即函数不能嵌套定义。在调用无参函数时,主调函数不向被调用函数传递数据。

2023-05-15 00:14:39 582

原创 程序:简单的函数调用

这个是为了对用户定义的函数(print_star函数和print_message函数)进行声明,指定其类型为void。在主函数中,只要我们声明了其他函数,并且对其他函数进行了定义,就可以对函数进行调用。分别为主函数,print_star函数和print_message函数。void是空的意思,所以这种声明的意思就是函数无类型,即无函数值。在程序中定义的函数的命名并无固定形式,但要做到容易记和理解。这里面我们将主函数看成是一个母体,另外两个函数看成是零件。我们需要注意,对函数的声明需要在main函数后面。

2023-05-15 00:02:32 79

原创 程序:找出三个字符串的“最大者”

这里面的strcmp和strcpy函数都是之前讲过的,分别是字符串比较函数和字符串复制函数。先拿第一行和第二行进行比较,把大的复制给string,然后把第三行和string进行比较。在这里,我们可以设定一个二维数组,大小为3*20,即有3行20列,每行存放一个字符串。这里是设定了一个三行的字符数组,我们其实可以设定三个字符数组。这个程序从总体上看是非常简单的,就是对三串字符进行了比较。这个程序的最后还有一个else的情况,上面没有写入。这个程序利用了之前的字符串的大小比较。把最大的复制给string。

2023-05-14 23:39:34 1189

原创 程序:求一行字符中有几个单词

第一个检测的是I,这个不是空格,但是word值是0,那么就有else if后的运算,之后word变为1,第二个元素是空格,word再次变为0,集训进行else if的运算,word再次变为1,之后知道下一个空格,word才变为0,num再次加1,这样可以计算出值为4。这个不同之处在于开头是一个空格,但这个并不影响,开头是空格,word值为0,num+1,遇到I,word变1,之后在遇到空格,word变0,num+1.如是进行,结果还是4.word无非就两个值,0和1,这很好的界定了num的增长。

2023-05-13 19:29:21 35

原创 使用字符串处理函数

这里我们介绍几种专门处理字符串的函数。

2023-05-13 18:57:42 344

原创 字符数组

用来存放字符数据的数组是字符数组。在字符数组中的一个元素内存放一个字符。如:char c[5];cc[0]=‘e’;c[1]=‘a’;c[2]=‘b’;c[3]=‘c’;c[4]=‘d’;上面定义的就是字符数组c,其内元素为eabcd。字符是按照整数存放的,因此也可以用int定义字符数组,如:int a[10]

2023-05-13 14:32:06 98

原创 程序:求矩阵中最大的数

打擂台,固定参赛人数,先选一个人上擂台,之后逐个进行比武,输者淘汰。最后留下的就是最强的。有一个3*4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。一直比较到最后一个元素,稀释就能求出max的值,而对应的行和列已经被记录。每次循环都拿a[i][j]来与max进行比较,大的数变为max,i对应的是行,有三行,i就循环三次,这个是外循环。同时拿第一行第一列的元素作为max,最大值。这个我们用打擂台算法,也可以理解成淘汰法。这个程序还有前面比大小的影子,内循环是j,有四列,循环四次。

2023-05-12 17:36:31 421

原创 程序:将二维数组行和列的元素互换

内部的for循环中的j对应数组a的列数,之后的语句就是把数组a的(i+1)行(j+1)列元素赋值给数组b的(j+1)行(i+1)列元素。这个是定义数组b和后面要用到的可以用来表示行和列的i和j。第一个for循环,i取0和1,循环两次,对应数组a的行数。我们只需要把a[i][j]换成a[j][i]即可。数组a和b的行和列的数值是相反的。这个是输出替换后的数组b。这个程序还是很简单的,这个是对数组a进行赋值。

2023-05-12 16:45:20 564

原创 二维数组的定义和引用

4.如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第1维的长度可以不指定,但第二维的长度不能省去。虽然我们可以在直观上看到用矩阵表示的二维数组,但在内存的存放中,二维数组的数据是连续存放的,呈线性排列。我们在向二维数组中输入元素时,就像上面两行三列中的数字顺序一样进行输入的,这个表示的就是数组b的第一行第二列元素等于数组a的第二行第三列元素/2。在引用数组元素时,下标值应在已定义的数组大小的我范围内,内部的每一个{}表示一行,内部的{}内的是该行的元素。

2023-05-12 16:03:26 662

原创 程序:对十个数据进行从小到大的排序(冒泡排序法)

第2次拿调换过的第二个数与第三个数比较,大的数向后调,即在比较结束后,大的数在第三个位置。第1次拿第一个数和第二个数进行比较,大的数向后调,即在比较结束后,大的数在第二个位置。这个最终调换我们通过例子来理解,就是上面说的将最大的数放在最后一位这个整体的过程。下面的式子就是大数与小数的调换过程,之前在比较两个数的大小就是这种方法。将第二大的数放在倒数第二位,需要进行8次比较,以此类推,来进行调换。将最大的数放在最后,香醋要进行9次比较,i从0开始,进行9次比较。这里的for循环就是用来输出数组元素的。

2023-05-12 15:17:06 8195 3

原创 程序:用一维数组编写斐波那契数列

这个时使用新的方法来进行斐波那契数列的求解。这个程序中用到的计算方法跟之前的是一样的。他用了两次循环,第一次时关于数值的,我们给出的数组只限定了20个元素,第二次循环是针对每行元素数目的。内部的计算方法还是很简单的,所以输出的也是20个。

2023-05-12 11:14:26 279

原创 数组的简单介绍

对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按照逆顺序输出。3.数组中每一个元素都属于同一个数据类型,不能把不同类型的数据放在同一个数组里。我们也是需要先声明的,就是告诉计算机这个数组属于什么数据类型,有多少个元素。我们需要注意的是,我们只能引用数组的元素而不能一次调用整个数组全部元素的值。我们在定义数组并对其中的各元素进行赋值后,就可以引用数组中的元素。有的数组,其元素需要指定两个下标才能确定,这就是二位数组。就表示定义了一个整型数组,数组名为a,有10个数组元素。

2023-05-12 11:14:12 72

原创 一维数组的初始化

系统会自动把它们初始化为0(如果是字符型数组,则初始化为‘\0’,如果是指针型数组,则初始化为NULL,即空指针。4.在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。将数组中各元素的初值顺序放在一对花括号内,数据间用逗号分割。如果在定义数值型数组时,指定了数组的长度并对之初始化,为了使程序简介,常在定义数组的同时给各数组元素赋值。第二种写法中花括号中元素的数目就是数组元素的数目。可以用“初始化列表”的方法实现数组的初始化。凡未被“初始化列表”指定初始化的数组元素,

2023-05-12 11:13:27 1637

原创 程序:判断一个数是否为素(质)数

如果是一个素数,则在区间内必有一个i使得余数为0,也就是说得出的i要小于n。这样只要在这个区间内找到能把n整除的数,就终止循环(break语句)素数的判定有很多种方法,并不是必须要从2到(n-1)进行除法运算。我们知道,素数是除了1和它本身之外没有其他因数的自然数。对于这个程序,我们根据素数的定义来进行编写。后面再根据终止循环时i与n的大小比较进行判定。这就很方便的判定出数据是否为素数。这样我们可以根据循环来进行求解。再循环,循环从2开始到(n-1)我们是需要先输入自然数,甚至是从2到根号下n。

2023-05-11 08:13:37 166

原创 程序:斐波那契数列

对于斐波那契数列,我们可以根据该数列的特性来进行程序的编写。在这个程序里面,我们设计了f1和f2两个变量,最开始他们分别对应的是第一个和第二个数据。每四个数会换行,即i取得偶数的时候会换行。由于数据过大,我们只列出前四十个数据。随后每次循环,f1和f2都会更新,根据这个关系我们就可以列出程序。从第三个数开始为前两个数的和。第1,2个数都是1,一次循环得出两个数。

2023-05-11 07:50:39 214

原创 程序:求Π的近似值

分子都是1,分母逐个递增2,符号正负间转换,这些都可以用拆分的方式来表示出来。我们用这个公式来求Π的近似值,直到发现某一项的绝对值小于10的-6次方为止。再这个程序里面,有用到了fabs,这个是绝对值函数,用来判定数值的。在编写程序时,可以根据规律来编写,用到了循环。下面的循环很好的表示出了计算过程。这一个程序,我们利用下面这个公式。如果想要更高精度可以改一下域宽。pi表示的就是Π/4的值。这个公式是由规律的。

2023-05-11 07:31:15 744

原创 用continue语句提前结束本次循环

我们再进行循环运算时,有时候并不想直接终止循环,而是结束某些次的循环,不影响其他循环,continue语句直接跳出了本次循环。这个程序我们运用循环来进行,从100循环到200,挑出里面不能被3整除的数,再输出出来就行。这时候就可以用到continue语句。输出100~200的不能被3整除的数。这个看起来就一目了然。

2023-05-11 07:31:01 268

原创 循环的嵌套

一个循环体内又包含另一个完整的循环结构,内嵌的循环中还可以嵌套循环。

2023-05-11 07:30:46 23

原创 程序:输出一个矩阵

每个数都与i和j有关,这样就开始排列,排列完五个数就结束循环。这个的输出就需要用到双重循环了,就是行和列分别循环。在第一行里面再开始循环,对应的就是第一行的五个数,先看第一个for循环,这个对应的就是行。现在我们输出一个4*5的矩阵,

2023-05-11 07:30:20 832

原创 用break语句提前终止循环

break语句的作用就是使流程跳到循环体外,接着执行循环体下面的语句。捐款人数达到1000人时,捐款总数没有达到100000;在这个过程中,100000是不会变的,这里就要定义宏了。我们不能确定循环的次数,但能够确定循环的最大值1000。捐款人数未超过1000人时,捐款总数达到100000。每次循环的过程中,统计现在捐款人数及此人捐款的数目。随后用float定义了个人捐款数,平均数和总数。统计此时捐款的人数以及平均每人捐款的数目。显示定义了宏,这个后面定义后可以直接引用,在循环体内有判定条件的,

2023-05-11 07:30:05 284

原创 for语句

表达式3也是可以省略的,不过在这种情况下我们需要在循环内设置其他条件使循环能正常结束。for语句的执行过程就是表达式1——》表达式2——》表达式3——》表达式2…表达式2一般是关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,在表达式1和表达式3中,可以包含多个表达式,中间用逗号隔开就行,就像是i++这个式子,不论是放在表达式3还是语句中都是可以的。表达式1和表达式3都可以在程序的其他位置进行补充,但表达式2中只能有一个表达式,这个是判定循环用的。表达式1可以是设置循环变量初值的赋值表达式,

2023-05-11 07:29:50 605

原创 do......while语句

我们下面来看一下do while语句的从1到100的累加.然后在while后面的括号内的表达式中检查i的值,do while语句也是可以用来实现循环结构的。当i小于等于100时,就返回再执行一次循环体,限制性(do表示“做”)printf语句,这个对标的时while语句里面的累加。这个跟while语句是有明显区别的。while语句是先判定再执行,两者的选择可以根据情况而定。这个跟while语句的差不多。直到i大于100为止。先无条件的执行循环体,其中的语句就是循环体。这个是先执行再判定。

2023-05-11 07:29:42 497

原创 while语句

while语句可简单记为:只要当循环条件表达式为真(即给定的条件成立),就执行循环体语句。执行循环体的次数是由循环条件控制的,循环条件就是上面一般形式中的表达式,而么每一次循环的过程中,sum都会被加上i,而每次循环i都会 + 1,while循环的特点时先判断条件表达式,后执行循环体语句。而while在判定条件成立的情况下会一直循环下去,从本篇开始我们接触循环,这个是比较难的点。当此表达式的值为“真”时,就执行循环体语句。最后在i超过100后循环结束,跳出循环,可以是一个简单的语句,也称为循环条件表达式。

2023-05-11 07:28:29 191

原创 程序:判断某年是否为闰年

1.结果是判定该年是否为闰年,这个简单,就是利用0和1来判定,这样也就有了if语句。这次我们来尝试一个比较难的程序:判断某年是否为闰年。在进行之前,我们需要知道某年是否为闰年的判断方法。再根据leap来判定,leap为1,就输出是闰年,这个程序就是先利用if语句来判定年份是否是闰年,1.能被4整除,不能被100整除。在编写程序时,先罗列一下要素。leap为0,就输出不是闰年。2.计算方法需要if语句。2.能被400整除。

2023-05-10 18:02:55 2228

原创 用switch语句实现多分支选择结构

在整个语句中,可以没有default标号,此时如果没有与switch表达式相匹配的case常量,则不执行任何语句,流程转到switch语句的下一个语句。在执行switch语句的时候,羡慕计算switch后的表达式的值,然后将它与各case标号比较。如果没有与switch表达式相匹配的case常量,流程就转去执行default标号后面的语句。那么,如果没有break,求从2进入,结果不仅会输出2的,还会输出3和4的,这个复合语句包含若干个语句,它时switch语句的语句体。

2023-05-10 17:46:45 462

原创 选择结构的嵌套

else总是与它上面的最近的未配对的if配对。if() 语句1。if() 语句3。{ } 可以限定if语句的范围。当然,加上 { } 更利于区分。else 语句2。else 语句4。

2023-05-10 11:00:38 41

原创 条件运算符和条件表达式

当被判别的表达式的值为“真”或“假”时,都执行一个赋值语句且向同一个变量赋值。条件运算符优先于赋值运算符,所以如果含有赋值表达式,得到的将会是最终的结果。这个其实可以看成是对某些特定的if语句的简化,就是汽车收费问题这种的。表达式2和表达式3可以是数值表达式,还可以是赋值表达式或函数表达式。和 : 组成,必须一起使用,在进行运算时,条件表达式中也是可以赋值的,需要加括号,无论什么条件,最后都是给max赋值,表达式2 : 表达式3。其运行过程就是先运算表达式1的值,此时,我们就可以改写这个语句,

2023-05-10 10:50:47 177

原创 逻辑运算符和逻辑表达式

这个逻辑的表达中学数学是有过涉猎的,就是“与或非”的关系。

2023-05-10 10:37:48 470

原创 关系运算符和关系表达式

在C语言中,比较符(比较运算符)称为关系运算符。所谓“关系运算”就是“比较运算”,将两个数值进行比较,判断其比较的结果是否符合给定的条件。符合为真,不符合为假。

2023-05-10 10:02:34 72

原创 if语句的一般形式

还可以是另一个if语句(即在一个if语句中又包括另一个或多个内嵌的if语句)1.if (表达式) 语句1 (没有else子句部分)1.整个if语句可以写在一行或多行上,不过为了美观,一般选择阶梯状书写。if语句中的表达式可以是关系表达式、逻辑表达式,甚至是数值表达式。2.if语句无论写在几行上 ,都是一个整体,属于用同一个语句。语句1和语句2可以是一个简单的语句,也可以是一个复合语句,系统自动检测语句,如果有内嵌语句,不会结束,3.内嵌语句也可以是一个if语句。

2023-05-10 09:48:28 240

原创 程序:比较三个实数的大小

这一个比较大小比两个的比较要难一些,但过程却是大致相似的。输入三个数a,b,c,要求按由小到大的顺序输出。针对这一个程序,其实三次比较并无先后之分,之后再比较剩下的数,把最大的给c就行。这一题是需要用到三次比较和交换。我们只需要把小的放在前面就行。第一次互换后a

2023-05-10 09:25:02 115

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除