
C语言
AI_T
欢迎互关互相交流
展开
-
筛选法求1到100之间的素数
#include "stdio.h"int main(){ int i, t, j; int a[100] = { 0 }; for (i = 1; i a[i - 1] = i; a[0] = 0; for (j = 1; j if (a[j] != 0){ t = a[j]; for (i = j+1; i if (a原创 2017-03-21 17:17:19 · 1489 阅读 · 0 评论 -
单链表面试(二)复杂链表的拷贝
已知一个链表有数据域,next指针域和随机指针域,其中随机指针域随机指向该链表的任意一节点,要求复制一条相同的链表。原创 2017-08-03 09:33:56 · 595 阅读 · 0 评论 -
单链表的增删查改等操作实现
由于数组的一些局限性,在事先必须提前定义大小,然而现实生活中,很多数据元素的大小都不能事先知道,所以数组就不能很好的处理这些事情,然而链表可以弥补数组带来的诸多不便,链表可以让我们任意为一些数据进行空间开辟,根据需要进行内存单元的动态开辟...原创 2017-07-30 11:53:12 · 724 阅读 · 0 评论 -
单链表实现文件版本通讯录
单链表的增删查找和排序还有如何写入文件,如何把文件的信息加载到链表中...原创 2017-07-21 17:59:09 · 742 阅读 · 0 评论 -
c语言i++和++i和左值的问题
在vs编译器,写c代码如下图:上图中,前缀和后缀的形式的增值操作符都复制一份变量值的拷贝, 相当于系统开辟了一个临时的空间,用于周围表达式的值正是这份临时空间,前缀操作符在进行复制之前增加变量的值,后缀操作符在进行复制之后才增加变量的值,这些操作符的结果不是被他们所修改的变量,而是变量的拷贝,它就可以很好解释为什么当你写出上面图片中的代码,编译器会报错。 参考c和指针第5章的操作符和表达式原创 2017-07-18 22:11:02 · 832 阅读 · 0 评论 -
C到C++注释的转换
利用状态机的思想来解决C注释到C++注释的转换。(不允许注释嵌套) 在状态内处理,状态间跳转,根据不同的的事情发生相应的动作,并进行相应的状态转换。原创 2017-07-30 10:59:48 · 1945 阅读 · 0 评论 -
结构体的内存对齐和位段
结构体内存对齐规则:1.第一个成员在与结构体变量偏移为0的地质处。2.其他成员变量对对齐到某个数字的(对齐数)的整数倍的地址处。//对齐数=编译器默认对齐数与该成员的较小值。vs默认对齐数为8。linux默认对齐数为4。3.结构体总大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。对齐原因:1.平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任原创 2017-07-07 09:19:03 · 459 阅读 · 0 评论 -
字符串逆置递归写法。
//递归写法字符串的逆置#include int i = 0; int j = 0;//创建两个静态变量,用于辅助递归的调用。void reverse_string(char *src){ i--;//每次调用一次减1,使指针(src+i)往后偏移一个字节。 if (src+j < src + i)//当前面的指针(src+j)的地址大于后面的指针(sr原创 2017-05-17 20:57:08 · 630 阅读 · 0 评论 -
简易版贪吃蛇小游戏。
以上就是我测试的结果,能完成基本的功能。//game.h#ifndef __GAME_H__#define __GAMAE_H__#include#include#include#include#define ROWS 20#define COLS 20#define snake_length (20*20)#define SLEEP 1000//屏原创 2017-05-17 20:23:30 · 663 阅读 · 0 评论 -
一些字符函数的实现。
#define _CRT_SECURE_NO_WARNINGS 1//求字符串长度。#define _CRT_SECURE_NO_WARNINGS 1#include#include//size_t my_strlen( const char *str)//{// assert(str != NULL);// int count = 0;// while (原创 2017-05-14 13:11:38 · 477 阅读 · 0 评论 -
一个简单函数的是如何运行的
首先看上图的中的一些指令因为CPU里的寄存器只有4个,eax,ebx,ecx,edx,所以你在编写程序的时候,可能这4个寄存器里都存储有数据了,但是你还需要再用寄存器来存储数据,这时,4个寄存器就明显的不够用了,所以我们用push也就是压栈指令将原寄存器中的内容压栈,然后这时寄存器中的数据就存到了内存中的栈段内,寄存器就空出来了,我们就可以继续使用寄存器来存储新的数据了,当我们需要使用寄存器中原创 2017-05-13 20:08:05 · 971 阅读 · 0 评论 -
模拟实现strlen函数
#define _CRT_SECURE_NO_WARNINGS 1#include#includesize_t my_strlen(const char *str){ assert(str != NULL);//判断str是否为空 if (*str++)//先对str解引用判断条件是否为真,然后str进行自增 return my_strlen(str)+1;//当*s原创 2017-04-21 23:26:58 · 396 阅读 · 0 评论 -
改进后的扫雷
game.h#ifndef __GAME2__H__#define __GAME2_H__#include"string.h"#include"stdlib.h"#include"time.h"#include"stdio.h"#define ROWS 14//行数#define LOCS 14//列数#define COUNT 30//雷的个数void s原创 2017-04-14 20:15:25 · 1226 阅读 · 0 评论 -
简易版扫雷,看见有问题的麻烦评论一下,便于修改。。。。。
game2.h#ifndef __GAME2__H__#define __GAME2_H__#define ROWS 9#define LOCS 9int init_arr(char arr[ROWS][LOCS], int row, int loc);void dis_play(char arr[ROWS][LOCS], int row, int loc);void原创 2017-04-07 00:06:19 · 511 阅读 · 0 评论 -
花括号能否正确配对,有没有大神帮忙看一下对不对,十分感激
#define _CRT_SECURE_NO_WARNINGS 1#include"stdio.h"#include"iostream"int main(){ char ch = '1'; int count = 0, x = 1; while (ch != '\n') { scanf("%c", &ch); if (ch == '{') {原创 2017-03-29 23:41:31 · 426 阅读 · 0 评论 -
第一次感觉c其实也这么好玩。
#define _CRT_SECURE_NO_WARNINGS 1#include "stdlib.h"#include "time.h" #include "stdio.h"int main(){ srand ((int unsigned)time(NULL)); void mean(); void play(); int input; do原创 2017-03-25 22:12:17 · 664 阅读 · 0 评论 -
有没有大神帮忙精简一下,欢迎私信。
//在一个排好序的数组中间插入一个数#include"stdio.h"int main(){ int i, n, c; printf("please a n:"); scanf_s("%d", &n); int arr[6] = { 1, 3, 4, 4, 7, 9 }; for (i = 0; i { if (i = 6) { for (原创 2017-03-22 23:29:05 · 1032 阅读 · 1 评论 -
简单for循环
#include "stdio.h"int prime(int m);int main(void){ int m1,m2,i,count,w1,w2; count=0; for(i=6;i { for(m1=2;m1 for(m2=2;m2 { if(i==m1+m2) { w1=prime(m1); w原创 2017-03-19 23:09:16 · 1374 阅读 · 1 评论 -
单链表面试题(一)
链表是最基本的数据结构,链表的相关操作也比较简单,同时它也包含了指针的运用,能把许多知识结合起来,因此链表的面试题在面试中占据很重要的地位,所以我整理了一些关于链表的面试题与大家分享。下图是其中一道求带环链表入口点题的分析图原创 2017-08-02 11:48:47 · 697 阅读 · 0 评论