用C言语实现数据结构中二叉树的前序中序后序遍历intmain()//主函数部分{ BiTreeT=NULL; intLayer=0; intLayerT=0; printf("请输入二叉树:\n"); CreatBiTree(&T);printf("你输入的二叉树为:(竖型树状表示)\n"); PrintBinary(T,Layer); printf("\n"); printf("先序遍历二叉树为:\n"); PreOrderTraverse(T); printf("\n"); printf("中序遍历二叉树为:\n"); InOrderTraverse(T); printf("\n"); printf("后序遍历二叉树为:\n"); PostOrderTraverse(T); printf("\n"); printf("二叉树转换为树显示出来为:(竖型树状表示)\n"); PrintTree(T,LayerT); system("pause"); return0;}
2015/3/15 20:58:01 2KB 二叉树 前序 中序 后序
1
用C言语实现数据结构中二叉树的前序中序后序遍历intmain()//主函数部分{ BiTreeT=NULL; intLayer=0; intLayerT=0; printf("请输入二叉树:\n"); CreatBiTree(&T);printf("你输入的二叉树为:(竖型树状表示)\n"); PrintBinary(T,Layer); printf("\n"); printf("先序遍历二叉树为:\n"); PreOrderTraverse(T); printf("\n"); printf("中序遍历二叉树为:\n"); InOrderTraverse(T); printf("\n"); printf("后序遍历二叉树为:\n"); PostOrderTraverse(T); printf("\n"); printf("二叉树转换为树显示出来为:(竖型树状表示)\n"); PrintTree(T,LayerT); system("pause"); return0;}
2015/3/15 20:58:01 2KB 二叉树 前序 中序 后序
1
S32K148的LPUART2代码示例,使用ProcessorExpert进行初始化配置,添加printf支持,最初测试回传中断接收字节,详请参考我的博客S32K148----SDK笔记----LPUART_含printf支持
2015/3/7 3:34:51 444KB S32K148 LPUART printf
1
c51+1602液晶屏配合,使用c言语环境开发的源码这是关于c言语的printf函数的源码,c言语项目源码的项目源码,可以用来学习c言语实战项目案例
1
printf("*******************************************************\n");printf("*多项式操作程序*\n");printf("**\n");printf("*A.输出链表(La)B.逆序输出(La)*\n");printf("**\n");printf("*C:查找元素(La)D:删除元素(La)*\n");printf("**\n");printf("*E:插入元素(La)F:排序(有小及大)(La)*\n");printf("**\n");printf("*G:就地逆置(La)H:删除x-y的元素(La)*\n");printf("**\n");printf("*I:合并(删除相反项)J:合并(保留相反项)*\n");printf("**\n");printf("*K:求两链表交集L:退出程序*\n");printf("**\n");printf("*******************************************************\n");
1
这是公司实际项目工程(编译器用DK5),STM32F4x7+freertos+lwip+ssl+MQTT,其中MQTT自己花了一个礼拜移植,可以同时发布消息和订阅消息(发布主题:DongLuTest,订阅主题:mymqttsubtest),经过长期测试MQTT运行稳定。
此外还移植了pollarSSL(TSL,AES,DES,RAS等等算法都经过项目测试,没有问题),另外LWIP网络部分也运行稳定,支持随时插拔网线,最初公司所有运行信息可用printf从串口1输出(测试MQTT就可以打开串口,收到的订阅消息在串口打印出来)。
公司产品用的是STM32F407,LAN芯片为8720A,cpu外接8M晶振,所有下载到你的开发板上时候注意修改晶振。
2020/10/4 8:42:57 14.37MB STM32F4x7 freertos lwip MQTT
1
[例3.6]某对称离散信道的信道转移概率矩阵P为:1/31/31/61/61/61/61/31/3计算其最佳信源概率和信道容量C。
附:程序代码如下:#include#include#defineMAX50doubleCalculate_a(intk,doublepa[]);doubleCalculate_C1(doublepa[],doublea[]);doubleCalculate_C2(doublea[]);intr,s;doublepba[MAX][MAX];voidmain(){ inti,j;doubleC1,C2,E; doublea[MAX],pa[MAX]; E=0.000001; printf("请输出信源符号个数r:\n"); scanf("%d",&r); printf("请输出信宿符号个数s:\n"); scanf("%d",&s); printf("请输出精确度E:\n"); scanf("%lf",&E); printf("请输出信源P[ai]:\n"); for(i=0;i<r;i++) scanf("%lf",&pa[i]); printf("请输出信道转移概率矩阵P[bj][ai]:\n"); for(i=0;i<r;i++) for(j=0;j<s;j++) scanf("%lf",&pba[i][j]); do { for(i=0;i=E) { doublesum=0; for(i=0;i<r;i++) sum+=pa[i]*a[i]; for(i=0;i<r;i++) pa[i]=pa[i]*a[i]/sum; } else { printf("最佳信源概率:\n"); for(i=0;i=E);printf("信道容量为:%lf\n",C1/log(2));}doubleCalculate_a(intk,doublepa[]){ inti,j; doubletemp,sum2=0; for(j=0;j<s;j++) { doublesum1=0; for(i=0;i<r;i++) { sum1+=pa[i]*pba[i][j]; } temp=pba[k][j]/sum1; temp=log(temp); sum2+=pba[k][j]*temp; } returnexp(sum2);}doubleCalculate_C1(doublepa[],doublea[]){ inti; doublesum=0; for(i=0;i<r;i++) sum+=pa[i]*a[i]; returnlog(sum);}doubleCalculate_C2(doublea[]){ inti; doublemax=a[0]; for(i=0;i<r;i++) if(max<a[i])max=a[i]; returnlog(max);}
1
操作系统课的实验(银里手算法)#include"malloc.h"  #include"stdio.h"  #include"stdlib.h"  #definealloclensizeof(structallocation)  #definemaxlensizeof(structmax)  #defineavalensizeof(structavailable)  #defineneedlensizeof(structneed)  #definefinilensizeof(structfinish)  #definepathlensizeof(structpath)  structallocation  {  intvalue;  structallocation*next;  };  structmax  {  intvalue;  structmax*next;  };  structavailable/*可用资源数*/  {  intvalue;  structavailable*next;  };  structneed/*需求资源数*/  {  intvalue;  structneed*next;  };  structpath  {  intvalue;  structpath*next;  };  structfinish  {  intstat;  structfinish*next;  };  intmain()  {  introw,colum,status=0,i,j,t,temp,processtest;  structallocation*allochead,*alloc1,*alloc2,*alloctemp;  structmax*maxhead,*maxium1,*maxium2,*maxtemp;  structavailable*avahead,*available1,*available2,*workhead,*work1,*work2,*worktemp,*worktemp1;  structneed*needhead,*need1,*need2,*needtemp;  structfinish*finihead,*finish1,*finish2,*finishtemp;  structpath*pathhead,*path1,*path2;  printf("\n请输入系统资源的种类数:");  scanf("%d",&colum);  printf("请输入现时内存中的进程数:");  scanf("%d",&row);  printf("请输入已分配资源矩阵:\n");  for(i=0;inext=alloc2->next=NULL;  scanf("%d",&allochead->value);  status++;  }  else  {  alloc2=(structallocation*)malloc(alloclen);  scanf("%d,%d",&alloc2->value);  if(status==1)  {  allochead->next=alloc2;  status++;  }  alloc1->next=alloc2;  alloc1=alloc2;  }  }  }  alloc2->next=NULL;  status=0;  printf("请输入最大需求矩阵:\n");  for(i=0;inext=maxium2->next=NULL;  scanf("%d",&maxium1->value);  status++;  }  else  {  maxium2=(structmax*)malloc(maxlen);  scanf("%d,%d",&maxium2->value);  if(status==1)  {  maxhead->next=maxium2;  status++;  }  maxium1->next=maxium2;  maxium1=maxium2;  }  }  }  maxium2->next=NULL;  status=0;  printf("请输入现时系统剩余的资源矩阵:\n");  for(j=0;jnext=available2->next=NULL;  work1->next=work2->next=NULL;  scanf("%d",&available1->value);  work1->value=available1->value;  status++;  }  else  {  available2=(structavailable*)malloc(avalen);  work2=(structavailable*)malloc(avalen);  scanf("%d,%d",&available2->value);  work2->value=available2->value;  if(status==1)  {  avahead->next=available2;  workhead->next=work2;  status++;  }  available1->next=available2;  available1=available2;  work1->next=work2;  work1=work2;  }  }  available2->next=NULL;  work2->next=NULL;  status=0;  alloctemp=allochead;  maxtemp=maxhead;  for(i=0;inext=need2->next=NULL;  need1->value=maxtemp->value-alloctemp->value;  status++;  }  else  {  need2=(structneed*)malloc(needlen);  need2->value=(maxtemp->value)-(alloctemp->value);  if(status==1)  {  needhead->next=need2;  status++;  }  need1->next=need2;  need1=need2;  }  maxtemp=maxtemp->next;  alloctemp=alloctemp->next;  }  need2->next=NULL;  status=0;  for(i=0;inext=finish2->next=NULL;  finish1->stat=0;  status++;  }  else  {  finish2=(structfinish*)malloc(finilen);  finish2->stat=0;  if(status==1)  {  finihead->next=finish2;  status++;  }  finish1->next=finish2;  finish1=finish2;  }  }  finish2->next=NULL;/*Initializationcompleated*/  status=0;  processtest=0;  for(temp=0;tempstat==0)  {  for(j=0;jnext,worktemp=worktemp->next)  if(needtemp->valuevalue)  processtest++;  if(processtest==colum)  {  for(j=0;jvalue+=alloctemp->value;  worktemp1=worktemp1->next;  alloctemp=alloctemp->next;  }  if(status==0)  {  pathhead=path1=path2=(structpath*)malloc(pathlen);  path1->next=path2->next=NULL;  path1->value=i;  status++;  }  else  {  path2=(structpath*)malloc(pathlen);  path2->value=i;  if(status==1)  {  pathhead->next=path2;  status++;  }  path1->next=path2;  path1=path2;  }  finishtemp->stat=1;  }  else  {  for(t=0;tnext;  finishtemp->stat=0;  }  }  else  for(t=0;tnext;  alloctemp=alloctemp->next;  }  processtest=0;  worktemp=workhead;  finishtemp=finishtemp->next;  }  }  path2->next=NULL;  finishtemp=finihead;  for(temp=0;tempstat==0)  {  printf("\n系统处于非安全状态!\n");  exit(0);  }  finishtemp=finishtemp->next;  }  printf("\n系统处于安全状态.\n");  printf("\n安全序列为:\n");  do  {  printf("p%d",pathhead->value);  }  while(pathhead=pathhead->next);  printf("\n");  return0;  }#include"string.h"#include#include#defineM5#defineN3#defineFALSE0#defineTRUE1/*M个进程对N类资源最大资源需求量*/intMAX[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};/*系统可用资源数*/intAVAILABLE[N]={10,5,7};/*M个进程对N类资源最大资源需求量*/intALLOCATION[M][N]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}};/*M个进程已经得到N类资源的资源量*/intNEED[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};/*M个进程还需要N类资源的资源量*/intRequest[N]={0,0,0};voidmain(){inti=0,j=0;charflag='Y';voidshowdata();voidchangdata(int);voidrstordata(int);intchkerr(int);showdata();while(flag=='Y'||flag=='y'){i=-1;while(i=M){printf("请输入需申请资源的进程号(从0到");printf("%d",M-1);printf(",否则重输入!):");scanf("%d",&i);if(i=M)printf("输入的进程号不存在,重新输入!\n");}printf("请输入进程");printf("%d",i);printf("申请的资源数\n");for(j=0;jNEED[i][j]){printf("进程");printf("%d",i);printf("申请的资源数大于进程");printf("%d",i);printf("还需要");printf("%d",j);printf("类资源的资源量!申请不合理,出错!请重新选择!\n");/*printf("申请不合理,出错!请重新选择!\n");*/flag='N';break;}else{if(Request[j]>AVAILABLE[j]){printf("进程");printf("%d",i);printf("申请的资源数大于系统可用");printf("%d",j);printf("类资源的资源量!申请不合理,出错!请重新选择!\n");/*printf("申请不合理,出错!请重新选择!\n");*/flag='N';break;}}}if(flag=='Y'||flag=='y'){changdata(i);if(chkerr(i)){rstordata(i);showdata();}elseshowdata();}elseshowdata();printf("\n");printf("是否继续银里手算法演示,按'Y'或'y'键继续,按'N'或'n'键退出演示:");scanf("%c",&flag);}}voidshowdata(){inti,j;printf("系统可用的资源数为:\n");printf("");for(j=0;j");}printf("\n");return0;}
2015/11/20 3:54:43 883KB 算法 银行家
1
设计思想(1)程序主体结构部分:说明部分%%规则部分%%辅助程序部分(2)主体结构的说明在这里说明部分告诉我们使用的LETTER,DIGIT,IDENT(标识符,通常定义为字母开头的字母数字串)和STR(字符串常量,通常定义为双引号括起来的一串字符)是什么意思.这部分也可以包含一些初始化代码.例如用#include来使用标准的头文件和前向说明(forward,references).这些代码应该再标记"%{"和"%}"之间;规则部分>可以包括任何你想用来分析的代码;我们这里包括了忽略所有注释中字符的功能,传送ID名称和字符串常量内容到主调函数和main函数的功能.(3)实现原理程序中先判断这个句语句中每个单元为关键字、常数、运算符、界符,对与不同的单词符号给出不同编码方式的编码,用以区分之。
PL/0语言的EBNF表示::==;::=={|};::=+|-::=*|/::==|#|=::=a|b|…|X|Y|Z::=0|1|2|…|8|9三:设计过程1.关键字:void,main,if,then,break,int,Char,float,include,for,while,printfscanf并为小写。
2."+”;”-”;”*”;”/”;”:=“;”:”;”=“;”“;”=“;”(“;”)”;”;”;”#”为运算符。
3.其他标记如字符串,表示以字母开头的标识符。
4.空格符跳过。
5.各符号对应种别码关键字分别对应1-13运算符分别对应401-418,501-513。
字符串对应100常量对应200结束符#四:举例说明目标:实现对常量的判别代码:digit[0-9]letter[A-Za-z]other_char[!-@\[-~]id({letter}|[_])({letter}|{digit}|[_])*string{({letter}|{digit}|{other_char})+}int_num{digit}+%%[|\t|\n]+"auto"|"double"|"int"|"struct"|"break"|"else"|"long"|"switch"|"case"|"enum"|"register"|"typedef"|"char"|"extern"|"return"|"union"|"const"|"float"|"short"|"unsigned"|"continue"|"for"|"signed"|"void"|"default"|"goto"|"sizeof"|"do"|"if"|"static"|"while"|"main"{Upper(yytext,yyleng);printf("%s,NULL\n",yytext);}\"([!-~])*\"{printf("CONST_string,%s\n",yytext);}-?{int_num}[.]{int_num}?([E][+|-]?{int_num})?{printf("CONST_real,%s\n",yytext);}"0x"?{int_num}{printf("CONST_int,%s\n",yytext);}","|";"|"("|")"|"{"|"}"|"["|"]"|"->"|"."|"!"|"~"|"++"|"--"|"*"|"&"|"sizeof"|"/"|"%"|"+"|"-"|">"|"="|">="|"<<="|"&="|"^="|"|="|"="{printf("%s,NULL\n",yytext);}{id}{printf("ID,%s\n",yytext);}{digit}({letter})+{printf("error1:%s\n",yytext);}%%#includeUpper(char*s,intl){inti;for(i=0;i<l;i++){s[i]=toupper(s[i])
2021/11/7 5:50:07 105KB 词法分析器制作
1
STM32F407虚拟串口程序,直接使用Printf输入字符,打印到串口助手
2020/9/5 14:04:11 551KB VCP COM STM32F4
1
共 65 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