C语言
cocoshe_
稚晖君的小迷弟
展开
-
大数乘法代码复盘
大数乘法代码复盘思路和大数加法一样,都是先存把char数组转成int数组,然后倒序模拟,最后倒序输出#include <stdio.h>#include <stdlib.h>#include "string.h"int main(){ char str1[100]; char str2[100]; int num1[100] = {0}; int num2[100] = {0}; scanf("%s %s" , str1 , str原创 2020-12-03 20:09:18 · 64 阅读 · 0 评论 -
大数加法代码复盘
大数加法代码复盘基本上分这么几部分(思路):输入两个字符串把字符串中的一个个数存到int数组中int数组中元素倒序用int jw来存放进位数,用一个int类型的result数组存放计算后的各个位数for循环中取整作为jw,取余作为result[i]for循环之后,判断jw是否为1,如果jw为1则result[maxlen++] = jw倒序输出#include <stdio.h>#include <stdlib.h>#include "string.h"i原创 2020-12-03 20:08:31 · 73 阅读 · 0 评论 -
指数快速幂算法复盘
指数快速幂算法复盘:优化在于每次都是成倍减少循环的次数long long fastPower(long long base, long long power) { long long result = 1; while (power > 0) { if (power & 1) {//此处等价于if(power%2==1) result = result * base % 1000; } power &g原创 2020-12-01 21:26:39 · 101 阅读 · 0 评论 -
矩阵乘法复盘
矩阵乘法复盘:#include <stdio.h>#include <stdlib.h>int main(){ int Mat1[100][100] = {0}; int Mat2[100][100] = {0}; int result[100][100] = {0}; int n,m,p; printf("请输入第一个矩阵的行数和列数,以及第二个矩阵的列数:\n"); /* 输入第一个矩阵 */ printf("Mat原创 2020-12-01 20:28:22 · 84 阅读 · 0 评论 -
数据结构:队列(Queue)的定义和它的函数们
数据结构:队列(Queue)的定义和它的函数们声明:队列满时:(rear+1)%maxsiz=front,少用一个存储空间,也就是数组的最后一个存数空间不用一些规律:1.和栈有点像,栈顶top是空的,队列的队尾指针所指也为空;栈底是有东西的,队列的队首指针也是有东西的。2.一般来说,队列的队首以上(包含队首),队尾以下(不含队尾)是有数据的;3.队首队尾每次变化都是+1的循环队列的定义:#define MAXQSIZE 100;typedef int QElemType;typ原创 2020-11-29 15:15:08 · 1696 阅读 · 0 评论 -
数据结构:链表(Linklist)的定义和它的函数们
数据结构:链表(Linklist)的定义和它的函数们链表的定义:对整体的定义(相当于一个大括号,保存一头一尾的指针)#define MAXSIZE 100typedef char ElemType;typedef struct _list{ ElemType* head; ElemType* tail;}List;对结点的定义typedef struct _node{ int index; //链表索引 ELemType data;原创 2020-11-28 20:16:03 · 4403 阅读 · 0 评论 -
数据结构:栈(Stack)的定义和它的函数们
数据结构:栈(Stack)的定义和它的函数们栈结构体的定义:#define MAXSIZE 100typedef char ElemType;typedef struct _stack{ ElemType* base; //栈顶 ElemType* top; //栈底 int StackSize; //栈大小}sqStack;栈的初始化:void InitStack(sqStack* S){ S->base = (ElemType*)mallo原创 2020-11-28 19:15:49 · 1817 阅读 · 0 评论 -
HDOJ试水心酸总结
下面是一些被HDOJ玩弄的痛苦教训(低级错误和各种规范)1.scanf("",&); &符号不要忘2.输出格式要注意啊!printf里面要跟上\n!!!3.若有多轮,则要注意做完一轮之后所有数据初始化!!!!!4.scanf字符串的时候,直接scanf("%s",a); 而不是scanf("%s",&a[i]);5.scanf("%lf");与scanf("%.2lf");不一样,尽量用前者Q:指针为什么要动态空间?(是因为指针无所指!!)因为它所指的地址原创 2020-10-19 07:42:24 · 601 阅读 · 0 评论 -
数据类型小细节
比较基础的关于数据类型的小细节:如何求两个整型数的平均值?(保留三位小数)方法:Case 1:如果是【确切的数字】,肯定要示意将int转化成double※本质!!!!虽然原来是int和double的运算但是还是要转化成double和double的运算例如1/3,若要求他确切的数值,那就要用1.0/3.0或者某一个参数是有.0的这个过程就是编译器【自动】将int转成doubleCase 2:但是,如果不是确切的数字呢?例如int a=1;总不能a.0吧?那既然不能自动,那就**【手动】强原创 2020-10-19 07:40:39 · 61 阅读 · 0 评论 -
位运算的那点事儿(知识总结)
位运算逻辑运算与位运算的区别左移和右移原创 2020-10-19 07:39:52 · 72 阅读 · 0 评论 -
结构知识点
结构类型:数组和结构:众所周知,数组只能在初始化的时候一次性赋值然而之后只能通过循环来一个个赋值结构呢?可以做到数组做不到的,它可以强转+赋值也可以 "结构体1=结构体2"这样来赋值那么怎么输入结构呢?(初始化结构,给结构动态赋值)既然用到函数老样子,函数里面的东西是复制品如果不传出来,函数结束的时候都会消失啊可恶那该怎么办呢?1.当然是返回结构,然后在外面定义一个一样的结构来接应它啊※2.最好的方法还是传入结构指针&!!!因为占用空间小,方便啊,而且不要返回,多舒服原创 2020-10-19 07:37:47 · 691 阅读 · 0 评论 -
关于枚举的一些知识总结
title: 关于枚举date: 2020-09-05 13:53:46tags: C语言枚举:为了增加程序的可读性,往往用字符来表示数字其中枚举的定义就相当于一次性写下例如要定义从一月到十二月,就用枚举方便多了int RED=0;int YELLO=0;int GREEN=0;注意,它可能常常伴随这switch/case/default函数进行小套路:在枚举的最后再加一个元素,用于代表它前面元素的个数,这样就不需要再去遍历了!当然枚举也不一定从0开始,可以自己定,之后如果.原创 2020-10-19 07:34:50 · 226 阅读 · 0 评论 -
数组、指针、字符串大礼包!
指针:int *p,q //表示p是指针,q是int;int *p,*q //表示p和q都是指针(*是和变量在一起的,是用来声明指针)指针有什么用呢?1.用void swap(int* ,int* ); 交换值 虽然没有返回值,但是利用指针可以实现如果是传进两个整型,那就必须要有返回值,不然函数内部的交换只是拷贝,对外界无影响。于是就很麻烦啊;使用场景特点:像swap()这样的函数,函数返回有多个值,于是就要用到指针节省力气2.同样是void maxmin();要找数组中的最大值原创 2020-10-19 00:15:15 · 238 阅读 · 0 评论