分类 编程&脚本笔记 下的文章 - 我的学记|刘航宇的博客
首页
📊归档
⏳时光机
📬留言
🐾友链
资助名单
推荐
🎓843课程班
🎵音乐
🏞️壁纸
搜 索
1
【NPN/PNP三极管】放大电路饱和失真和截止失真的区别
12,208 阅读
2
论文写作中如何把word里面所有数字和字母替换为新罗马字体
6,898 阅读
3
【高数】形心计算公式讲解大全
6,261 阅读
4
【1】基于STM32CubeMX-STM32GPIO端口开发
4,896 阅读
5
如何判断运放是工作在线性区还是非线性区
4,784 阅读
🌻微语&随笔
励志美文
我的随笔
写作办公
📖电子&通信
嵌入式&系统
通信&信息处理
编程&脚本笔记
🗜️IC&系统
FPGA&ASIC
VLSI&IC验证
EDA&虚拟机
💻电子&计算机
IP&SOC设计
机器学习
软硬件算法
登录
搜 索
标签搜索
嵌入式
ASIC/FPGA
VLSI
SOC设计
机器学习
天线设计
C/C++
EDA&虚拟机
软件算法
小实验
信号处理
电子线路
通信&射频
随笔
笔试面试
硬件算法
Verilog
软件无线电
Python
DL/ML
刘航宇
嵌入式系统&数字IC爱好者博客
累计撰写
302
篇文章
累计收到
525
条评论
首页
栏目
🌻微语&随笔
励志美文
我的随笔
写作办公
📖电子&通信
嵌入式&系统
通信&信息处理
编程&脚本笔记
🗜️IC&系统
FPGA&ASIC
VLSI&IC验证
EDA&虚拟机
💻电子&计算机
IP&SOC设计
机器学习
软硬件算法
页面
📊归档
⏳时光机
📬留言
🐾友链
资助名单
推荐
🎓843课程班
🎵音乐
🏞️壁纸
用户登录
登录
编程&脚本笔记(共15篇)
找到
15
篇与
编程&脚本笔记
相关的结果
2021-03-21
通信滤除$字符分段保留重要信息代码
通信中滤除$字符分段保留重要信息代码实现效果初级代码main实现#include "stdio.h" int main() { int i, j; char temp[16][32] = ; char str[128] = ; printf("please input a string\n"); scanf("%s", str); printf("%s\n", str); char* p = &str[0]; i = 0; j = 0; while (1) { if (*p == 0) { break; } if (*p != '$') { temp[i][j] = *p; j++; } else { i++; j = 0; } p++; } for (j = 0; j <= i; j++) { printf("%s\t", temp[j]); } return 0; } 进阶调用函数#include "stdio.h" void fun(char *p){ int i,j; char temp[16][32]=; i=0; j=0; while(1) { if(*p==0) if(*p!='$') { temp[i][j]=*p; j++; } else {i++; j=0; } p++; } for(j=0;j<=i;j++) { printf("%s\t",temp[j]); } return; } int main(){ char str[128]=; printf("please input string\n"); scanf("%s",str); fun(str); printf("\n"); return 0; }再次进阶#include "stdio.h" int len; char **fun(char *p){ int i,j; static char *m[16]; static char temp[16][32]=; i=0; j=0; while(1) { if(*p==0) if(*p!='$') { temp[i][j]=*p; j++; } else {i++; j=0; } p++; } for(j=0;j<=i;j++) { printf("%s\t",temp[j]); } len=i+1; for(i=0;i<16;i++) { m[i]=&temp[i][0]; } return m; //&m[0] } int main(){ char **k; int i; char str[128]=; printf("please input string\n"); scanf("%s",str); k=fun(str); for(i=0;i<len;i++){ printf("%s\t",*k); } return 0; }
2021年03月21日
193 阅读
1 评论
3 点赞
2021-03-13
C语言用“*”输出三角形
例如:#include <stdio.h> int main() { int i,j,n; printf("input ranks n\n"); scanf("%d",&n); for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) printf(" "); for(j=0;j<=i;j++) printf("*"); printf("\n"); } return 0; } for(i=0;i<n;i++) { for(j=0;j<=i;j++) printf("*"); printf("\n"); } printf("\n");for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) printf(" "); for(j=0;j<=i;j++) printf("*"); printf("\n"); } 或 for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) printf(" "); for(j=n-i-1;j<n;j++) printf("*"); printf("\n"); } for(i=0;i<n;i++) { for(j=0;j<n-i;j++) printf("*"); printf("\n"); } printf("\n"); for(i=0;i<n;i++) { for(j=0;j<i;j++) printf(" "); for(j=0;j<n-i;j++) printf("*"); printf("\n"); } 或 for(i=0;i<n;i++) { for(j=0;j<i;j++) printf(" "); for(j=i;j<n;j++) printf("*"); printf("\n"); } for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) printf(" "); for(j=n-i-1;j<n+i;j++) printf("*"); printf("\n"); } 或 for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) printf(" "); for(j=0;j<=2*i;j++) //如果是2*i-1,则 j 是从1开始 printf("*"); printf("\n"); } for(i=0;i<n;i++) { for(j=0;j<i;j++) printf(" "); for(j=0;j<2*n-2*i-1;j++) printf("*"); printf("\n"); } 或 for(i=0;i<n;i++) { for(j=0;j<i;j++) printf(" "); for(j=i;j<2*n-i-1;j++) printf("*"); printf("\n"); }
2021年03月13日
588 阅读
0 评论
1 点赞
2021-01-28
KMP遍历算法
KMP算法是一种改进的字符串匹配算法,关键是利用匹配后失败的信息,尽量减少模式串(W)与主串(T)的匹配次数以达到快速匹配的目的。具体实现就是实现一个next() 函数,函数本身包含了模式串的局部匹配信息。时间复杂度 O(m+n)。 如果考虑一般的方法,我们可以将T[0]和W[0]进行匹配,如果相同则匹配下一个字符,直到出现不相同的情况,此时我们会丢弃前面的匹配信息,然后把T[1]跟W[0]匹配,循环进行,直到主串结束,或者出现匹配成功的情况。这种丢弃前面的匹配信息的方法,时间复杂度为O(m*n)。 学习代码:#include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; //get_next函数 vector<int> get_next(string b) //用vector来保存子串b的next数组 { vector<int> result; //添加元素并且默认赋值为0,建立一个空的容器就 int i, j; i = 0; j = -1; result.push_back(-1); //将容器首元素赋值,作为标识使用 while (i < b.size() - 1) { if (j == -1 || b[i] == b[j]) //b[i]表示后缀的单个字符,b[j]表示前缀的单个字符 { ++i; ++j; //这里的其实是优化重复的字符 //可以直接用result.push_back(j);代替下面的判断语句 if (b[i] != b[j]) result.push_back(j); else if (i == 1) result.push_back(j); else result.push_back(result[j]); } else j = result[j]; //若字符不同,前缀字符回溯 } return result; } //KMP函数 int KMP(string a, string b) { vector<int> next = get_next(b); //调用get_text函数 int i = 0; int j = 0; //注意size函数返回的类型是string::size_type是无符号数 //若i<主串的长度且j<子串的长度时,循环继续 while (i < (int)a.size() && j <(int)b.size()) { if (j == -1 || a[i] == b[j]) //两字母相等则继续,相对于朴素算法增加了 { ++i; ++j; } else { j = next[j]; //若不相等,j退回合适的位置 } } if (j == b.size()) { //这里返回的是匹配字符开始的下标位 return i - j; } else { return -1; } } int main() { string str; cout << "enter the string:"; cin >> str; string pattern; cout << "enter the pattern:"; cin >> pattern; int result = KMP(str, pattern); cout << result << endl; }
2021年01月28日
190 阅读
0 评论
0 点赞
1
2