C语言
C语言编程
何小柒(qi)~
烫好头发就不要后悔,笑,就真诚的笑,买了就不要比价格,做个坦坦荡荡的女孩吧!
展开
-
C语言 6:例题
定义的大小为100的整型数组,使用随机函数给数组元素赋值,数值的范围是1-100,并且不允许重复。定义数组:<类型>数组名【<元素数量>】,必须为>0的整型常量表达式。2.数组:元素类型+元素数量(开辟空间大小)4.判断是否为闰年,并且输出每个月的天数。方法二:switch语句。原创 2023-09-26 16:23:47 · 71 阅读 · 0 评论 -
C语言 5:bool类型,关系表达式,逻辑表达式,分支语句,函数调用机制,break,continue,goto,return/exit跳转语句
switch循环中只有break才能跳出循环否则一直执行下一个break语句例题输入学生成绩,求学生成绩取值");case'A'break;//A,B,C,D,E均为常量case'B'break;case'C'break;case'D'break;case'E'break;defaultbreak;return0;}}原创 2022-07-27 14:18:40 · 1012 阅读 · 2 评论 -
C语言 4:汇编语言指令介绍
数字指令介绍1EAX“累加器”(accumulator),它是很多加法乘法指令的缺省寄存器。2EBX“基地址”(base)寄存器,在内存寻址时存放基地址。3ECX计数器(counter),是重复(REP)前缀指令和LOOP指令的内定计数器。4EDX则总是被用来放整数除法产生的余数ESI/EDI分别叫做“源/目标索引寄存器”(source/destinationindex),因为在很多字符串操作指令中,DSESI指向源串,而ESEDI指向目标串。EBPPOP。...原创 2022-07-27 13:44:40 · 455 阅读 · 0 评论 -
C语言 2:求三数字最大值,求三数字中间值,编写程序步骤
输入三个值,先将三个值进行排序,在输出中间值,即为所求数字。(1)需求提出自己对于代码的需求,即提出问题。(5)测试对自己编写代码的代码模块进行测试。(4)实施程序代码的实施,即编码的实现。(2)分析对提出的问题需求进行分析。(3)设计即对代码的算法进行设计。输入三个数字,求其中最大的数字。输入三个数字,求输出中间值。...原创 2022-07-24 23:49:40 · 3564 阅读 · 0 评论 -
C语言 1:计算机软硬件基础,数据类型和关键字,进程
1.一个C语言源程序可以由一个或多个源文件组成。2.每个源文件可由一个或多个函数组成。3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。4.源程序中可以有预处理命令(include命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。5.每一个说明,每一个语句都必须以分号结尾。6.标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。程序的一次执行过程,且是随时间流逝的。...原创 2022-07-24 23:46:51 · 291 阅读 · 0 评论 -
C语言:指针与指针变量
1.指针和指针变量的区别(1)我们在定义一个变量a时,变量a本质上代表一个存储单元,CPU通过该存储单元的地址访问该存储单元中的数据。所以a即会表示存储单元的地址,也代表存储单元中的数据。(2)指针和指针变量的区别指针:系统为每一个内存单元分配一个地址值,C/C++把这个地址值称为“指针”.如:int i= 5;则存放变量i的内存单元的地址 &i 被称为指针。地址。指针变量:指针变量是存放前指针的变量,也可以定义为指针变量是存放变量所占内存空间首地址的变量。所以说,指针变量就是存放指针的变原创 2021-05-17 23:00:36 · 2343 阅读 · 0 评论 -
C语言:文件操作2
1.文件操作函数2.自行编写拷贝函数#include<stdio.h>#include<Windows.h>int main(int argc, char* argv[])//形参,退化为二级指针和数组{ if (argc < 3) { printf("copy file error \n"); exit(EXIT_FAILURE); } FILE* fr, * fw; char ch = '\0'; errno_t rx = fopen_s(原创 2021-08-26 22:44:03 · 84 阅读 · 0 评论 -
C语言:文件操作
1.文件操作文件是操作系统存放数据的最小单位,数据的输入设备,输出设备。原创 2021-08-26 19:18:27 · 89 阅读 · 0 评论 -
C语言:柔性数组
1.在C语言中,可以使用结构体产生柔性数组,结构体的最后一个元素可以是大小未知的数组,数组不占有空间,它是一个偏移量,结构体有一个限制,柔性数组涉及到最末尾。柔性数组所占字节个数只和类型大小有关。...原创 2021-08-23 12:13:16 · 51 阅读 · 0 评论 -
C语言:单链表的递归逆置和插入排序
1.递归逆置ListNode* RevList(ListNode* pre, ListNode* p){ ListNode* tail = nullptr; if (p != nullptr) { tail = RevList(p, p->next); p->next = pre; } else { tail = pre; } return tail;}void ListResver(LinkList* plist)//单链表的逆置(不带头结点){ ass原创 2021-08-14 16:07:33 · 251 阅读 · 0 评论 -
C语言:6_6上机题
#include <stdio.h>#include <assert.h>#include <malloc.h>#include <ctype.h>#include <string.h>void Vowel(char *des, const char *src){ assert(des != NULL && src != NULL); if(des == NULL || src == NULL) return.原创 2021-07-25 15:17:49 · 109 阅读 · 0 评论 -
C语言:逆置单链表
1.逆置单链表头插法,定义两个指针ListNode* Reverse(ListNode* p)//不带头结点的链表逆置{ if (p == nullptr || p->next == nullptr)//判断是否只有一个节点,若只有一个节点,则不逆置 { return p; } ListNode* head = (ListNode*)malloc(sizeof(ListNode)); head->next = nullptr; while (p != nullptr)原创 2021-07-22 16:21:41 · 3054 阅读 · 0 评论 -
C语言:单链表所有操作
1.结构体变量访问成员用mylist.head(用点运算符访问,不用指向符,只有指针用指向符访问)2.此两种访问方式相同3.删除链表某个节点bool Erase_Item(LinkList* plist, int pos){ assert(plist != nullptr); ListNode* pre = FindPos_Pre(plist, pos); if (pre == nullptr || pre->next == nullptr) return false; ListN原创 2021-06-18 18:44:21 · 67 阅读 · 0 评论 -
C语言:链表基础之插入,删除,初始化链表
1.全局变量的未初始化的数值一般都被系统初始化为0局部变量的未初始化数值一般都被系统初始化为随机值, 主函数在栈区分配空间,无论是全局指针,全局数组,字符数组,整型数组,double数组,全局结构体变量未初始化,都在.bss区域初始化。数据区:字符串常量区(只读数据区),.bss区域,未初始化区域,已初始化区域。2....原创 2021-06-16 20:32:04 · 1357 阅读 · 0 评论 -
C语言:5_29上机题
#include <stdio.h>#include <math.h>#include <assert.h>#include <stdlib.h>//include <malloc.h>#include <ctype.h>void SiftPrime(int n){ //assert int *arr = (int *)malloc(sizeof(int) * n);//申请空间 存放标记位 0代表已经.原创 2021-06-10 10:32:17 · 51 阅读 · 0 评论 -
C语言:排序的三种方式
1.产生随机值:(1)冯诺依曼(2)布朗运动(油灯)原创 2021-06-09 21:25:58 · 126 阅读 · 0 评论 -
C语言:字节个数,二分查找
1.原码:所谓原码是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值大小。正数的原码=>反码=>补码负数的补码是符号位不变,其余位按位取反,在加1变为补码。2.数值的值域和类型有关无符号:0-127有符号:1字节:1111 1111(-1)2字节:1111 1111 1111 1111(-1)4字节:1111 1111 1111 1111 1111 1111 1111 1111(-1)无符号:1字节:1111 1111(0-255)2字节:11原创 2021-06-09 19:22:15 · 118 阅读 · 0 评论 -
C语言:动态开辟二维数组: malloc,拷贝函数,二维数组,多维数组开辟
1.堆区和栈区的区别(1)管理方式:栈由系统自动管理,堆由程序员控制,使用方便,但是容易产生泄露。(2)生长方向:栈向低地址扩展,是连续的内存区域,堆向高地址扩展,是不连续的内存区域,这是由于堆区管理系统用链表来存储空闲内存,自然不连续,而链表从低地址向高地址遍历。#include<stdio.h>#include<assert.h>#include<stdlib.h>int main(){ int n = 0; scanf_s("%d", &n原创 2021-06-04 21:03:27 · 413 阅读 · 0 评论 -
C语言:查表法 置零 置1
1.位操作 &(位与)一个为0,都为0 |(位或)一个为1,则都为1 ~(位反)取反 ^(异或)相同为1,相异为0 位操作只对整型有效&&逻辑与 一个非0变为真1 && 一假则假 ||简洁或 一假则假假: false 0 ‘\0’ NULL&和0与可以置零,|和1或可以置1^异或 a(异或)a=1 不同的两个数字异或可以置0int GetX1Bit(int x){ int sum = 0; while (x != 0) { if原创 2021-05-31 18:52:58 · 373 阅读 · 0 评论 -
C语言:结构体字节
1.分块查询方法一:for循环为主#include<stdio.h>#include<assert.h>#include<string.h>#include<stdlib.h>#include<limits.h>int FindValue(int(*br)[4], int row, int col, int val)//分块查询{ assert(br != nullptr); int r = 0, c = col - 1; w原创 2021-05-31 16:51:29 · 182 阅读 · 0 评论 -
C语言:结构体类型,引用,数组
1.设计结构体分号不可或缺,结构体变量,结构体变量占有存储空间,存储东西#include<stdio.h>#include<ctype.h>#include<assert.h>#include<limits.h>#include<string.h>#include<stdlib.h>#include<time.h>#include<windows.h>struct StudentA//普通指针原创 2021-05-30 22:48:49 · 628 阅读 · 0 评论 -
C语言:C语言结构体
1.状态模式switch语句计算字符串里面的英文字母个数#include<stdio.h>#include<ctype.h>#include<assert.h>#include<limits.h>#include<string.h>#include<stdlib.h>#include<time.h>#include<windows.h>#define BEGIN 1#define I原创 2021-05-30 16:36:36 · 49 阅读 · 0 评论 -
C语言:扫雷小游戏
1.编代码的顺序:(1)用户需求(2)分析(3)设计(4)实施(5)代码测试2.扫雷小游戏不完全代码#include<stdio.h>#include<ctype.h>#include<assert.h>#include<limits.h>#include<string.h>#include<stdlib.h>#include<time.h>//随机分布型#define INIT_VIEW原创 2021-05-30 15:07:17 · 44 阅读 · 0 评论 -
C语言:作业5_20
4.输人一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。#include<stdio.h>//4int main(){ char c; printf("please intput:"); int el = 0, sp = 0, nu = 0, other = 0; while ((c = getchar() )!= '\n') { if (c == '\n') { break; } if ((c >= 'A' && c原创 2021-05-29 15:45:39 · 50 阅读 · 0 评论 -
C语言:动态内存管理
1.栈区空间较少动态开辟数组#include<stdio.h>#include<ctype.h>#include<assert.h>#include<limits.h>#include<string.h>#include<stdlib.h>int main(){ int n = 0; scanf_s("%d", &n); int ar[n]; return 0;//c99标准}只可以开辟1024,原创 2021-05-29 01:27:22 · 86 阅读 · 0 评论 -
C语言:Ip地址 动归方程式
1.2.sprint函数哑元结构原创 2021-05-28 21:04:17 · 108 阅读 · 0 评论 -
C语言:二级指针-二维数组
解引用消去指向能力int a3 = 0, a2 = 0, a1 = 0, a0 = 0;int* p3 = &a3, * p2 = &a1, * p0 = &a0;int** s = &p0;原创 2021-05-28 00:31:19 · 2030 阅读 · 0 评论 -
C语言:递归函数2
1.斐波那契数列前一项与后一项比值为黄金分割数#include<stdio.h>#include<ctype.h>#include<assert.h>//斐波那契数列 1 1 2 3 5 8 13...int main(){ const int n = 20; int ar[n] = { 1,1 }; for (int i = 2; i < n; ++i) { ar[i] = ar[i - 1] + ar[i - 2]; } for (原创 2021-05-26 23:14:31 · 78 阅读 · 0 评论 -
C语言:递归函数1
1.函数调用机制局部变量全局变量原创 2021-05-26 09:02:35 · 62 阅读 · 0 评论 -
C语言:指针
1.无类型指针对函数返回限定,对函数参数限定当函数不需要返回值时,必须使用void限定例:void fun(int a)当函数不允许接受参数时,必须使用void限定例:int fun(void)void 不能定义对象void(泛型指针) 可以定义指针变量,可以指向任意类型变量的地址char ch = 'a';int x = 10;double dx = 12.23;void* vp = &ch;vp = &x;vp = &dx;void* vp = &原创 2021-05-25 15:31:43 · 53 阅读 · 0 评论 -
C语言:拷贝函数
1.拷贝函数#include<stdio.h>#include<assert.h>#include<stdlib.h>int my_strlen(const char* str){ assert(str != nullptr); const char* cp = str; while (*cp != '\0') { cp++; } return (int)(cp - str);}int my_strlen(const char* str)原创 2021-05-25 09:26:19 · 1949 阅读 · 0 评论 -
C语言:5_16上机题
1.5.从键盘输入一个小于1000的正数,要求输出它的平方根(如平方根不是整数,则输出其整数部分)。要求在输人数据后先对其进行检查是否为小于1000的正数。若不是,则要求重新输人。#include<stdio.h>#include<math.h>//5unsigned int My_sqrt(unsigned int val){ int tmp = 1; while ((tmp * tmp) <= val) { tmp++; } return --tmp原创 2021-05-20 23:49:54 · 175 阅读 · 0 评论 -
C语言:指针二
1.失效指针#include<stdio.h>#include<assert.h>#include<stdlib.h>int* GetArray(){ const int n = 10; int ar[n] = { 12,23,34,45,56,67,78,89,90,100 }; return ar; }int main(){ int* ip = nullptr; ip = GetArray(); for (int i = 0; i <原创 2021-05-20 11:24:46 · 76 阅读 · 0 评论 -
C语言:编程练习课程
1.断言(assert)作为一种软件调试的方法,提供了一种在代码中进行正确性检查的机制。assert 的应用范围很多,主要包括1、检查控制流;2、检查输入参数是否有效;3、检查函数结果是否有效;4、检查程序不变量2.判断指针是否为空的两种办法void Print_Ar(const int* br, int n){ assert(br != nullptr);//方法一 断言机制,决定无错误 if (br == nullptr) { printf("intput pointer nullpt原创 2021-05-18 23:05:04 · 61 阅读 · 0 评论 -
C语言:指针
1.指针->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”.三种用法类型加括号为强制转化指针在32位下为4字节,64位为8字节Int a,int b=&a①乘法运算:x=y*z;②声明指针:int p 或 int p;声明指针变量读法:p是指向一个整数类型的指针。定义指针变量:格式:datatype *原创 2021-05-14 16:40:52 · 60 阅读 · 0 评论 -
C语言:数组
1.打印100个随机值,并且10个一行输出#include<stdio.h>#include<stdlib.h>int main(){ const int n = 100; int ar[n] = {}; for (int i = 0; i < n; ++i) { ar[i] = rand() % 100 + 1; } for (int i = 0; i < n; ++i) { printf("%5d", ar[i]); if (i %原创 2021-05-08 23:30:27 · 243 阅读 · 0 评论 -
C语言 3:常量和变量,顺序语句,选择语句,循环语句,作用域和生存期
1.编写程序的步骤以及过程(适合初学者)(1)需求:提出自己对于代码的需求,即提出问题(2)分析:对提出的问题需求进行分析(3)设计:即对代码的算法进行设计(4)实施:程序代码的实施,即编码的实现(5)测试:对自己编写代码的代码模块进行测试2.问题提出:输入三个数字,求输出中间值。算法实现:冒泡排序,输入三个值,先将三个值进行排序,在输出中间值,即为所求数字。(1)代码冗余,未注意代码书写规范#include<stdio.h>int main(){ int a = 0,原创 2022-07-27 13:25:29 · 710 阅读 · 0 评论