C语言
黑米姐姐
喜欢就要做到极致
展开
-
C语言:素数求解的N种境界
试除法试除法就是要判断一个数x是否为素数,就不断尝试小于x大于1的自然数,只要有一个能够整除,则x是合数,否则是素数1、境界1(最差情况下)判断x是否为素数,从2一直尝试到x-1,这种方法效率很差int main(){ int i = 0; int j = 0; int count = 0; for (i = 100; i <= 200; ++i) { for (...原创 2019-08-27 18:45:16 · 6177 阅读 · 8 评论 -
C语言:typedef与宏的区别
typedef的注意点1、typedef是定义了一种类型的新别名,与宏不同,它不是简单的字符串替换,例如:定义typedef char* ptr,实现int my_strcmp(const ptr,const ptr),const ptr并不是相当于const char*,而是char* const.2、typedef 在语法上是一个存储类的关键字,它并不真正影响对象的存储特性,例如:t...原创 2019-08-22 15:20:05 · 686 阅读 · 0 评论 -
C语言:隐式类型转换与强制类型转换
在C语言中,进行类型之间的转换有两种转换方式: 强制类型转换与隐式类型转换强制类型转换语法:(目标类型)变量名或者具体的数值结果:1、目标类型能够容纳目标值,结果不变2、目标类型不能容纳目标值,结果产生截断注意:结果产生截断与操作系统的大小端有关;并不是所有的强制类型转换都能够成功,当不能进行强制类型转换时,编译器会产生错误信息。例如:struct S{ int a; in...原创 2019-08-22 15:00:59 · 2110 阅读 · 0 评论 -
C语言:函数栈帧
函数栈帧定义在函数调用过程中,要为函数开辟空间,这个空间用来此次函数调用中临时变量的保存和保护,将这个栈空间称为函数栈帧。如何调用例如这段代码:#include <stdio.h>//函数栈帧int Add(int left, int right){ int z = 0; z = left + right; return z;}int main(){ int...原创 2019-08-22 14:23:03 · 183 阅读 · 0 评论 -
c语言总结:static关键字的用法与const*与*const的区别
在c语言中,static是用来修饰变量与函数的,主要分为:修饰局部变量static修饰的局部变量只执行一次,延长了局部变量的生命周期,让静态局部变量出了作用域依然存在,直到程序运行结束后才被释放。例如:代码1void test(){ int i = 0; i++; printf("%d ", i);}int main(){ for (int i = 0; i < ...原创 2019-07-11 14:44:34 · 299 阅读 · 0 评论 -
c语言总结8:程序环境与预处理
翻译环境(linux环境下)在翻译环境中,源代码被转换为可执行的机器指令预编译阶段:重定项,进行头文件的包含,注释的删除,#define定义符号的替换,不进行语法检查编译阶段:把c语言代码转换为汇编代码汇编阶段:将汇编指令转换为机器指令(二进制文件)形成目标文件,形成符号表,存到目标文件,符号汇总包括全局、静态变量、函数名的汇总,局部变量不汇总链接阶段:合并段表:将两个目标文件相同的段...原创 2019-07-10 19:03:27 · 108 阅读 · 0 评论 -
一个关于宏的例子:(求任意几个数的平均值)
一个关于宏的例子:(求任意几个数的平均值)#include <stdarg.h>int Avg(int n, ...){ int sum = 0; va_list arg; va_start(arg, n); for (int i = 0; i < n; ++i) { sum += va_arg(arg, int); } va_end(arg); ret...原创 2019-06-27 22:25:33 · 911 阅读 · 0 评论 -
c语言实现通讯录(存入文件)
实现一个通讯录:通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名,性别,年龄,电话号码,地址要求实现下列功能:添加联系人信息删除指定联系人信息查找指定联系人信息修改指定联系人信息显示所有联系人信息清空所有联系人以名字排序所有联系人保存联系人到文件加载联系人分为三个文件:contact.h:负责函数的声明contact .c:负责函数的实现test.c:...原创 2019-07-04 19:14:58 · 2303 阅读 · 1 评论 -
c语言总结 7:文件相关操作
文件打开和关闭规定使用fopen函数打开文件,fclose函数关闭文件FILE* fopen(const char* filename,const char* mode)//mode表示以什么形式打开int fclose(FILE* stream)文件使用方式1.“r”(只读)表示为了输入数据,打开一个已经存在的文本文件,如果指定文件不存在,则出错2.“w”(只写)表示为了输出数据,...原创 2019-07-04 16:00:57 · 190 阅读 · 1 评论 -
c语言总结 6:动态内存管理
动态内存分配介绍在开辟空间时,内存中主要有三个区,为栈区,堆区,静态常量区,栈区中中主要存储局部变量和形式参数,栈区存储由动态内存函数开辟的空间,静态常量区存储有static关键字的全局变量(但不完全是)和静态数据动态内存函数1.mallocvoid* malloc(size_t size)这个函数向内存申请一个连续可用的空间,并返回这块空间的指针,若开辟成功,返回开辟好空间的指针,若...原创 2019-07-03 16:53:19 · 134 阅读 · 0 评论 -
C语言总结5:自定义类型(结构体,枚举,联合)
1.结构体结构体声明例如描述一个学生:struct stu{ char name[20]; short age; char sex[3];};特殊声明:struct{ int a; int b; int c; char d[20];}x;struct{ int a; int b; int c; char d[20];}a[10],*p;注意:...原创 2019-06-02 19:02:27 · 472 阅读 · 2 评论 -
c语言总结 4:字符函数和字符串函数(模拟实现)
求字符串长度(strlen)size_t strlen(const char *str)函数返回字符串中’\0’之前的字符个数(不包括’\0’),参数指向的字符串必须以’\0’结束模拟实现(3种方法)int my_strlen1(const char *str)//递归{ assert(str); if (*str == '\0') return 0; else ret...原创 2019-07-03 14:45:35 · 145 阅读 · 0 评论 -
c语言总结 3:指针和数组笔试题详解
数组笔试题一维数组例如: int a[] = { 1, 2, 3, 4 }; printf("%d\n", sizeof(a));//整个数组的大小 16 printf("%d\n", sizeof(a+0));//首元素的地址 4 printf("%d\n", sizeof(*a));//首元素 4(a为首元素地址,*a为首元素) printf("%d\n", sizeo...原创 2019-07-03 11:35:55 · 463 阅读 · 1 评论 -
c语言总结 2.指针(重点)
主要内容为:字符指针数组指针指针数组函数指针指针函数复杂指针、函数指针数组回调函数1.字符指针(char*)一般使用方法为: char ch = 'w'; char *pc = &ch; printf("%c", *pc);结果为‘w’另一种使用方式为: char *pstr = "hello world"; printf("%s\n"...原创 2019-07-02 20:13:55 · 142 阅读 · 0 评论 -
c语言总结 1.数据在内存中的存储
数据类型整形家族char //字符类型(分为signed char与unsigned char,signed char 的范围为-127-128,unsigned char 的范围为0-255)short //短整型(分为signed short与 unsigned short,signed short 的范围为-32768-32767,unsigned short...原创 2019-07-02 15:46:48 · 327 阅读 · 0 评论 -
c语言实现扫雷小游戏(优化后)
游戏介绍游戏打开界面为菜单,选择‘1’开始游戏,打印出一个9*9棋盘,系统随机设置10个雷,之后玩家输入坐标进行游戏,第一次不会踩到雷,如果走的棋盘格周围的8个格子都没有雷,直接展开空格,继续扫描这8个格子各自周围的8个格子是否有雷,如果有雷则显示雷的个数,没有雷就继续展开,如果踩到雷,游戏结束,打印存放雷的信息的棋盘。实现我们需要两个棋盘,一个是程序设计者棋盘,一个为显示给玩家的棋盘1....原创 2019-04-28 13:48:00 · 629 阅读 · 0 评论 -
C语言操作符总结
一、c语言操作符分为以下类别:算数操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符逗号表达式下标引用、函数调用、结构成员1、算数操作符加+,减-,乘*,除/,取模%1、/操作符:若两个操作数都是整数则进行整数出发,若有浮点数执行浮点数除法;2、%操作符:两个操作数必须为整数。2、移位操作符<< 左移 ,>>右移...原创 2019-04-23 15:29:19 · 142 阅读 · 0 评论 -
C语言实现三子棋游戏
三子棋问题1.算法思想与实现打印游戏菜单用户输入1表示开始游戏,输入0表示结束游戏初始化棋盘与打印棋盘在屏幕上打印33棋盘,将棋盘的每一格设置为空格,当然也可以让棋盘扩展为99棋盘,可以任意扩展大小实现玩家走与电脑走玩家输入棋盘坐标下棋,电脑通过系统随机生成坐标下棋判断输赢如果显示‘C’,则表示继续,否则判断输赢2.编程思想运用二维数组,循环,嵌套,函数调用代码包含三...原创 2019-04-20 16:06:29 · 367 阅读 · 2 评论