自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 指针之指针数组

]的优先级比*高,因此p先与[ 4 ]结合,形成p[ 4 ]形式,表示p数组有4个元素,再与p前面的" * "结合,表示此数组是指针类型的。一个数组,若其元素均为指针类型数据,称为指针数组,也就是说,指针数组中的每一个元素都存放一个地址,相当于一个指针变量。注意跟之前的数组指针定义格式相近,但是指针数组注重的是数组,数组指针注重的是指针。下面定义一个指针数组。

2024-07-16 19:56:13 99

原创 指针之关于函数指针

最重要的是dataHand(int data1,int data2,int (*pfunc)(int data1,int data2));使用函数指针,函数调用概念和变量一样,直接访问(变量名,函数名),间接访问(指针,函数指针)函数指针,定义“函数地址”,函数名就是地址。在使用有返回值的函数指针时,记得将值放入。函数的指针有点绕,需要勤加训练。如何定义一个函数指针变量,

2024-07-16 18:52:09 200

原创 指针之关于数组指针

数组指针,定义一个指针,指向一个数组,让指针偏移的时候,也偏移相应大小的数组。eg.输出二维数组任意行列的数。

2024-07-15 20:12:09 161

原创 指针和二维数组

在二维数组里面,a+1和*(a+1)他们都是代表着同一个地址,这是因为二维数组里面,a代表的是0行的首地址, a+1就是第2行的首地址,那么*(a+1), 根据上面的等价关系, 我们可以知道*(a+1)==a[ 1 ],在二维数组里面也是表达第2行的首地址,所以是一样的。所以,二维数组a中的元素a[ i ]a[ j ]的地址(或指针)既可以用a[ i ]+j来表示,也可以用*(a+i)+j表示 =========================a代表的是a[ 0 ];

2024-07-15 17:12:20 156

原创 指针练习之函数的翻转

这里for循环使用i只需要 i = len / 2;根据翻转可知 i + j = len - 1;即 j = len- 1 + j;

2024-07-13 19:13:49 103

原创 指针——认识指针,如何使用

int *p ——这里的*是一个标识符,告诉系统这是一个指针变量,是用来保存别人地址的,只产生在指针变量定义或声明的时候。os中用8个字节表示一个地址,4个字节表示一个整型类型。& 是取地址的运算符;* 将地址内的值读出的运算符。在函数的封装中,使用指针也能更好的将数值传递。什么是指针变量,存放指针(地址)的变量。第一个指针可以当作数组名,下标法访问。接着,指针变量==存放地址的变量。什么是整型变量,存放整型数的变量。什么是字符变量,存放字符型变量。第二个可以使用数组名来加。首先,指针==地址,

2024-07-12 19:41:26 98

原创 全局变量(外部变量)和局部变量

首先分享一个错误,很有认识的意义,我这里在全局变量中定义了max和min,但是我又在averscore函数中定义了这两个变量,导致我输入的值传不进去,输出失败,这是因为averscore函数里面的变量是局部变量,接着来写一个案例,班上10个学生,封装一个函数,调用该函数后获得班上的平均分,最高分,最低分;它可以使程序员编程便捷,但是有隐藏风险;所以的函数都可以操作这个变量。全局变量是写在所有函数之前的外部变量,,但是输出的是全局变量,所以输出失败。局部变量是修改不了全局变量的。这里修改后,输出就正常了。

2024-07-08 00:26:34 168

原创 函数的封装之多维数组

也就是说arr[ ][ ]二维数组的写法,可以写成 arr[1][2]或者arr[ ][2];但是不能写成arr[2][ ];那么用二维数组找出最大值的函数封装法,就可以是以下方式。首先,多维数组必须对除第一个维度外的所有维度有边界。getmaxarr 得出数组内最大的数值。printfarr 打印出数组内的数值。initarr 初始化数组内的数值。我使用了三个函数封装,分别是。

2024-07-07 23:35:57 94

原创 封装函数数组实战之计算不同班级学生的平均分

有两个班级的同学,都是五人,分别求这两个班平均分。printfarr,打印数组的数字。这个代码使用了三个自定义封装函数。initarr,初始化数组的数字。averarr,获取数组的平均值。注意数组的调用,是写数组名。即可或者数组的首地址。

2024-07-07 22:13:18 84

原创 关于数组和数值实参和形参的

首先我们先看一段代码,猜猜上面data的打印和下面data的打印的数值分别是多少。答案是一样的,这是因为操作的是相同的内存空间,数组名当作实参,传递的是地址。如果要使值正常传入,则重新定义函数的类型并且将data的值等于函数调用。答案是110和10,这是因为这是数值传递,操作的是不同的内存地址,再来看一段代码,这里上下打印的是否是一样的数值呢。

2024-07-03 19:47:10 115

原创 数组传参中关于形式参数

