自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 埃拉托斯特尼筛法

2023-10-15 15:13:46 59

原创 张阿姨的烦恼

该程序中scanf要求读取到十进制整形,而字符类型的 ` 并不匹配,因此scanf在缓冲区中读取为0,也导致 ` 在缓冲区中一直存在,因而不会发生阻塞.1.问题描述:张阿姨开了一个炸鸡店,想写个程序来计算客人应付的金额,偶然发现输入“ · ” 时,会停不下来。背后到底发生了什么呢?请你给出对应的问题分析报告,并给出你的解决方案。printf("鸡腿数量:");

2023-09-19 20:38:14 87 1

原创 scanf的阻塞和缓冲区

(1)*代表不赋值,^代表跳过,[]为集合,第一个scanf的输入格式带来的效果:会清除缓冲区内非数字,然后第二个scanf可以正常输入,达到某些情况下本只想要获得数字而意外输入非法字符带来的错误(如用程序计算金额)回车符代表\r和\n(好像是,没找到准确回答),再输入第一个数据之后,再按回车,刚好符合scanf的输入格式,即清空了缓冲区,接着发生了阻塞,所以此现象会发生在任何类型。scanf("%*[^\n]%c"),%c会匹配并储存一个字符,可以起到跳过行尾换行符的作用(个人理解是%c于的格式相对应)

2023-09-19 18:53:23 310

原创 strlen和sizeof

另外:像(2)定义的数组若[]中放入数字,编译器会在多余的内存中放入0,并且计入大小。由此可以看出:(1)类型定义的数组在初始化时自动放入 \0。sizeof求的是所占空间的大小。strlen求的是字符串长度。依次输出为4,3,3,3。

2023-09-16 22:04:30 33

原创 斐波那契数列

/递归因此会多次重复计算某一个值,拖慢了运行速度。

2023-09-12 17:28:19 19

原创 求n的阶乘

1.循环:int main()int i, n;for (i = 1;i

2023-09-10 23:01:52 59 1

原创 9.10C

1.0XAA表示十六进制unsigned int类型的数据,对于八进制和十六进制,系统优先解释为无符号类型。而且若给与数组大小,sizeof输出为数组大小的给定值,如sz3,而是strlen不会。对于{}表示的数组,不计算\0,对于""表示的数组,计算 \0,并以位的方式输出。另外:sizeof在运算类型时一定要圆括号,运算特定量时圆括号可有可无。读取到\0才停止(不包括\0),输出为字符(包括标点和空格等)2.arr和&arr对应的地址值一样,但 意义不一样。}输出为3,3,10,4,3。

2023-09-10 22:44:46 39 1

原创 递归

思考方式:首先得到该多位数的每一位:可以通过除法,取商或余,要求依次输出,故取商,如123,可以轻易剥离3。(1)要求:输入一个多位数,分别依次(高位到低位)输出这个多位数的每一位。1.递归定义:程序调用自身的编程技巧成为递归.会出现stack overflow(栈溢出)要求:不创建临时变量,计算字符串长度。递归的主要思考方式:大事化小。

2023-09-09 17:52:15 25 1

原创 循环求字符串长度

3.结合循环可以获取到数组中的每个字符。4.计算长度可以想到以'\0'结束循环。1.arr传递过去的为首字符的地址。2.用*arr的方式获取到首字符。

2023-09-09 11:57:48 91 1

原创 case和逻辑或||,年份第几天问题

原因(个人):运行之前将该带有逻辑或的运算符默认为1(可能是为契合case后为常量),所以那两行实际为两个case 1。printf("%d年%d月%d日", year, month, day);改法:将case分开写,或者用if代替switch语句。printf("请输入时间\n");

2023-09-07 22:56:46 20 1

原创 组成无重复的三位数

2.遍历(按照特定次序访问数据元素的过程),大多用到循环。优解:int a,b,c分别为三位数的各位。例如:int a=132;要求:每个数在一到四之间。十位:a%100/10。

2023-09-07 16:29:34 24 1

原创 9.6 C

输出为43 3 2,原因:printf的返回值为打印的字符个数(函数的返回值可以在cplusplucs网站中查看)而unsigned作用之后,符号位变为数据位,也变为了正数,而正数三码统一,所以输出为补码。例如:#include "add.h"(引用库函数用<>,自己写的用"")++的优先级高于*,所以会先++,从而导致*p并没有改变p的大小。反码:1111111....0(反码的符号位不取反)源码:100000.....1。补码:1111111....1。4.goto语句的实现。

2023-09-06 22:51:21 29 1

原创 9.4 c

形参只是实参的一份临时拷贝,形参和实参之间没有实际联系,对形参的改变不会引起实参的改变,所以不会达到...的效果。不能实现的原因:arr传过去的是第一个元素的地址,所以形参arr是一个指针,而指针大小为四字节。//*pa即通过pa里的地址,找到a的内容;printf("找到了,下标是%d",ret);printf("找到了,下标是%d",ret);sqrt(n)用来算n的平方根,要引用math.h。printf("找不到");printf("找不到");

2023-09-04 23:02:30 30 1

原创 9.3 C

三.若引入 complex.h 的头文件,可以把complex,imaginary分别代替_complex和_Imaginary。上溢:当计算导致数字过大,超过当前类型表达的范围,会发生上溢,printf后输出inf or infinity。一.复数:float_complex,double_complex,long double_complex。float_complex类型的变量应包含两个float类型的值,分别表示复数的实部和虚部。例:double_complex cmp =1.3+2.3*I;

2023-09-03 23:00:32 41

原创 9.2 C

