- 博客(51)
- 收藏
- 关注
原创 C语⾔:内存函数
• 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。• ⽐较从ptr1和ptr2指针指向的位置开始,向后的num个字节(num最多比较的个数)• 和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。• 如果source和destination有任何的重叠,复制的结果都是未定义的。memset是⽤来设置内存的,将内存中的值以字节为单位设置成想要的内容。void*ptr:指向被填充内存块的指针;count--:循环20次;
2024-05-28 21:20:59
593
2
原创 C语言:字符函数和字符串函数
在不同的系统和C语⾔标准库的实现中都规定了⼀些错误码,⼀般是放在 errno.h 这个头⽂件中说明 的,C语⾔程序启动的时候就会使⽤⼀个全⾯的变量errno来记录程序的当前错误码,只不过程序启动 的时候errno是0,表⽰没有错误,当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会讲对应 的错误码,存放在errno中,⽽⼀个错误码的数字是整数很难理解是什么意思,所以每⼀个错误码都是 有对应的错误信息的。• strtok函数找到str中的下⼀个标记,并将其⽤ \0 结尾,返回⼀个指向这个标记的指针。
2024-05-22 17:03:04
1064
原创 C语言:指针(4)
如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数 时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条 件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应。//void*类型是无具体类型的指针,这种类型的指针不能直接解引用,也不能进行+-整数运算。//strcmp - 是库函数,是专⻔⽤来⽐较两个字符串的⼤⼩的,是按照对应字符串的ASCII码值比较。//return返回值:>~~~~~~>0;==~~~~~==0。
2024-05-16 15:32:22
663
原创 C语言:指针(3)
根据上⾯的例⼦,第⼀⾏的⼀维数组的类型就是 int [5] ,所以第⼀⾏的地址的类 型就是数组指针类型 int(*)[5]。那就意味着⼆维数组传参本质上也是传递了地址,传递的是第⼀ ⾏这个⼀维数组的地址,那么形参也是可以写成指针形式的。⾸先我们再次理解⼀下⼆维数组,⼆维数组起始可以看做是每个元素是⼀维数组的数组,也就是⼆维 数组的每个元素是⼀个⼀维数组。据数组名是数组⾸元素的地址这个规则,⼆维数组的数组名表⽰的就是第⼀⾏的地址,是⼀ 维数组的地址。存放的是整形变量的地址,能够指向整形数据的指针。
2024-05-14 21:00:12
608
原创 C语言:指针(2)
parr[i]是访问parr数组的元素,parr[i]找到的数组元素指向了整型⼀维数组,parr[i][j]就是整型⼀维数 组中的元素。数组元素的访问在编译器处理的时候,也是转换成⾸元素的地址+偏移 量求出元素的地址,然后解引⽤来访问的。• &数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址(整个数组的地址和数组⾸元素 的地址是有区别的)3.数组传参本质上传递的是数组⾸元素的地址,所以形参访问的数组和实参的数组是一个数组。4.形参的数组是不会在单独创立空间的,所以形参的数组是可以省略数组的大小。
2024-05-11 21:19:07
454
原创 C#:求解出n以内所有能被5整除的正整数的乘积
本关任务:求解出n以内(包含n)所有能被5整除的正整数数的乘积s。对于每个样例n,输出n以内(包含n)所有能被5整除的正整数的乘积。从键盘输入一个正整数n,输入的n不超过100。
2024-05-09 19:33:53
729
原创 C#:输出任意一个数的逆序数
本关任务:从键盘输入一个整数,输出该数的逆序数。如369的逆序数是963,478的逆序数是874。Console.WriteLine("逆序数是:{0}",+a);根据提示,在右侧编辑器补充代码,计算并输出一个数的逆序数。逆序数是:654874。
2024-05-09 19:32:01
638
原创 c#:求所有水仙花数的和
前边已知学过如何判断一个数是否为水仙花数,此处在前有的基础上加了一个循环判断100-999之间所有整数是否为水仙花数。水仙花数是指一个3位数字,它各位数字的3次幂之和等于它本身。为了完成本关任务,你需要掌握:1.如何求出各个数位上的数字,2.循环语句的熟练使用。根据提示,在右侧编辑器补充代码,计算并输出水仙花数的和。本关任务:编写一个程序,求所有水仙花数的和。并把求出来的水仙花数累加求和即可。
2024-05-09 19:31:00
873
原创 C#:斐波那契数列
根据斐波那契数列定义可知,需要已知第1个和第2个元素才能求出后面的元素,所以先定义f1=1,f2=1,然后在循环中先计算f=f1+f2等公式,而f=f1+f2之后,要执行f1=f2,f2=f,其目的是:f1和f2表示的不仅仅是第1个和第2个元素,随着循环的进行f1和f2可以代表f2,f3,f4,f5,f6等元素。在数学上,斐波那契数列以递归的方法定义:F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)(n≥3,n∈N*)本关任务:编写一个程序,计算斐波那契数列前N项的和。
2024-05-09 19:29:59
500
原创 C语言:strlen的模拟实现
#include<stdio.h>int my_strlen(char* arr) { int count = 0; while (*arr != '\0') { count++; *arr++; } return count;}int main() { char arr[] = "abcdef"; int len = my_strlen(arr); printf("%d", len); return 0;
2024-05-09 18:01:26
497
原创 C语言:指针(1)
在指针类型中有⼀种特殊的类型是 void* 类型的,可以理解为⽆具体类型的指针(或者叫泛型指 针),这种类型的指针可以⽤来接受任意类型地址。如果函数内部要修改主调函数中的变量的值,就需要传址调⽤。如果明确知道指针指向哪⾥就直接赋值地址,如果不知道指针应该指向哪⾥,可以给指针赋值NULL. NULL 是C语⾔中定义的⼀个标识符常量,值是0,0也是地址,这个地址是⽆法使⽤的,读写该地址.const如果放在*的右边,修饰的是指针变量本⾝,保证了指针变量的内容不能修改,但是指针指 向的内容,可以通过指针改变。
2024-05-08 19:05:58
1308
原创 C语言:操作符(下)
⼤部分运算符是左结合(从左到右执⾏),少数运算符是右 结合(从右到左执⾏),⽐如赋值运算符( = )。运算符的优先级顺序很多,下⾯是部分运算符的优先级顺序(按照优先级从⾼到低排列),建议⼤概 记住这些操作符的优先级就⾏,其他操作符在使⽤的时候查看下⾯表格就可以了。如果某个操作符的各个操作数属于不同的类型,那么除⾮其中⼀个操作数的转换为另⼀个操作数的类 型,否则操作就⽆法进⾏。(一般是小的转化为大的内存)。单⽬运算符( + 和 - ) • 乘法( * ),除法( / ) • 加法( + ),减法( - )
2024-05-07 19:11:31
361
原创 C语言:操作符
有符号整数的三种表⽰⽅法均有符号位和数值位两部分,2进制序列中,最⾼位的1位是被当做符号 位,剩余的都是数值位。16进制的数字每⼀位各⾃写成2进制,最多有4个2进制位就⾜够了, ⽐如f的⼆进制是1111。如:2进制的01101011,换成8进制:0153,0开头的数字,会被当做8进制。(补充:8进制的数字每⼀位是0~7的,16进制的数字每⼀位是0~9,a~f的)• 10进制的数字每⼀位都是0~9的数字组成,其实⼆进制也是⼀样的。各⾃写成2进制,最多有3个2进制位就⾜够了,⽐如7的⼆ 进制是111。
2024-04-27 12:46:41
371
原创 C语言:实现N的阶乘
递归:#include<stdio.h>long long Fet(int n) { if (n <= 1) return 1; else return n * Fet(n - 1);}int main() { int n = 0; scanf_s("%d", &n); int r = Fet(n); printf("%d",r); return 0;}迭代:#include<stdio.h>long long Fet(i
2024-04-24 19:12:31
467
9
原创 C语言:用递归或迭代来写斐波那契数列
递归:#include<stdio.h>long long Fet(int n) { if (n<3) return 1; else return Fet(n-2) + Fet(n - 1);}int main() { int n = 0; scanf_s("%d", &n); int r = Fet(n); printf("%d", r); return 0;}迭代:#include<stdio.h>long lon
2024-04-24 17:58:38
329
原创 C#:变量的更多内容
例如,让orientation类型存储north、south、east或west中的一个值,可以定义枚举类型orientation,然后声明orientation类型的变量。注:char类型是用数字表示Unicode字符集中的字符,其与ushort的存储方式相同,都存储0和65535之间的数字。即<value1>的值为0,<value2>的值为1,<value3>的值为2,等等。根据这个结构,可以定义自己的变量类型。枚举:一种变量类型,用户定义一组可能的离散值,这些值可以用人们能理解的方式使用。
2024-04-24 16:50:15
896
原创 C语言:递归
函数不返回,函数对应的栈帧空间就⼀直占⽤,所以如果函数调⽤中存在递归调⽤的话,每⼀次递归 函数调⽤都会开辟属于⾃⼰的栈帧空间,直到函数递归不再继续,开始回归,才逐层释放栈帧空间。所以如果采⽤函数递归的⽅式完成代码,递归层次太深,就会浪费太多的栈帧空间,也可能引起栈溢 出 的问题。当⼀个问题⾮常复杂,难以使⽤迭代的⽅式实现时,此时递归实现的简洁性便可以补偿它所带来的运 ⾏时开销。所以如果不想使⽤递归就得想其他的办法,通常就是迭代的⽅式(通常就是循环的⽅式)。所以递归的思考⽅式就是把⼤事化⼩的过程。
2024-04-24 13:53:05
375
原创 C语言:函数(下)
其实 static 修饰函数和 static 修饰全局变量是⼀模⼀样的,⼀个函数在整个⼯程都可以使⽤, 被static修饰后,只能在本⽂件内部使⽤,其他⽂件⽆法正常的链接使⽤了。这是因为C语⾔编译器对源代码进⾏编译的时候,从第⼀⾏往下扫描的,当遇到第7⾏的is_leap_year 函数调⽤的时候,并没有发现前⾯有is_leap_year的定义,就报出了上述的警告。extern是⽤来声明外部符号的,如果⼀个全局的符号在A⽂件中定义的,在B⽂件中想使⽤,就可以使 ⽤ extern 进⾏声明,然后使⽤。
2024-04-23 18:19:00
346
原创 C语言:函数(中)
上⾯的例⼦中,我们就第⼀个printf打印的是第⼆个printf的返回值,第⼆个printf打印的是第三个 printf的返回值。链式访问就是将⼀个函数的返回值作为另外⼀个函数的参数,像链条⼀样将函数串起来就是函数 的链式访问。• 形参如果是⼀维数组,数组⼤⼩可以省略不写 • 形参如果是⼆维数组,⾏可以省略,但是列不能省略。printf函数返回的是打印在屏幕上的字符的个数。• 函数的实参是数组,形参也是可以写成数组形式的。• 形参操作的数组和实参的数组是同⼀个数组。• 数组传参,形参是不会创建新的数组的。
2024-04-23 16:16:04
282
原创 C语言:函数(上)
实际上,如果只是定义了 Add 函数,⽽不去调⽤的话, Add 函数的参数 x 和 y 只是形式上存在的,不会向内存申请空间,不会真实存在的,所以叫形式参数。C语⾔的国际标准ANSIC规定了⼀ 些常⽤的函数的标准,被称为标准库,那不同的编译器⼚商根据ANSI提供的C语⾔标准就给出了⼀系列 函数的实现。库函数是在标准库中对应的头⽂件中声明的,所以库函数的使⽤,务必包含对应的头⽂件,不包含是 可能会出现⼀些问题的。return返回的值和函数返回类型不⼀致,系统会⾃动将返回的值隐式转换为函数的返回类型。
2024-04-23 12:10:07
484
原创 C#:闰年判断
根据是否闰年进行输出,是输出"****是闰年!",否输出"****不是闰年!",其中****为当前输入的年份。else{ Console.WriteLine("{0}不是闰年!Console.WriteLine("{0}是闰年!为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。编写程序,完成如下功能:从键盘输入任意年份year,判别该年份是否闰年。从键盘任意输入一个年份。
2024-04-17 10:28:43
934
原创 C#:成绩等级转换
本关任务:给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。90分以上为A 80-89分为B 70-79分为C 60-69分为D 60分以下为E,如果输入数据不在0~100范围内,请输出一行:“Score is error!(2) 如果输入数据不在0~100范围内,请输出一行:“Score is error!(1) 如果输入数据在0到100范围内:一个字符,表示成绩等级。从键盘输入一个成绩,成绩可以使浮点数。
2024-04-12 18:15:11
947
原创 C#:判断一个数是不是水仙花数
Console.WriteLine("{0}不是水仙花数",+a);Console.WriteLine("{0}是水仙花数",+a);水仙花数是指一个3位数字,它各位数字的3次幂之和等于它本身。为了完成本关任务,你需要掌握:1.如何求出各个数位上的数字,2.if语句的熟练使用。根据提示,在右侧编辑器补充代码,计算并输出一个数是不是水仙花数。本关任务:编写一个程序,判断从键盘输入的数是不是水仙花数。
2024-04-12 18:13:16
988
原创 C#:求三个整数的最大值
Console.WriteLine("最大值:{0}",+c);本关任务:编写一个程序,实现从键盘输入的三个整数,输出三个整数的最大值。根据提示,在右侧编辑器补充代码,计算并输出从键盘输入的三个数的最大值。
2024-04-12 18:11:49
960
原创 C#:求两个整数的最大值
Console.WriteLine("最大值:{0}",+a);Console.WriteLine("最大值:{0}",+b);本关任务:编写一个程序,实现从键盘输入的两个整数,输出两个整数的最大值。
2024-04-12 18:10:24
743
原创 C#:24小时制和12小时制之间的转换
Console.WriteLine("现在是下午{0}点",+c);Console.WriteLine("现在是上午{0}点",+i);Console.WriteLine("输入时间格式错误");本关任务:编写一个程序,利用求余运算完成24小时制和12小时制之间的转换。注意:要求输入的数字是0到24之间的整数。
2024-04-12 18:08:07
1059
原创 C#:foreach循环
上大学之后,中国学生会遇见一件非常新颖的事情:点名。在课堂上老师会拿着一张姓名表,挨个的点,点着姓名的同学,如果没有在课堂上,那么这科的期末成绩就会有相当大的影响。任务要求,实训会给出一个姓名数组,使用foreach逐个将他们“点”出来。平台将编译用户补全后代码,并根据程序的输出判断程序是否正确。
2024-04-11 21:19:17
601
原创 C#:for循环
过年的时候,朋友家人聚在一起,经常玩个活动。比如玩扑克牌,扑克牌有多种玩法,但一般起牌的时候,会按照某种序列拿在手中,有的人喜欢从大到小,有的人喜欢从小到大。任务要求:扑克牌的牌面是从1-13,按照编程要求,使用for循环和冒泡排序从小到大将混乱的牌面重新排列。平台将编译用户补全后代码,并根据程序的输出判断程序是否正确。
2024-04-11 21:17:51
800
1
原创 C#:do循环
春节期间,在某商场商店经常举行一种活动,完成商店规则的客人将会得到免单的机会。任务要求:使用do...while循环,连续不断的打印从1到20的数字。平台将编译用户补全后代码,并根据程序的输出判断程序是否正确。这道循环题目看似容易,但能够顺利完成的少之又少。第二条,写的过程中,不能出现停顿和错误。第一条,客人从1开始写,一直到600。
2024-04-11 21:16:08
401
1
原创 C#:while循环
过年的时候,朋友家人聚在一起经常玩个活动。比如玩扑克牌,扑克牌有多种玩法,但一般起牌的时候会按照某种序列拿在手中,有的人喜欢从大到小,有的人喜欢从小到大。平台将编译用户补全后代码,并根据程序的输出判断程序是否正确。循环和冒泡排序从小到大将混乱的牌面重新。任务要求,扑克牌的牌面是从。,按照编程要求,使用。
2024-04-11 21:13:38
552
1
原创 C#:计算存款
假设存款本金为10000元,存5年,银行定期存款的年利率为2.15%,则输出存款的本息和为11122.2295671933。本关任务:编写一个程序,输入存款本金,输出5年定期存款的本息之和,银行定期存款的年利率为2.15%。Console.WriteLine("本息之和:{0}",+b);
2024-03-30 12:26:20
447
2
原创 C#:求四位数的各个数位上的数字
Console.WriteLine("{0}的个位:{1} ,十位:{2},百位:{3},千位:{4}",+num,+a,+b,+c,+d);本关任务:编写程序,计算机并输出一个四位数各个数位上的数字。如 6789 的个位:9 ,十位:8,百位:7,千位:6。注意:程序要求输入的数字必须是4位数。
2024-03-30 12:24:56
550
1
原创 C#:求两个整数的和、差、积和商
Console.WriteLine("和:{0},差:{1},积:{2},商:{3}",+c,+e,+f,+d);根据提示,在右侧编辑器补充代码,计算并输出两个数的和、差、积、商。本关任务:编写程序,从键盘输入两个整数,输出其和、差、积和商。
2024-03-30 12:23:10
960
1
原创 C#:第3关:三元运算符
一个女人让他的程序员丈夫去买东西:你去商店买个面包,要是他们有鸡蛋就买6个。过了一会,丈夫买了6个面包回来,妻子问:你怎么买了6个面包?程序员丈夫回答:因为有鸡蛋。任务要求:将给出的if...else语句代码编写的丈夫选择,使用三元运算符改写。平台将编译用户补全后代码,并根据程序的输出判断程序是否正确。将上面这段if语句代码使用三元运算符改写。
2024-03-28 12:55:35
240
原创 C#:第2关:switch语句
一个女人让他的程序员丈夫去买东西:你去商店买个面包,要是他们有鸡蛋就买6个。过了一会,丈夫买了6个面包回来,妻子问:你怎么买了6个面包?程序员丈夫回答:因为有鸡蛋。使用switch...case语句,根据两个变量初始值实现要求。任务要求:使用switch...case语句还原妻子的想法。平台将编译用户补全后代码,根据程序的输出判断程序是否正确。程序定义两个bool值:Egg、Bread。修改源程序,源程序是丈夫的决定。
2024-03-28 12:18:39
368
原创 C#第1关:if语句
一个女人让他的程序员丈夫去买东西:你去商店买个面包,要是他们有鸡蛋就买6个。过了一会儿,丈夫买了6个面包回来,妻子问:你怎么买了6个面包?程序员丈夫回答:因为有鸡蛋。平台将编译用户补全后代码,根据程序的输出判断程序是否正确。使用if...else语句,根据两个变量初始值实现要求。任务要求:使用if...else语句还原妻子的想法。程序定义两个bool值:Egg、Bread。修改源程序,源程序是丈夫的决定。
2024-03-28 12:16:22
390
原创 c#:转义字符及Unicode值
使用转义字符,按照要求输出完整的格式。//按照任务要求将一段文字完整打印出来。//请运用转义字符相关知识。下面是一段摘自电影《超凡蜘蛛侠》的对话,在右侧Begin至End中间的补全代码。使用转义字符相关知识,按格式完整输出。可以使用不同的转义字符或输出函数。
2024-03-08 18:16:07
1453
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