最后这里数组名传递过去的是整个数组的首地址,或者用地址符&写入第一个元素的地址。所以在printfarr中他的大小永远是8,因为他传递过去的地址大小就是8。首先,形式参数中不存在数组的概念,及时中括号约定了数组的大小,也无效。在os中一个数组用8个字节来表示一个地址,一个整型数是4个字节。但是main中arr的大小根据数组的数字决定。传递的是一个地址,是数组的首地址。发现打错17行,正确应该是。

2024-07-03 18:53:06 208

原创 递归函数写阶乘!n

用exit(-1)强制退出程序,但是头文件#include<stdio.h>中没有,所以还需要一个头文件#include<stdlib.h>;,所以我们要在17次方的时候及时停止程序的运行,就不会出现报错,我们知道int整型类型是4个字节,也就是在计算机中是。跟之前的递归函数没什么变化,但是有值得注意的点;所以使用int类型的整型,不能超过。

2024-07-02 22:58:38 90

原创 递归函数的应用

有五个学生在一起,问他们说多少岁,第五个学生说比第四个学生大2岁,第四个学生说比第三个学生大2岁,第三个学生说比第二个学生大2岁,第二个学生比第一个学生大2岁,第一个学生说他10岁。值得注意的是,递归函数很容易无限循环或者出现程序错乱,所以一定要设置好递归函数的输出量,在这里就是age=10,如果不使用这个if函数,就会出现程序错乱。递归函数的含义就是在函数中再使用自己所定义的函数。

2024-07-02 22:38:22 140

原创 函数的嵌套

这里一共是使用了三个函数,其中两个函数是自定义的函数(getmaxfour),(getmaxtwo)值得注意的是形参和实参必须一一对应,不能少也不能多,否则就会报错。首先,一步步进入调用,一步步退出放回。利用函数一步步的把需要的结果实现。输入四个数,函数方式找出最大值。

2024-07-02 19:19:06 135

原创 函数封装获取两个数的大数

x :y,如果为真,则是输出前面的x,如果为假,输出的是后面的y;函数的调用的方式也有不同,第一个方式是正常的定义数据,返回值为定义的z;第三种方式是直接return表达式,返回的值就是主函数调用的值;首先,函数的封装需要四个要素:名,类型,值,地址。

2024-07-02 18:26:02 113

原创 二维数组的应用之找最大值及对应下标

我们可以把它表示为a [ 2 ][ 2 ]或者a [ ][ 2 ],前面的数字可以不写,后面的数字不可以不写。例如a[ 2][ 2]={1,2,3,4};也可以表示为a[2][2]={{1,2},{3,4}};也就是说二维数组的元素可以由一维数组组成,一个二维数组,可以由很多一维数组成。首先二维数组是特殊的一维数组,

2024-06-29 21:17:38 112

原创 数组编程练习之简单排列法

相当于冒泡排列法使用了两两移动的数值去比较;而简单排列法就只用前面第一个数字和其它数字进行比较。冒泡排列法只使用了j 循环的j 值,但是简单排列法使用了 i 和 j 两个循环的值。j 循环也是逐级减少 但是我们现在是使用简单排列法,所以 j = i +1。可以看到 i 循环了三次,也就是说它的规律还是 i = len-1。可以看到跟冒泡排列法不同的地方就在于第10行。首先,我们还是先做一个简单的表格。

2024-06-29 20:38:13 118

原创 斐波那契数列——数组的应用

值得注意的地方是,数组的赋值 不用在前面再加数据类型,例如:int arr [0]=0,这是错误的,直接用 arr [0]=0即可。利用for循环将每一个数组前面的相加得出后面的数组。再利用for循环将数组打印出来;首先,斐波那契数列的原理是。

2024-06-29 01:47:09 124

原创 数组编程练习之冒泡排列法

我们先列一个表格,表现出我们排列的过程是如何的,方便我们进行代码的编写。可以看到 i 循环一共出现了三次,j 循环会出现逐级减少。这是一个很方便的做法,多个数组的个数,不用我们一一计算。那么我们找到规律,i 循环的次数就是数组长度-1,即。

2024-06-29 01:00:58 101

原创 水仙花的程序输出

水仙花数的解题思路是把给出的某个三位数的个位、十位、百位分别分开,并求其立方和。能正常运行并准确输出“水仙花数”。输出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字立方之和等于该数本身。例如,153是一个水仙花数,因为153=1³+5³+3³。利用for循环和if语句,将符合条件的程序打印出来。

2024-06-27 23:46:16 174

原创 continue的用法,提前结束本次循环

符合条件的可以继续循环,不符合就会结束循环。要求输出100~200之间的不能被3整除的数。continue和break不同的点就在于,continue结束循环的只是一次循环的过程。

2024-06-25 23:59:44 129

原创 break的用法:提前结束循环

