
C学习笔记
lbd0125
这个作者很懒,什么都没留下…
展开
-
输出菱形问题
#includeint main(){ int i,j,k,line,m; printf("几行?:"); scanf("%d",&line); m=(line+1)/2; //控制上半行 for(i=1;i { for(k=0;k { p原创 2016-12-10 20:38:26 · 331 阅读 · 0 评论 -
关于一个字符出现1次或者n次输出问题的解决方法
我们经常会遇到这样一类问题,就是统计一串字符中出现次数最少的那个字符,并将他的输出。这里可以用两个字符数组来解决,一个数组存放256个字符的个数,一个数组存放来自键盘的字符。程序如下:#include #define N 50int main(){ char str[N]; int count[256] = {0}; printf ("原创 2016-11-26 22:19:01 · 596 阅读 · 0 评论 -
判断质数的方法以及需要注意的地方
学过c语言的人都知道一个这样的程序,那就是判断一个数是否是质数(素数)。这里有两种方法判断一个数是否是质数:第一种方法:这种方法是依次比较2到number之间的数是否可以整除i,显然比较次数太多了,浪费时间。这里还有第二种方法:这里用了一种方法叫做几何平均数,也就是找这个数几何中间数,用sqrt实现,这样比价的次数就减少了原创 2016-11-24 23:37:53 · 881 阅读 · 0 评论 -
关于相等条件判断的漏写解决办法
写c语言程序时,经常会用到判断相等的语句即==。有时候输入程序时很容易输漏了一个=,怎么办呢?if(t == 1)很简单的一条语句,很容易打成if(t = 1)。而且编译的时候是通过的,不会报错,这样我们检查的难度就会变大。这里有一个可以减少这问错误产生的方法:if(t == 1) 可以写成 if(1 == t) 这样就会大大减少漏输等号的习惯了。原创 2016-11-23 21:14:40 · 322 阅读 · 0 评论 -
由三个数比较引发的感想
今天做了一道题:输入三个数,比较它们的大小,然后从小到大输出。一开始拿到这个题目就懵逼了,两个数比较用一个中间变量就可以了,三个数怎么比较?后来想了想,三个数应该两两比较,比如a和b比,a和c比,b和c比。就和数学上的排列组合一样,通过这种思路程序很快就可以写出来了。真是退一步海阔天空。下面是程序:原创 2016-11-22 23:05:40 · 338 阅读 · 0 评论 -
由笔试题想到的方法
今天做到一个笔试题:快速找出一个数组中最大数和第二大的数。既然这是一道笔试题,肯定要多一点思路。我一开始拿到这个题目是这么想的:用冒泡或者选择法将一个数组进行从小到大排序,然后输出最后两个数。显然这并不是最佳的方法,而且有点投机取巧。我的又想了一会,定义两个两个中间变量,分别将数组的第一个数和第二个数赋值给两个中间变量,然后这两个数进行比较,交换。再用for循环原创 2016-11-21 22:49:55 · 347 阅读 · 0 评论 -
冒泡排序和选择排序的自我见解
上了快三年的大学,今天总算弄明白了冒泡排序和选择排序。记得大一的c语言考试最后一题就是冒泡排序,我当时只是强行背下来了,而没有真正的理解。不理解的东西很容易就忘记了。今天就讲一下我对冒泡和选择排序的理解。冒泡:冒泡排序,顾名思义,像泡泡一样浮上来。对的,冒泡排序法就是找最大的数,把最大的数放到最后一个,依次循环。正如程序所示,外层循环控制比较次数,因为最后一个数不需要比较所以循环次原创 2016-11-20 23:06:37 · 413 阅读 · 0 评论 -
关于自加问题的初步见解
比如这题y的值是多少?x的值毋庸置疑肯定是11我一个同学的解释是9+9+10,也就是和linux系统运行出来的答案一样。他是这么理解的:第一步执行++x整体结果等于9(此时x=9),然后执行(x++)整体结果等于9(但是此时x不自加,x还是等于9),最后执行(++x)整体等于10,x也加到10,最后x再返回到x++做自加变成11.所以最后结果等于28.原创 2016-11-16 22:01:24 · 367 阅读 · 0 评论 -
在二级上机题中发现conio.h
conio.h不是C标准库中的头文件,在C standard library,ISO C 和POSIX标准中均没有定义。conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。 大部分DOS,Windows 3.x,Phar Lap,D原创 2017-02-19 22:56:49 · 291 阅读 · 0 评论 -
C语言中‘/n’和‘\n’(写项目时发现)
c语言中‘\n’,众所周知是换行符。而'/n'用到的人就很少了,下面介绍我写项目时发现的问题。就是灰色区域的问题,这是改好的程序。一开始这里定义了char select;scanf(“%c”, select);就写了一个scanf结果程序运行的时候直接过去了,表面上没有执行scanf。为什么会出现这个现象呢?就是这里的y/n出现的问题,/n也是一个字符,被读%c读了,所以程序直原创 2017-01-28 13:49:52 · 10485 阅读 · 3 评论 -
大端和小端
在c语言中,有一个关键字union,它定义的变量内存是公用的。比如union check{int i;char ch;} c; 它占的内存字节数就是4字节,按照最大的算。这里就引出了大端和小端的概念,大端模式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端模式:字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中原创 2016-11-27 22:01:44 · 254 阅读 · 0 评论 -
初次用函数实现strcpy的功能
今天晚上做了一个用函数实现strcpy功能的c程序,这里有几个需要注意的地方:先放程序吧;首先看copy函数部分,第一个形参是定义的指针,第二个定义了const char指针,表示这个指针数组不可改变。这个函数的作用是把第二个数组的内容复制到第一个数组中,用for循环来做赋值操作,一旦检测到‘\0’就结束循环,最后要在第一个数组末尾加上'\0',表示这个字符串结束。看main函原创 2016-11-29 23:48:50 · 774 阅读 · 0 评论 -
今日做题的一个意外发现
今天晚上试了一下puts() 的用法,发现了一个有趣的想象:发现了吗?puts()输出的字符串自动加了换行,这个发现可以的。我们再看看printf()printf()就没有那么幸运了,它没有带换行符。原创 2016-12-01 23:40:25 · 302 阅读 · 0 评论 -
字符串逆序
#include #include char *reverse(char *str, int len) //字符串倒序{ if (str == NULL) { return NULL; } char *pBegin = str; char *pLast = str; pLast = str + len -原创 2016-12-11 23:45:57 · 390 阅读 · 0 评论 -
顺序表的一些功能实现
#include #include #define INIT_SIZE 100 //线性表初始化大小#define INCRESS_SIZE 20 //顺序表满后的每次扩充大小#define ERROR -1#define OK 0#define MALLOC_ERROR -2typedef int Ele原创 2016-12-03 23:56:14 · 347 阅读 · 0 评论 -
用函数实现strcmp
花了一个晚上搞定了strcmp直接上程序这里形参用const防止字符串被误改,while里面的判断条件是两个字符串不等于‘\0’,他们如果相等通过while最后就指向了‘\0’,通过这个可以判断他们相等。原创 2016-12-05 23:28:14 · 510 阅读 · 0 评论 -
十进制转八进制
#include int main(){ int n; printf ("n = "); scanf ("%d", &n); int b[100] = {0}; int i = 0; while (n) { b[i++] = n % 8; n = n /原创 2016-12-06 21:19:49 · 458 阅读 · 0 评论 -
用单链表实现通讯录
/*********************************************************************************************************************************File Name: ******Author: *** Date: 2016-12-08原创 2016-12-09 19:51:48 · 10323 阅读 · 0 评论 -
return和exit()
根据ANSI C 的规定,在最初调用的main()中使用return与调用exit()的效果相同。因此,在main(),下面的语句: return 0; 和下面这条语句的作用相同: exit(0);但是要注意的就是,我们说的是“最初的调用”。如果main()在一个递归程序中,exit()仍然会终止程序,但是return只会把控制权交给上一级递归,直至最初的一级然后原创 2016-12-16 21:50:52 · 231 阅读 · 0 评论 -
C语言中结构体变量内存对齐
首先看下面一段代码:#include typedef int INT32;typedef unsigned char BYTE;typedef struct demo{ double s; BYTE b1; BYTE b2; INT32 i;}DEMO;int main(){ double i32;原创 2017-02-07 23:06:00 · 363 阅读 · 0 评论 -
用函数实现strcat功能
今天用C做了一道实现strcat功能的程序,也许是以前见过类似的题目,这次很快就有了思路,程序也没有问题。不多说了,上程序:这次还是用了const,因为我用的第二个数是不可以被改变的,第一个for是计算第一个数组的长度,注意分号的用法,第二个for实现把第二个数组的内容复制到第一个数组'\0'后面的位置,最后在第一个数组后面赋值‘\0’,字符串结束标志。原创 2016-11-30 23:39:56 · 1258 阅读 · 0 评论 -
4.3、字符串
1、从概念上讲,C语言中没有字符串数据类型 在C语言中使用字符数组来模拟字符串 C语言中的字符串是以'\0'结束的字符数组 C语言中的字符串可以分配于栈空间、堆空间或者只读存储区2、 char* s3 = "Hello"; 分配在只读存储区,值不能被改变 char s1[] = {'H', 'e', '原创 2017-03-31 11:36:58 · 273 阅读 · 0 评论