10 2018 档案

摘要:比如 #define NUM 3; 注意末尾有一个分号 printf("%d",NUM); 宏替换的时候会变成这样 printf("%d",NUM;); 会多出一个分号,这样会提示语法错误。有点类似sql注入 那怎么改呢? 可以改成#define NUM 5); printf("%d",NUM 这样 阅读全文
posted @ 2018-10-27 00:10 eatwhat 阅读(3665) 评论(0) 推荐(0) 编辑
摘要:这是一篇转载的博文,感觉有点新意,特此记录一下。 https://www.cnblogs.com/chenyangyao/p/5222696.html 阅读全文
posted @ 2018-10-26 15:03 eatwhat 阅读(124) 评论(0) 推荐(0) 编辑
摘要:比如abc123ef 输出123 123423ef 输出123423 我的思路是这样的,遍历每个字符,如果是数字那么就把它放入另外一个数组里面,然后把另外一个全是数字的数组里面,取出一个数字乘以权重 ,连加起来。 但是不支持123abc456 这样的字串,结果是123456。 阅读全文
posted @ 2018-10-25 20:01 eatwhat 阅读(766) 评论(0) 推荐(0) 编辑
摘要:scanf是从标准输入读取数据的 假设现在标准输入中的数据是123456 int a; 而我scanf("%d",&a); 会把123456转化为数字然后存入到a中。 如果标准输入中的数据是123?456 而我scanf("%d?",&a) 会把123转化为数字存储在a中。 scanf通常有个格式符 阅读全文
posted @ 2018-10-25 18:59 eatwhat 阅读(1777) 评论(0) 推荐(0) 编辑
摘要:什么意思,是从键盘读取一个数字存放到a中。错,scanf和所有从键盘获取输入数据的函数都不是直接从键盘获取数据的,而是从“标准输入”获取数据的,如果标准输入没有数据,才让用户从键盘输入数据的。 当程序提示我们输入数据的时候实际上发生了这样的过程: 键盘数据 缓冲区 标准输入 缓冲区你可以理解为程序分 阅读全文
posted @ 2018-10-25 18:05 eatwhat 阅读(1275) 评论(0) 推荐(0) 编辑
摘要:在网上看到一个博客专门写了关于设计模式的文章,感觉很有用。其实,我感觉数据结构 算法 设计模式 这三样同等重要啊。 数据结构 算法相对而言接触的比较多,但设计模式这个东西真的一头雾水,有时候觉得别人写的代码结构很好,感觉很舒服,我想这应该和设计模式有关系的,以我对设计模式浅显的认识,好的设计模式会让 阅读全文
posted @ 2018-10-25 07:41 eatwhat 阅读(1547) 评论(0) 推荐(0) 编辑
摘要:putc是把一个字符写入到指定文件中,每写一个字符,文件指针自动加1. 我写了一个随机生成255字符到d:/456.txt的程序。 阅读全文
posted @ 2018-10-25 01:18 eatwhat 阅读(187) 评论(0) 推荐(0) 编辑
摘要:getc函数的作用是从打开的文件中获取一个字符,并加文件指针自动加1,获取的字符在返回值中。 我写了一个读取一个文件255个字节的程序。 %02X ,X意思是用大写的16进制输出,2的意思是每个输出占用2个位置,0是说一位数字则前面补0凑成两位数字。 运行结果: 阅读全文
posted @ 2018-10-25 00:53 eatwhat 阅读(258) 评论(0) 推荐(0) 编辑
摘要:一直对这两个东西懵懂的感觉,今天才算是明白了。 这个东西是命令行工具必须的,因为一般命令行工具都是需要传递一堆命令的, 比如test.exe -a -m -t /f 类似这种 argc参数是存放参数的个数的,比如上面就是4个 argv是存放当前可执行文件的名字和参数的值,比如argv[0]是test 阅读全文
posted @ 2018-10-25 00:02 eatwhat 阅读(258) 评论(0) 推荐(0) 编辑
摘要:int a=5; int *p p=&a 左边p是一个int *类型 右边&a这是个什么类型呢? 也是int *类型,a是一个int类型的地址,&是取地址,所以&a是取的一个int类型的地址,所以是int *类型 以前对&a类型比较模糊。 阅读全文
posted @ 2018-10-24 00:28 eatwhat 阅读(1198) 评论(0) 推荐(0) 编辑
摘要:一个数组能不能把数组元素大小作为一个元素放在数组的末尾 如果是char类型数组 char string[6]={'h','e',l',l','o',5}; 我觉得是可以的,但是如果这个数组元素比较长,而程序员不小心把有可能就把最后一个元素当作字符来输出了,这时候会影响到程序,所以直接数组大小作为数组 阅读全文
posted @ 2018-10-23 22:33 eatwhat 阅读(8923) 评论(0) 推荐(0) 编辑
摘要:int a[3]; 如果a的地址是x; 那么a[i]的地址=x+i*sizeof(int); 所以a[0]的地址=x //数组开始的地址和数组第一个元素的地址是同一个地址 a[1]的地址=x+1*4=x+4 a[2]的地址=x+2*4=x+4 所以只要给出一个数组的第一个元素开始的地址和这个数组元素 阅读全文
posted @ 2018-10-23 16:52 eatwhat 阅读(2923) 评论(0) 推荐(0) 编辑
摘要:那句flag=0很关键。 感觉自己while循环用的不是很好呀,尤其是while里面用了if这种类型的,一会就绕晕了。 阅读全文
posted @ 2018-10-23 00:12 eatwhat 阅读(2436) 评论(0) 推荐(0) 编辑
摘要:可能比较难想的地方就是当前元素之前的元素怎么弄。 如果设当前元素为m[i]的话,那么之前元素就是 for(j=0;j<i;j++) { m[j]//这就是当前元素之前的元素 } m[i]之前一个元素是m[i-1],所以m[i]之前所有的元素的索引就是从0~i-1 for(j=0;j<i;j++) j 阅读全文
posted @ 2018-10-22 22:31 eatwhat 阅读(361) 评论(0) 推荐(0) 编辑
摘要:昨天躺在被窝里面看了几页电子书,今天写下来。 数据库就是存放数据的仓库。 DBMS的意思是数据库管理系统,作用就是“管理”数据库的。“管理”这两个字简单说来就是“增删改查”。所以DBMS就是能够对数据库实现增删改查的软件。常见的数据库管理系统有MYSQL SQLSERVER ORACLE。 ODBC 阅读全文
posted @ 2018-10-18 23:07 eatwhat 阅读(845) 评论(0) 推荐(0) 编辑
摘要:循环语句从功能上讲是说重复做一件事情,从代码优化角度来讲是顺序语句的简写。 循环语句从功能上讲是说重复做一件事情,这个很容易理解。 for(int i=1;i<10;i++) { } 重复做10次事情,什么事情呢?就是花括号里面的东西。 从代码优化角度来讲是顺序语句的简写。 如果没有循环语句,我要打 阅读全文
posted @ 2018-10-17 23:56 eatwhat 阅读(879) 评论(0) 推荐(0) 编辑
摘要:我在之前的某篇文章里面提到过,只不过语言很罗嗦,今天又有了新的感想 数组是可以部分初始化的,剩下的部分被自动设置为0 int num[6]={1,2,3}; 意思是把num[0] num[1] num[2]分别设置为1 2 3,而其它元素被自动设置为0 int num[6]={0}会把所有元素都初始 阅读全文
posted @ 2018-10-17 23:38 eatwhat 阅读(381) 评论(0) 推荐(0) 编辑
摘要:给定一个数组,求数组中的最大值。 用假设法可解,思路是,把数组中随便一个元素设置为最大值,然后让其它元素和它比,如果比当前最大值大,那么最大值就被设置为这个元素,这个过程有点类似打擂台,共有N个人打擂台,其中一个人说,我是最厉害的,然后后面一个人把他打败了,它就编程最大的了,前面就被淘汰了,擂台上始 阅读全文
posted @ 2018-10-17 21:58 eatwhat 阅读(479) 评论(0) 推荐(0) 编辑
摘要:看上面的代码int i,在定义i的时候我是默认i的含义是描述次数的,所以int i=1;i<=6;i++的含义是重复做一件事情做6次。但是在循环体内部引用数组的时候也出现了i,count[i-1],既然i是次数那么i-1也是次数。可是我直到i-1是数组的索引值,而次数和索引值这是两个完全不同的语义, 阅读全文
posted @ 2018-10-16 21:26 eatwhat 阅读(227) 评论(0) 推荐(0) 编辑
摘要:由于刚学习了数组,那么就用数组了。 可能出现的点子是1~6共六种,而且次数是一个整数,所以我们定义一个包含6个元素的整型数组来存放结果 int count[6]={0} 看题目做6000次,这是重复做一件事情,我们可以用for循环 for(int i=1;i<=6000;i++)//i表示做一件事情 阅读全文
posted @ 2018-10-16 20:39 eatwhat 阅读(1099) 评论(0) 推荐(0) 编辑
摘要:其实就是把变量或常量复制了一份给函数中的变量,简单说来就是复制的过程。 有一个很经典的问题:用函数交换两个变量的值。 int a=1; int b=2; swap(a,b) 有一个函数是这样实现的 voidswap(int m,int n) { int t; t=m;m=n;n=t; } print 阅读全文
posted @ 2018-10-16 13:55 eatwhat 阅读(1532) 评论(0) 推荐(0) 编辑
摘要:如果没有srand,那么rand在我电脑上运行每次返回的随机数是一样的。如果如果先调用srand,而且srand的参数不一样,那么最后产生的随机数就会不一样?那怎么然srand的参数是不一样的呢? 是不是感觉有点鸡生蛋 蛋生鸡的感觉,想一下什么东西是每个人都不一样的,电脑运行时间,或者当前鼠标的问题 阅读全文
posted @ 2018-10-15 15:51 eatwhat 阅读(268) 评论(0) 推荐(0) 编辑
摘要:设a和b是正整数 a+b=30 且a*b=221 求a和b的值 思路就是穷举a和b的值,每次得到a和b的一个值,看是否同时满足a+b=30且a*b=221,如果满足,那么就输出。 那么a和b的的取值范围就是关键了 由a+b=30且a和b是正整数得出0<a<=30 ,0<b<=30 由a*b=221得 阅读全文
posted @ 2018-10-15 13:27 eatwhat 阅读(1804) 评论(0) 推荐(0) 编辑
摘要:用户输入一个数字N,输出一个N*N的空心矩形,N最小为3 效果如下: 思路是这样的,首先拿到这道题是没有思路的,但我们可以举几个例子,当N等于3的情况,当N=5的情况,发现第一行和最后一行是相同的,而第2行到第N-2行也是相同的。先用一个循环控制输出的是哪一行,然后里层循环控制每行的字符应该是什么? 阅读全文
posted @ 2018-10-15 11:32 eatwhat 阅读(2129) 评论(0) 推荐(0) 编辑
摘要:记得以前也写过,当时不会写是看了别人的答案才写出来的,今天再写发现还是不会写,看来上次是根本就没有学会呀,不过苦思冥想还是想出来一种不那么好的方法,好在自己理顺了思路,是自己研究出来的成果。 输出1000以内的素数,那么只需要每次取出一个数,然后把这个数依次除以从2到它本身,看余数,如果余数有0的情 阅读全文
posted @ 2018-10-14 22:01 eatwhat 阅读(8264) 评论(0) 推荐(0) 编辑
摘要:我觉得但凡是循环都要注意两个点,第一个是循环继续的条件,第二个是溢出的问题。 循环条件有什么问题呢? 循环是有可能一次也没有执行,比如n>input的时候,可以对input和n做一个判断,如果n<=input的时候才进行循环,这样可以避免问题。 for (n = 1; n <= input; n++ 阅读全文
posted @ 2018-10-14 11:25 eatwhat 阅读(351) 评论(0) 推荐(0) 编辑
摘要:OK,先审题,我们最后要输出的那些数是需要满足两个条件的,第一个条件是,这个数不是3的倍数,第二个条件是这个数是偶数。也就是这样的数需要同时满足这两个条件的时候才把这个数输出。 不是3的倍数这个条件在c语言中怎么表达出来呢? 先想一下它的反面,如果一个数是3的倍数改怎么表达,那么它的反面就OK了,n 阅读全文
posted @ 2018-10-13 21:37 eatwhat 阅读(819) 评论(0) 推荐(0) 编辑
摘要:while循环常用于那种不知道循环次数是多少的情况,比如让用户循环输入一个整数,直到输入某个特殊的字符为止,你根本没法直到这个循环会进行的次数。 for循环多用于循环次数比较明确的情况,比如for(n=1;n<10;n++),这种一眼就能看出来要循环几次,说到这里,启示for循环还有一个特点就是比较 阅读全文
posted @ 2018-10-13 19:26 eatwhat 阅读(1747) 评论(0) 推荐(0) 编辑
摘要:int a; scanf_s("%d",&a); while(a>0) { //do something; } while循环先要判断条件是否成立,如果不成立,那么就直接越过循环,所以while循环执行的次数最少是0次。 do while 循环执行的次数最少是1次。 根据需要来判断是需要while还 阅读全文
posted @ 2018-10-13 16:54 eatwhat 阅读(1876) 评论(0) 推荐(0) 编辑
摘要:switch case 当case是某个值的时候会直接把流程执行到那里,只进行一次判断。 而多重else if,else if的层次越深,需要判断的次数就越深。如果判断条件是比较复杂的,那么就会影响性能。 就上面那个switch case 用else if也能实现 如果用户输入的是0,那么需要经过i 阅读全文
posted @ 2018-10-13 01:38 eatwhat 阅读(2484) 评论(0) 推荐(0) 编辑
摘要:这是一个简单的四则运算的程序,里面用到了if else ,用if else 就一定要明白程序执行的流程,当op==‘+’的时候,执行 ans=(float)a+b,执行完这句之后程序流程就到了printf("%.2f",ans)这里了,一定要明白这里,op==‘+’后面的else都不会执行的。 阅读全文
posted @ 2018-10-13 01:02 eatwhat 阅读(4352) 评论(0) 推荐(1) 编辑
摘要:一个程序的要求如下,输入一个学生的数学成绩,如果大于等于60,那么就输出good,如果小于60那么输出not good int a scanf_s("%d",&a) if(a>=60) { printf("good"); } if(a<60) { printf("not good"); } 逻辑上是 阅读全文
posted @ 2018-10-13 00:10 eatwhat 阅读(2307) 评论(0) 推荐(0) 编辑
摘要:给定两个变量a和b,从小到大输出a和b的值。 OK,想一下a和b的关系有哪几种? 实例化 比如 第一种5和3 第二种3和5 第三种3和3 第一种代表a大于b,这种我们需要交换a和b的值。 第二种代表a小于b,这种我们不需要处理,直接就可以输出 第三种代表a等于b,这种我们也不需要处理,直接就可以输出 阅读全文
posted @ 2018-10-12 21:22 eatwhat 阅读(641) 评论(0) 推荐(0) 编辑
摘要:有两个变量a 和b,想要交换它们的值 int a,b; 能不能这样操作呢? b=a; a=b; 不能啊,这样操作的意思是把a的值放到b中,然后b中的值已经被覆盖掉了,已经不是b原来的那个值了,所以是没有意义的。 OK,既然不能这样操作,那怎么办? 看一下问题出在哪里,是不是b的值被覆盖掉了,那么可以 阅读全文
posted @ 2018-10-12 21:01 eatwhat 阅读(987) 评论(0) 推荐(0) 编辑
摘要:比如三个整数是 10 12 11,输出11 还是按照从结果出发思考问题 我们用middle变量来存放中位数 那么肯定有int middle 用户输入三个数分别是a b c 最后的结果无非是a是中位数 或者b是中位数 或者c是中位数 如果a是中位数则,middle=a 那么a是中位数满足什么条件呢? 阅读全文
posted @ 2018-10-12 17:00 eatwhat 阅读(3088) 评论(0) 推荐(0) 编辑
摘要:给定三个数a b c求最大的数 正向思维是这样考虑的,先求出a和b之间最大的,可能是a可能是b,然后和c比较,最后的结果可能是a 可能是b 可能是c 从结果出发是怎么思考问题的。 不管怎么样,我们最后肯定是要输出那个max的,那么我们 肯定要有一个int max; 这个max的值可能是a 可能是b可 阅读全文
posted @ 2018-10-12 15:16 eatwhat 阅读(413) 评论(0) 推荐(0) 编辑
摘要:https://www.youtube.com/playlist?list=PLY_qIufNHc293YnIjVeEwNDuqGo8y2Emx 感觉这个教程不错 阅读全文
posted @ 2018-10-11 23:22 eatwhat 阅读(298) 评论(0) 推荐(0) 编辑
摘要:10除以3的整除就是相当于 10-3=7 7-3=4 4-3=1 共减了三次,那么10整除3的结果就是3,最后的结果1小于3了,那么这个1就是余数的结果。 阅读全文
posted @ 2018-10-11 18:55 eatwhat 阅读(2117) 评论(0) 推荐(0) 编辑
摘要:说起一元二次不等式的解法真的不记得了,只是大概记得和一元二次方程的两个根有关系。 (x+1)(x-3)<0 这个不等式的集解如果熟悉解法的同学可能一秒就知道答案了,-1<x<3 对于不熟悉解法的同学怎么办呢?我这里说下我的方法。 (x+1)(x-3) 这是什么? 我们把x+1看作一个数,x-3看作另 阅读全文
posted @ 2018-10-10 20:23 eatwhat 阅读(2559) 评论(0) 推荐(0) 编辑
摘要:意思就是第二个元素的num[2]等于第一个元素的num[0]+num[1]+num[2] 这个写起来,确实废了点时间,尤其是数组索引多的时候,容易搞错,比如num该用i索引的时候却用成了j索引。 阅读全文
posted @ 2018-10-02 16:04 eatwhat 阅读(926) 评论(0) 推荐(0) 编辑
摘要:效果如下: 外层循环的count++能不能放到里层循环ch++ 的后面? 不能,因为每次循环都执行j++,count++,j是从0开始的,count是从1开始的,所以j永远比count小的,那意味着里层循环变成一个无限循环了。 阅读全文
posted @ 2018-10-02 09:12 eatwhat 阅读(957) 评论(0) 推荐(0) 编辑
摘要:while循环是先检测条件符合不符合,符合才执行循环体内容,不符合就跳过while循环。 就和一个房间有两个门,一个前门,一个后门,while循环是当你进入前门的时候有人会检查你的身份,只有身份符合条件才让进入房间。 do while循环是从前门进来的时候不检查,当你后门出去的时候检查。 阅读全文
posted @ 2018-10-01 16:06 eatwhat 阅读(362) 评论(0) 推荐(0) 编辑
摘要:不管是while循环还是for循环都隐含着一个if else的结构,就是说,if 条件满足,那么就执行循环体内部的语句,else就做循环体外部的事情。 有一个例子我觉得特别典型,程序内部定义了一个特定的数,重复让用户输入一个数,如果这个数不等于那个特定的数,那么就循环输入,等于就输出祝贺你。 int 阅读全文
posted @ 2018-10-01 16:01 eatwhat 阅读(325) 评论(0) 推荐(0) 编辑