在全系1000学生中,征集慈善募捐,当募捐总数到达10万元时就结束,统计此时捐款的人数,以及平均内容捐款的数目。当判断的条件多了的时候,使用break可以帮助我们退出。

2024-06-25 23:51:31 145

原创 for循环的引入

for循环可以省略表达式1和表达式3,全省略的话会进入死循环;for (条件赋初值;

2024-06-25 23:32:59 107

原创 switch练习学生成绩等级划分

嵌套的分支过多,使用if语句就比较繁杂,那么我们使用switch语句来进行程序的编写。(3)每一个case部分语句后面都要写break,否则语句会继续执行。(1)switch后面的括号不屑判断语句,而是直接写数据。(2)case后面结果写完符号写。(default同理)

2024-06-23 22:20:47 158

原创 if else编程练习

输入一个字符,判断它是否为大写字母,如果是,将它转换成小写字母,如果不是,不转换,然后输出最后得到的字符。注意的是if和else的位置要一一对应,这样就不容易出错,也可以让我们的编程思路更加简洁明了。值得注意的是,在ASCLL码表中。小写字母的区间是97~122。大写字母的区间是65~90。

2024-06-23 16:05:51 108

原创 C语言中逻辑与,或,非运算

逻辑或 || ——如果a和b有以上为真,则结果为真,二则都为假时,结果为假(理解为除法)也就是函数非正常终止,被调函数 return 1只是给主调函数一个标志,说明他的执行过程遇到异常情况。——如果a为假,则!a为真,如果a为真,则!a为假(理解为相反数,即对立)其中如果是莆田男,进入if语句中,这里的return -1代表程序异常退出,-1一般是结束循环。逻辑与 && ——如果a和b都为真,则结果为真,否则为假(理解为乘法)return 0 代表程序正常退出。

2024-06-23 00:28:24 175

原创 利用if函数,用代数值按从大到小输出三个数

0代表的是false,也就是语句为假,就不调用后面大括号里面的内容。1代表的是true,也就是语句为真,调用了后面大括号里面的内容,设置change纯粹是为了感受if语句是否被调用,很明显,值得注意的是if后面的小括号里面的值,结果只会显示1或者0。当a是最大值时,if语句调用一次或者没有。当c是最大值的时候,if语句调用了三次;利用一个空的变量,将数值之间进行转换。这里的test就是if小括号里面的值。当b是最大值时,if语句调用两次;

2024-06-22 23:34:18 123

原创 将China译成密码,规律是原来字母的后面第4个字母代替原来的字母

前面我们学了两个输出函数,puts和printf,接着就来做一个简单的小练习。第一种方式是使用printf函数来输出这5个字符。第二种方式是使用puts函数来输出这5个字符。

2024-06-22 18:05:16 224

原创 其它的输入输出方式getchar(),putchar()和puts

总结一下出错的原因,就是因为getchar()他不是字符,他是函数,函数不能被输出,我第一次尝试中有两个getchar(),但是只有一个putchar(),所以前面输入一个字母没有被putchar()输出,因为putchar()被里面的getchar()占用了。putchar() 就是输出 getchar() 所得的字符。发现前面的字符被吃掉了,我再试试把前面的getchar()删掉。且putchar()输出的优先是括号内的getchar()我本身对于getchar()和putchar()的理解。

2024-06-22 17:32:12 125

原创 练习作业:输入两个数,获得两个数的加减乘除的值

(注意的是sum3=a/b中的a和b还是整型,所以要强制转化类型,在前面加上括号,写入要转换的类型)这个商的结果我不是很喜欢,所以把商的数据类型int换成浮点型float,

2024-06-22 16:21:16 203

原创 c语言程序设计习题1.4 3(2)

(以下的scanf函数不要写成我那样,是因为我使用的软件用不了scanf函数,如果我使用会出现系统报错,故使用scanf_s,大家不要模仿,还是使用书上的例子进行敲打。今天复习到这时,看到第二题的作业,之前都是直接用一个main函数直接写出,这次想试试不一样的,利用两个自定义函数,可以加强复杂代码函数间的运用。如果想要简单版本的也有呢。

2023-07-14 16:57:09 45 2

原创 c语言第一步———认识文件名称

下面我介绍我们最常见的名词之一——#include<stdio.h>在使用标准函数库中的输入输出函数时,编译系统要求程序提供有关的信息(例如对这些输入输出函数的声明),如printf、scanf、fopen、fclose等等。当我们在C程序中写下#include<stdio.h>之后,预处理器就会在编译前将stdio.h头文件的内容插入到代码中,使得程序能够使用其中声明的函数。>也被称为头文件,头文件中包含了一些宏观定义和函数声明,可以让编译器在编译时知道这些函数和变量的存在,从而避免出现编译错误。

2023-06-02 16:25:33 80 1

空空如也

空空如也

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

TA关注的人

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