long 用%ld //根据计算机系统的不同可能不同,在int与long位数相同的系统中long可以用int,但这样的程序不具有可移植性(若在不同位数的系统)输出得到E,解释:定义的字符常量'FSTE',即把4个独立的ASCII码储存在32位储存单元中,而赋值给char类型的a,只能接收后8位,即E。B对应的ASCII值66本会储存在32位的储存单元中,而现在储存在8位储存单元中(所以会有%d和%c的两种打印结果)而%hd只会读取后面的16位(int为32位,short为16位的系统中)

2023-09-02 21:59:38 37

原创 9.1 C

当达到最大值时,会从起始值重新开始(溢出在c语言中属于未定义行为,以下情况只是典型,可能其他)1.%f %.2f中 .2 用于精确控制输出,指定输出的浮点数只显示小数点后两位。3.c语言把不含小数和指数的视为整形,3.14E7不是整形。0O表示八进制的前缀,也可以是空格加上0,即" 0"一个数字,字母,标点,符号为八位(第八位表示正负)十进制用%d,八进制用%o,十六进制用%x。负数的补码为负数的绝对值的各个位取反加1。例:3.14E 表示3.14*10^7。0x或0X表示十六进制的前缀。

2023-09-01 23:03:24 51 1

原创 8.29 C

一.printf("There are %d feet in %d fathoms",mouse,famous)二.printf("There is %d feet",6*famous)//即后面部分不一定为变量。1.有效命名中名称第一个字符必须是下划线或者 字母。第一个void表示该函数没有返回值。/b 代表Backplace。void:空白,无效的。2./t 代表Tab。

2023-08-29 23:08:06 53 1

原创 c语言 7.18

仍然可以输出snnd,原因:在括号里会先执行左边,为假,即为0,所以右边成立。也就包括case后的亦为整形常量,或是输出整形常量的表达式。如果条件成立,且要执行多条语句,要用大括号括起来。else和离得最近的,未被匹配的if相匹配。switch()的括号内必须是整形常量。

2023-07-18 23:16:45 41

原创 c语言 7.17

声明外部函数:extern int Add(int,int)(1)第一行:取一个空间a,存放10,地址为........(3)第三行:*为解引用操作符,将存入的10改为了20。int* p=&a;(其他类型字符出现char*等)1.意义:即打印地址,(打印出来的为16进制)语法:#define Max 100。2.指针变量:一种用来存放地址的变量。(2)第二行:将a的地址存入p。那么以后的Max全变为100。

2023-07-17 23:14:00 64

原创 代码的实例

一.比较函数if (x > y)return x;elsereturn y;int main()int a = 15;int b = 16;return 0;二.求和(1)return sum;int main()return 0;(2)int main()return 0;int n = 10;n = 20;return 0;

2023-07-17 12:01:46 87

原创 c语言 7.16

输出的时候是将补码转化成原码输出。int a=3.14,输出会警告,因为3.14属于double类型。所以,a:00000000000000000000000(32位)printf("%d\n",b)输出为10,输出a为11。理解:摘自度娘回答:首先数据在计算机中存储的是。五.条件操作符(p4 1:04:28)例:int sum=Add(a,b);int a=(类型)3.14 可。(1)&&:逻辑与,即全真为1。(2)||:逻辑或,即有真则真。所以为-1(0为正,1为负)(类型):强制类型符转换。

2023-07-16 23:52:16 68

原创 c语言 7.13

(1)先对1转为二进制1,补全比特位,即000...001(共32位)3.printf("%d\n",arr1[])在[]中输入下标。所以printf("%d\n",arr1[4])输出为5。^ 换位异或:相同为0,相异为1(同假异真)printf("%d\n",c),输出为13。& 换位与:二进制,全1为1,其余为0。printf("%d\n",b)输出为2。(2)<<之后,为0000..0010。5%2 输出为1,即取模(余数)5/2 输出为2,即取商。计算机中0为假,非0为真。

2023-07-13 22:33:13 28

原创 关于进制

2.其他进制转十进制:如二进制132,转出为:2x2^0+3x2^1+1x2^2=12。1.十进制转二进制:除以2,如259转二进制为100000011,记得余数从右往左排。4.二转十六,每四位可以(3和4都是先把分开的按照2的次方乘起来再相加)3.二转八,由于2^3=8,所以每三位二进制可以转化为一位八进制。

2023-07-12 23:04:29 84 1

原创 c语言 7.12

所以对于char arr1[]="abc"和char arr2={'a','b','c',0}两者的输出才一致。\ddd:ddd表示1~3个八进制的数字转化为十进制后对应的ASCII表中对应的字符。1.字符串:双引号引起的一串字符,如"abcde"," "表示空字符。另:对字符串"abc",其实是在末尾隐藏了结束标识'\0'存放字符串:char arr1[]="abc"也可放入'\0',相当于主动放入结束标识。2字符串的打印:"%s"a."\"具有转义的作用。将abc存入"[]"中。

2023-07-12 22:34:18 36

原创 c语言 7.11

(1)如对于输入函数,scanf来自c语言,而scanf_s来自于vs,因scanf具有可移植性(跨平台性),所以尽量用scanf_s(很多c语言库的函数都被vs认为具有危险性)(2)规避此警告:1.复制warning中use后的部分,在#include之前加:#define+复制部分(有一个空格)例:scanf("%d%d",&num1,&num2)(&为取地址,是否可以理解为上述定义的num1 num2,被取入)4.const:修饰的常变量(但仍为变量,而具有常属性)(1)"%"表示打印。

2023-07-11 22:39:06 41

空空如也

空空如也

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

TA关注的人

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