![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言学习
小李子还挺酸
突飞猛进往往是自然发生的。你在某个夜晚苦熬一个知识点时,不会觉得自己突飞猛进;只有在多年后某日熟练地给别人讲解这个知识点后,内心才会小小地波动一下,猛然忆起当年深夜中的青灯一盏。
展开
-
<C语言>打印 n 阶魔方阵( n 为奇数),魔方阵的每一行、每一列和对角线元素之和都相等
打印魔方阵,首先我们得知道魔方阵的编写规律:魔方阵的填充规律如下:假设当前创建了一个矩阵:int matrix[16][16];第一步,我们知道了,1是放在第一行中间一列,那么我们就可以在矩阵中放入1所在的位置 //1、第一行的中间为1 int mid = n / 2; matrix[0][mid] = 1;第二步,我们知道:最后一行的中间数字为n^2,其右边为2 //2、最后一行的中间数字为n^2,其右边为2 matrix[n - 1][mid] = n * n; ma原创 2021-05-01 01:05:07 · 2403 阅读 · 4 评论 -
<LeetCode>剑指 Offer 22. 链表中倒数第k个节点
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.用两个指针,第一个指针先走k-1步,然后再两个指针一起走,这样就保证了第二个指针与第一个指针距离相差k-1,当第一个指针到达链表.原创 2021-04-03 16:23:13 · 122 阅读 · 0 评论 -
<数据结构>顺序表的实现
以下实现均以下标从0开始定义顺序表结构体记录当前元素个数和定义顺序表的大小#define maxSize 10typedef struct{ int length; int data[maxSize];}Sqlist;2.初始化顺序表,判断表是否为空void initList(Sqlist *L){ L->length = 0;}_Bool emptyList(Sqlist L) { return L.length == 0; }3.清空表_Bool clear原创 2021-04-11 09:40:47 · 123 阅读 · 0 评论 -
<数据结构>链表的建立、插入、删除与查找
单链表的定义为了建立数据之间的线性关系,因此对于每个链表结点,除了存放自身的信息(data)之外,还要保存指向后继结点(next)的指针,因此需要一个指针变量指向下一个结点。struct Node{ ElemType data; //数据域 struct Node* next; //指针域};struct Node* p=(struct Node*)malloc(sizeof(struct Node));//增加一个新的结点,在内存中申请一个结点所需的空间,并用p指向这个结点由于原创 2021-04-05 16:49:56 · 972 阅读 · 0 评论 -
<C语言>若将int型指针变量强制转化为char型指针变量会发生什么事情?
int *p; //定义int型指针变量 char *q1, *q2; //定义两个字符型变量 p = (int *)malloc(sizeof(int)); //为p申请一份4字节内存空间 q1 = (char *)p; //将int型指针变量p强制转化为char型指针变量,并让q1指向p q2 = q1 + 1; //q2指向q1+1的空间 *q1 = 'A'; //q1指向的值为'A' *q2 = 'B'; //q1指向的值为'B' pri.原创 2021-03-21 21:33:57 · 1985 阅读 · 0 评论 -
<C语言>int **q,指向一个指向整型变量的指针变量
指针变量是存放地址的变量指针就是地址指针变量的值就是地址“指针的值是地址”的说法是错误的,应该是“指针变量的值是地址”。int** q例子:#include<stdio.h>int main(){ int i=5; //定义一个整型数据 printf("i的地址为:%d\n", &i); int *p = &i; //定义一个指针变量p,它的值是整型变量i的地址 printf("p中保存的i的地址为:%d\n", p); printf("p指向的.原创 2021-03-20 16:09:44 · 3689 阅读 · 1 评论 -
<C语言学习>如何在一个源文件中调用另一个源文件定义的函数
定义被调用函数的头文件(.h)定义被调用函数所在文件(.c)在要调用的程序中导入其头文件(#include".h")以求两个整数的最大公约数与最小公倍数为例:先定义头文件:E14.h在头文件中声明函数如下:#include<stdio.h>int maxDiv(int a, int b);int minMult(int a, int b);然后创建E14.c,实现函数定义:#include<stdio.h>//输入两个正整数m 和n ,求其最大公约.原创 2021-03-20 13:35:32 · 4984 阅读 · 0 评论 -
<C语言学习>全局变量作用域的扩展
外部变量是在函数的外部定义的全局变量,它的作用域是从变量的定义处开始一直到本程序的结尾。但有以下希望能扩展外部变量的作用域的情况:原创 2021-03-13 23:43:38 · 2254 阅读 · 1 评论 -
<C语言学习>变量的存储方式
有的变量在程序运行的整个过程中都是存在的,而有的变量则是在调用其所在的函数时才临时分配存储单元,而在函数调用结束后,该存储单元也就立即释放了,变量不存在了。因此,变量应该有两种存储方式:静态存储方式和动态存储方式。静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式动态存储方式是指在程序运行期间根据需要进行动态的分配存储空间的方式。内存中供用户使用的存储空间可分为3部分:(1)程序区(2)静态存储区(3)动态存储区如图:数据分别存放在静态存储区和动态存储区中。全局变量全部存放在静原创 2021-03-13 16:16:38 · 607 阅读 · 0 评论 -
<C语言习题>已知2013 年1 月1 日是星期二,输入2013 年的一个日期(月和日),判断这天是星期几?
#include<stdio.h>//已知2013 年1 月1 日是星期二,输入2013 年的一个日期(月和日),判断这天是星期几?int main(){ int month, day; printf("input month and day:"); scanf_s("%d %d", &month, &day); char weekdays[][10] = { "Monday","Tuesday","Wednesday","Thursday","Friday",原创 2021-03-13 10:03:48 · 1028 阅读 · 0 评论 -
<C语言学习>数组
定义类型 数组名[元素个数]例如:int a[10];char b[10];double c[10];由于数组不能动态定义,因此元素个数那里只能是常量或者是常量表达式访问数组中的元素数组名[下标](下标从0开始)a[0]; //访问数组中的第一个元素a[5]; //访问数组中的第六个元素数组的初始化1、 将数组中所有元素初始化为0,可以这么写:int a[10]={0}; //事实上这里只是将第一个元素赋值为02、如果赋予不同的值,用逗号隔.原创 2021-03-08 21:50:51 · 525 阅读 · 0 评论 -
<C语言学习>scanf和scanf_s的区别
scanf()不会检查输入的边界,因此输入的数据可能会溢出,导致程序出错scanf_s()更安全,其会检查输入的边界如:char ch[6];scanf("%s",ch);若此时输入数据为abcdefghijk,则f以后的内容将溢出到别的空间,可能会导致程序运行错误若使用scanf_s("%s",ch);则输入数据abcdefghijk,只会接受abcdef六个输入,其余的不接受若是scanf_s("%s",ch,6);则输入数据abcdefghijk,只会接受abcde五个输.原创 2021-03-06 22:38:27 · 3454 阅读 · 2 评论 -
<C语言学习>逻辑运算符
逻辑表达式用逻辑运算符将两边的变量、数据或表达式连接起来,称之为逻辑表达式示例:#include<stdio.h>//逻辑中非零则为真,等同于值为1.假则等同于值为0int main(){ int a = 5, b = 3; printf("%d\n", 3 > 1 && 1 < 2); //1 printf("%d\n", 3 + 1 || 2 == 0); //1 printf("%d\n", !(a + b)); //a+b的.原创 2021-03-06 21:39:09 · 245 阅读 · 0 评论 -
<C语言学习>字符串
字符串声明:char 变量名[数量];示例:#include<stdio.h>int main(){ //声明字符串 char ch[5]; //给字符串赋值 //方法1 ch[0] = 'n'; //下标从0开始 ch[1] = 'a'; ch[2] = 'm'; ch[3] = 'e'; ch[4] = '\0'; //字符串的结束标志 否则可能会输出后续空间的字符串直至遇到'\0' printf("输出字符串ch:%s\n", ch原创 2021-03-06 13:49:00 · 118 阅读 · 0 评论 -
<C语言学习>sizeof运算符
sizeof运算符用于获知数据类型或表达式的长度表达式1、sizeof(对象) or sizeof 对象 //即有无括号不影响运行结果2、sizeof(类型)例子#include<stdio.h>int main(){ int i = 10; char ch = 'c'; float f = 3.14159; printf("数据类型为int长度:%d\n", sizeof(int)); printf("数据类型为char长度:%.原创 2021-03-05 23:00:46 · 148 阅读 · 0 评论 -
<C语言学习>输出中的\n\的使用
#include<stdio>int main(){ printf("\n\ **\n\ ******\n\ *********\n\ ************\n\ " ); return 0;}运行结果如图所示在此\n为转义字符-----换行。\n\后面多加的 \是为了将下一行当成是上一行的延续,一般用于字符串很长想分成多行的情况#include<stdio.h>int main(){ //错误示范 printf(" *原创 2021-02-25 13:09:21 · 5355 阅读 · 0 评论