编译原理龙书答案完整性高第二章2.2ExercisesforSection2.22.2.1Considerthecontext-freegrammar:S->SS+|SS*|aShowhowthestringaa+a*canbegeneratedbythisgrammar.Constructaparsetreeforthisstring.Whatlanguagedoesthisgrammargenerate?Justifyyouranswer.answerS->SS*->SS+S*->aS+S*->aa+S*->aa+a*L={Postfixexpressionconsistingofdigits,plusandmultiplesigns}2.2.2Whatlanguageisgeneratedbythefollowinggrammars?Ineachcasejustifyyouranswer.S->0S1|01S->+SS|-SS|aS->S(S)S|εS->aSbS|bSaS|ε⧗S->a|S+S|SS|S*|(S)answerL={0n1n|n>=1}L={Prefixexpressionconsistingofplusandminussigns}L={Matchedbracketsofarbitraryarrangementandnesting,includesε}L={Stringhasthesameamountofaandb,includesε}?2.2.3WhichofthegrammarsinExercise2.2.2areambiguousanswerNoNoYesYesYes2.2.4Constructunambiguouscontext-freegrammarsforeachofthefollowinglanguages.Ineachcaseshowthatyourgrammariscorrect.Arithmeticexpressionsinpostfixnotation.Left-associativelistsofidentifiersseparatedbycommas.Right-associativelistsofidentifiersseparatedbycommas.Arithmeticexpressionsofintegersandidentifierswiththefourbinaryoperators+,-,*,/.answer1.E->EEop|num2.list->list,id|id3.list->id,list|id4.expr->expr+term|expr-term|termterm->term*factor|term/factor|factorfactor->id|num|(expr)5.expr->expr+term|expr-term|termterm->term*unary|term/unary|unaryunary->+factor|-factorfactor->id|num|(expr)2.2.5Showthatallbinarystringsgeneratedbythefollowinggrammarhavevaluesdivisibleby3.Hint.Useinductiononthenumberofnodesinaparsetree.num->11|1001|num0|numnumDoesthegrammargenerateallbinarystringswithvaluesdivisibleby3?answerproveanystringderivedfromthegrammarcanbeconsideredtobeasequenceconsistingof11,1001and0,andnotprefixedwith0.thesumofthisstringis:sum=Σn(21+20)*2n+Σm(23+20)*2m=Σn3*2n+Σm9*2mItisobviouslycandivisibleby3.No.Considerstring"10101",itisdivisibleby3,butcannotderivedfromthegrammar.Question:anygeneralprove?2.2.6Constructacontext-freegrammarforromannumerals.Note:wejustconsiderasubsetofromannumeralswhichislessthan4k.answerwikipedia:Roman_numeralsviawikipedia,wecancategorizethesinglenomannumeralsinto4groups:I,II,III|IV|V,VI,VII,VIII|IXthengettheproduction:digit->smallDigit|IV|VsmallDigit|IXsmallDigit->I|II|III|εandwecanfindasimplewaytomapromantoarabicnumerals.Forexample:XII=>X,II=>10+2=>12CXCIX=>C,XC,IX=>100+90+9=>199MDCCCLXXX=>M,DCCC,LXXX=>1000+800+80=>1880viatheuppertworules,wecanderivetheproduction:romanNum->thousandhundredtendigitthousand->M|MM|MMM|εhundred->smallHundred|CD|DsmallHundred|CMsmallHundred->C|CC|CCC|εten->smallTen|XL|LsmallTen|XCsmallTen->X|XX|XXX|εdigit->smallDigit|IV|VsmallDigit|IXsmallDigit->I|II|III|ε2.3ExercisesforSection2.32.3.1Constructasyntax-directedtranslationschemethattrans­latesarithmeticexpressionsfrominfixnotationintoprefixnotationinwhichanoperatorappearsbeforeitsoperands;e.g.,-xyistheprefixnotationforx-y.Giveannotatedparsetreesfortheinputs9-5+2and9-5*2.。
answerproductions:expr->expr+term|expr-term|termterm->term*factor|term/factor|factorfactor->digit|(expr)translationschemes:expr->{print("+")}expr+term|{print("-")}expr-term|termterm->{print("*")}term*factor|{print("/")}term/factor|factorfactor->digit{print(digit)}|(expr)2.3.2Constructasyntax-directedtranslationschemethattrans­latesarithmeticexpressionsfrompostfixnotationintoinfixnotation.Giveannotatedparsetreesfortheinputs95-2*and952*-.answerproductions:expr->exprexpr+|exprexpr-|exprexpr*|exprexpr/|digittranslationschemes:expr->expr{print("+")}expr+|expr{print("-")}expr-|{print("(")}expr{print(")*(")}expr{print(")")}*|{print("(")}expr{print(")/(")}expr{print(")")}/|digit{print(digit)}AnotherreferenceanswerE->{print("(")}E{print(op)}E{print(")"}}op|digit{print(digit)}2.3.3Constructasyntax-directedtranslationschemethattrans­latesintegersintoromannumeralsanswerassistantfunction:repeat(sign,times)//repeat('a',2)='aa'translationschemes:num->thousandhundredtendigit{num.roman=thousand.roman||hundred.roman||ten.roman||digit.roman;print(num.roman)}thousand->low{thousand.roman=repeat('M',low.v)}hundred->low{hundred.roman=repeat('C',low.v)}|4{hundred.roman='CD'}|high{hundred.roman='D'||repeat('X',high.v-5)}|9{hundred.roman='CM'}ten->low{ten.roman=repeat('X',low.v)}|4{ten.roman='XL'}|high{ten.roman='L'||repeat('X',high.v-5)}|9{ten.roman='XC'}digit->low{digit.roman=repeat('I',low.v)}|4{digit.roman='IV'}|high{digit.roman='V'||repeat('I',high.v-5)}|9{digit.roman='IX'}low->0{low.v=0}|1{low.v=1}|2{low.v=2}|3{low.v=3}high->5{high.v=5}|6{high.v=6}|7{high.v=7}|8{high.v=8}2.3.4Constructasyntax-directedtranslationschemethattrans­latesromannumeralsintointegers.answerproductions:romanNum->thousandhundredtendigitthousand->M|MM|MMM|εhundred->smallHundred|CD|DsmallHundred|CMsmallHundred->C|CC|CCC|εten->smallTen|XL|LsmallTen|XCsmallTen->X|XX|XXX|εdigit->smallDigit|IV|VsmallDigit|IXsmallDigit->I|II|III|εtranslationschemes:romanNum->thousandhundredtendigit{romanNum.v=thousand.v||hundred.v||ten.v||digit.v;print(romanNun.v)}thousand->M{thousand.v=1}|MM{thousand.v=2}|MMM{thousand.v=3}|ε{thousand.v=0}hundred->smallHundred{hundred.v=smallHundred.v}|CD{hundred.v=smallHundred.v}|DsmallHundred{hundred.v=5+smallHundred.v}|CM{hundred.v=9}smallHundred->C{smallHundred.v=1}|CC{smallHundred.v=2}|CCC{smallHundred.v=3}|ε{hundred.v=0}ten->smallTen{ten.v=smallTen.v}|XL{ten.v=4}|LsmallTen{ten.v=5+smallTen.v}|XC{ten.v=9}smallTen->X{smallTen.v=1}|XX{smallTen.v=2}|XXX{smallTen.v=3}|ε{smallTen.v=0}digit->smallDigit{digit.v=smallDigit.v}|IV{digit.v=4}|VsmallDigit{digit.v=5+smallDigit.v}|IX{digit.v=9}smallDigit->I{smallDigit.v=1}|II{smallDigit.v=2}|III{smallDigit.v=3}|ε{smallDigit.v=0}2.3.5Constructasyntax-directedtranslationschemethattrans­latespostfixarithmeticexpressionsintoequivalentprefixarithmeticexpressions.answerproduction:expr->exprexprop|digittranslationscheme:expr->{print(op)}exprexprop|digit{print(digit)}ExercisesforSection2.42.4.1Constructrecursive-descentparsers,startingwiththefollow­inggrammars:S->+SS|-SS|aS->S(S)S|εS->0S1|01Answer1)S->+SS|-SS|avoidS(){switch(lookahead){case"+":match("+");S();S();break;case"-":match("-");S();S();break;case"a":match("a");break;default:thrownewSyntaxException();}}voidmatch(Terminalt){if(lookahead=t){lookahead=nextTerminal();}else{thrownewSyntaxException()}}2)S->S(S)S|εvoidS(){if(lookahead=="("){S();match("(");S();match(")");S();}}3)S->0S1|01voidS(){switch(lookahead){case"0":match("0");S();match("1");break;case"1"://match(epsilon);break;default:thrownewSyntaxException();}}ExercisesforSection2.62.6.1ExtendthelexicalanalyzerinSection2.6.5toremovecom­ments,definedasfollows:Acommentbeginswith//andincludesallcharactersuntiltheendofthatline.Acommentbeginswith/*andincludesallcharactersthroughthenextoccurrenceofthecharactersequence*/.2.6.2ExtendthelexicalanalyzerinSection2.6.5torecognizetherelationaloperators.2.6.3ExtendthelexicalanalyzerinSection2.6.5torecognizefloat­ingpointnumberssuchas2.,3.14,and.5.AnswerSourcecode:commit8dd1a9aCodesnippet(src/lexer/Lexer.java):publicTokenscan()throwsIOException,SyntaxException{for(;;peek=(char)stream.read()){if(peek==''||peek=='\t'){continue;}elseif(peek=='\n'){line=line+1;}else{break;}}//handlecommentif(peek=='/'){peek=(char)stream.read();if(peek=='/'){//singlelinecommentfor(;;peek=(char)stream.read()){if(peek=='\n'){break;}}}elseif(peek=='*'){//blockcommentcharprevPeek='';for(;;prevPeek=peek,peek=(char)stream.read()){if(prevPeek=='*'&&peek=='/'){break;}}}else{thrownewSyntaxException();}}//handlerelationsignif("".indexOf(peek)>-1){StringBufferb=newStringBuffer();b.append(peek);peek=(char)stream.read();if(peek=='='){b.append(peek);}returnnewRel(b.toString());}//handlenumber,notypesensitiveif(Character.isDigit(peek)||peek=='.'){BooleanisDotExist=false;StringBufferb=newStringBuffer();do{if(peek=='.'){isDotExist=true;}b.append(peek);peek=(char)stream.read();}while(isDotExist==true?Character.isDigit(peek):Character.isDigit(peek)||peek=='.');returnnewNum(newFloat(b.toString()));}//handlewordif(Character.isLetter(peek)){StringBufferb=newStringBuffer();do{b.append(peek);peek=(char)stream.read();}while(Character.isLetterOrDigit(peek));Strings=b.toString();Wordw=words.get(s);if(w==null){w=newWord(Tag.ID,s);words.put(s,w);}returnw;}Tokent=newToken(peek);peek='';returnt;}ExercisesforSection2.82.8.1For-statementsinCandJavahavetheform:for(exprl;expr2;expr3)stmtThefirstexpressionisexecutedbeforetheloop;itistypicallyusedforinitializ­ingtheloopindex.Thesecondexpressionisatestmadebeforeeachiterationoftheloop;theloopisexitediftheexpressionbecomesO.Theloopitselfcanbethoughtofasthestatement{stmtexpr3;}.Thethirdexpressionisexecutedattheendofeachiteration;itistypicallyusedtoincrementtheloopindex.Themeaningofthefor-statementissimilartoexpr1;while(expr2){stmtexpr3;}DefineaclassForforfor-statements,similartoclassIfinFig.2.43.AnswerclassForextendsStmt{ExprE1;ExprE2;ExprE3;StmtS;publicFor(Exprexpr1,Exprexpr2,Exprexpr3,Stmtstmt){E1=expr1;E2=expr2;E3=expr3;S=stmt;}publicvoidgen(){E1.gen();Labelstart=newLable();Lalelend=newLable();emit("ifFalse"+E2.rvalue().toString()+"goto"+end);S.gen();E3.gen();emit("goto"+start);emit(end+":")}}2.8.2TheprogramminglanguageCdoesnothaveabooleantype.ShowhowaCcompilermighttranslateanif-statementintothree-addresscode.AnswerReplaceemit("isFalse"+E.rvalue().toString()+"goto"+after);withemit("ifNotEqual"+E.rvalue().toString()+"0goto"+after);oremit("isNotEqualZero"+E.rvalue().toString()+"goto"+after);
2025/11/27 8:37:48 658KB 龙书答案 完整性高
1
详细的OP放大器经典应用教程,【日】松井邦彦著目录:1、OP放大器应用技巧须知2、单电源/低功率OP放大器应用技巧3、高稍度OP放大器应用技巧4、微小电流OP放大器应用技巧等。



2025/11/11 2:58:31 18.78MB OP
1
第1章绪论1.1计算机图形学及其相关概念1.2计算机图形学的发展1.2.1计算机图形学学科的发展1.2.2图形硬件设备的发展1.2.3图形软件的发展1.3计算机图形学的应用1.3.1计算机辅助设计与制造1.3.2计算机辅助绘图1.3.3计算机辅助教学1.3.4办公自动化和电子出版技术1.3.5计算机艺术1.3.6在工业控制及交通方面的应用1.3.7在医疗卫生方面的应用1.3.8图形用户界面1.4计算机图形学研究动态1.4.1计算机动画1.4.2地理信息系统1.4.3人机交互1.4.4真实感图形显示1.4.5虚拟现实1.4.6科学计算可视化1.4.7并行图形处理第2章计算机图形系统及图形硬件2.1计算机图形系统概述2.1.1计算机图形系统的功能2.1.2计算机图形系统的结构2.2图形输入设备2.2.1键盘2.2.2鼠标器2.2.3光笔2.2.4触摸屏2.2.5操纵杆2.2.6跟踪球和空间球2.2.7数据手套2.2.8数字化仪2.2.9图像扫描仪2.2.10声频输入系统2.2.11视频输入系统2.3图形显示设备2.3.1阴极射线管2.3.2CRT图形显示器2.3.3平板显示器2.3.4三维观察设备2.4图形显示子系统2.4.1光栅扫描图形显示子系统的结构2.4.2绘制流水线2.4.3相关概念2.5图形硬拷贝设备2.5.1打印机2.5.2绘图仪2.6OpenGL图形软件包2.6.1OpenGL的主要功能2.6.2OpenGL的绘制流程2.6.3OpenGL的基本语法2.6.4一个完整的OpenGL程序第3章用户接口与交互式技术3.1用户接口设计3.1.1用户模型3.1.2显示屏幕的有效利用3.1.3反馈3.1.4一致性原则3.1.5减少记忆量3.1.6回退和出错处理3.1.7联机帮助3.1.8视觉效果设计3.1.9适应不同的用户3.2逻辑输入设备与输入处理3.2.1逻辑输入设备3.2.2输入模式3.3交互式绘图技术3.3.1基本交互式绘图技术3.3.2三维交互技术3.4OpenGL中橡皮筋技术的实现3.4.1基于鼠标的实现3.4.2基于键盘的实现3.5OpenGL中拾取操作的实现3.6OpenGL的菜单功能第4章图形的表示与数据结构4.1基本概念4.1.1基本图形元素4.1.2几何信息与拓扑信息4.1.3坐标系4.1.4实体的定义4.1.5正则集合运算4.1.6平面多面体与欧拉公式4.2三维形体的表示4.2.1多边形表面模型4.2.2扫描表示4.2.3构造实体几何法4.2.4空间位置枚举表示4.2.5八叉树4.2.6BSP树4.2.7OpenGL中的实体模型函数4.3非规则对象的表示4.3.1分形几何4.3.2形状语法4.3.3粒子系统4.3.4基于物理的建模4.3.5数据场的可视化4.4层次建模4.4.1段与层次建模4.4.2层次模型的实现4.4.3OpenGL中层次模型的实现第5章基本图形生成算法5.1直线的扫描转换5.1.1数值微分法5.1.2中点Bresenham算法5.1.3Bresenham算法5.2圆的扫描转换5.2.1八分法画圆5.2.2中点Bresenham画圆算法5.3椭圆的扫描转换5.3.1椭圆的特征5.3.2椭圆的中点Bresenham算法5.4多边形的扫描转换与区域填充5.4.1多边形的扫描转换5.4.2边缘填充算法5.4.3区域填充5.4.4其他相关概念5.5字符处理5.5.1点阵字符5.5.2矢量字符5.6属性处理5.6.1线型和线宽5.6.2字符的属性5.6.3区域填充的属性5.7反走样5.7.1过取样5.7.2简单的区域取样5.7.3加权区域取样5.8在OpenGL中绘制图形5.8.1点的绘制5.8.2直线的绘制5.8.3多边形面的绘制5.8.4OpenGL中的字符函数5.8.5Op
2025/11/5 19:37:38 110.55MB 图形学 VR
1
MFC绘制阿基米德螺旋线阿基米德螺线也叫“等速螺线”。
当一点P沿动射线OP以等速率运动的同时,该射线又以等角速度绕点O旋转,点P的轨迹称为“阿基米德螺线”。
直线旋转一周时,动点在直线上移动的距离称为导程用字母S表示。
近似画法:(1)先以导程S为半径画圆,再将圆周及半径分成相同的n等分;
(2)以O为圆心,作各同心圆弧于相应数字的半径相交,得交点Ⅰ、Ⅱ、Ⅲ、…Ⅷ各点,即为阿基米德涡线上的点;
(3)依次光滑连接各点,即得阿基米德螺线。
2025/6/29 3:05:40 26KB MFC
1
OpenStack云计算_第1章介绍-精简,以前当培训老师时,自己培训时写的入门课程,分享给大家,简单通俗易懂,介绍了op的基本来源和定义。
2025/1/10 18:52:56 9.98MB 云计算 openstack
1
altiumdesigner常用元件库,含有单片机8051.IntLib,AD转换.lib,CMOS系列.Lib,数码管光耦.SCHLIB,单片机及相关.SCHLIB,TTL74系列IC.SCHLIB,IC.SCHLIB,场效应管.LIB,可控硅.Lib,LM317-337封装.PcbLib,开关.PcbLib,数码管.PcbLib,液晶显示器.PcbLib,继电器.PcbLib,阻容.PcbLib,集成块.PcbLib,常用元件封裝庫(pcb).PCBLIB,变压器.PcbLib,4位共阳极数码管.SchLib,J继电器.SchLib,LCD显示.SchLib,OP光耦.SchLib,OpAmp比较器.SchLib,SW开关.SchLib,USB.SchLib,电机驱动.SchLib,4000CMOS.SchLib等常用元件库和封装库
2024/12/20 9:48:23 6.66MB AD 封装 元件库
1
实验报告七:(1)设计InputTask、ComputeTask和OutputTask三个任务,InputTask任务负责从键盘接收两个整数a和b及操作符op(+-*/),ComputeTask负责计算a(+-*/)b,OutputTask任务负责输出计算结果。
要求InputTask和ComputeTask间通信及ComputeTask和OutputTask间通信都用消息邮箱实现。
提示:把a、b和op拼接成1个消息。
(2)设计InputTask、ComputeTask和OutputTask三个任务,InputTask任务负责从键盘接收两个整数a和b及操作符op(+-*/),ComputeTask负责计算a(+-*/)b,OutputTask任务负责输出计算结果。
要求InputTask和ComputeTask间通信用消息队列实现,ComputeTask和OutputTask间通信用消息邮箱实现。
提示:把a、b和op解析成3个消息。
用到的主要函数:OSMboxCreate、OSMboxPost、OSMboxPend、OSQCreate、OSQPostOSQPend
2024/9/8 13:19:43 56KB µC/OS-II
1
《测量电子电路设计滤波器篇》(PDF)作者日)远坂俊昭出版社科学出版社书号7030171829丛书图解实用电子技术丛书页数:260出版时间2006.06第1章概述1.1滤波器的特性与种类1.1.1各种滤波器——本书介绍频率意义上的滤波器1.1.2噪声与滤波器的带宽1.1.3滤波器对白噪声的滤波效果1.1.4防混浠作用的低通滤波器1.1.5高通滤波器(HPF)的作用1.1.6带通滤波器(BPF)的作用1.1.7带阻滤波器(BEF)的作用1.1.8模拟滤波器与数字滤波器1.1.9能够自制的滤波器1.1.10由厂家制作的滤波器1.2滤波器的频率响应与时间响应特性1.2.1滤波器的阶数与衰减陡度1.2.2最大平坦:巴特沃斯特性1.2.3快速调整阶跃响应的贝塞尔特性1.2.4实现陡峭特性的切比雪夫特性1.2.5更加陡峭——椭圆(Elliptic)特性1.2.6滤波器的副作用——对响应特性的影响1.2.7高通滤波器的时间响应特性1.2.8带通滤波器的时间响应特性第2章RC滤波器与RC电路网络的设计2.1最简单的RC滤波器2.1.1RC低通滤波器的特性2.1.2DC前置放大器上附加RC滤波器2.1.3RC滤波器的多级连接2.2加深对RC电路网络的印象2.2.1表现电路网络动作的万能曲线2.2.2设计时利用渐近线2.2.3高频截止/低频截止的A万能曲线2.2.4描述相位返回特性的B万能曲线2.2.5PLL电路中应用的高频截止的B万能曲线2.2.6应用于0P放大器相位补偿的低频截止的B万能曲线第3章有源滤波器的设计3.1概述3.1.1有源滤波器——确定参数值时的自由度高3.1.22阶有源滤波器设计基础3.2有源低通滤波器的设计3.2.1经常使用的正反馈型2阶LPF(增益=1)的构成3.2.25阶巴特沃斯LPF的计算例3.2.3使LPF具有放大率的滤波电路3.2.4正反馈型LPF(增益≠1)的构成3.2.5减小元件灵敏度和失真的多重反馈型LPF3.2.6有源LPF的高频特性3.3有源高通滤波器的设计3.3.1正反馈型2阶HPF的构成3.3.25阶切比雪夫HPF的计算例3.3.3多重反馈型HPF的构成3.4状态可调滤波器的设计3.4.1状态可调滤波器的概念3.4.2反转型与非反转型在特性上的差别3.4.3在可变频率一可变Q的通用滤波器中的应用3.4.4状态可调滤波器模块3.4.5低失真率的双截型滤波器3.5带通滤波器的设计3.5.1将LPF与HPF级联专栏A状态可调滤波器在低失真率振荡器中的应用3.5.2Q-10以下的1个OP放大器的多重反馈型BPF3.5.3中心频率为1kHz,Q=5的带通滤波器3.5.42个放大器的高Q值BPF3.5.5能够用于评价OP放大器噪声的带宽100Hz的BPF3.6带阻滤波器的设计3.6.1使用BPF的带阻滤波器3.6.2测量失真用的双T陷波滤波器附录有源滤波器设计用的归一化表第4章LC滤波器的设计4.1LC滤波器概述4.1.1LC滤波器在10kHz以上的使用价值高4.1.2利用归一化表和模拟器使设计变得简单4.1.3LC滤波器的两种类型4.2LC滤波器的设计4.2.1低通LC滤波器的设计4.2.2归一化表的使用方法4.2.3由低通滤波器(LPF)变换为高通滤波器(HPF)4.2.4变换为带通滤波器(BPF)专栏B函数台式计算机的应用4.2.5BPF的带宽越窄响应越慢4.3LC滤波器的实验制作4.3.1附有5阶低通滤波器的前置放大器4.3.2巴特沃斯BPF的试制第5章模拟LC型有源滤波器的设计5.1模拟LC的概念5.1.1不希望使用线圈5.1.2实现FDNR的电路5.2实用的FDNR滤波器的设计5.2.15阶LPF的设计5.2.2特点——不受OP放大器直流漂移的影响5.2.3注意最大输入电平5.2.4信号源电阻为0Ω的FDNR滤波器5.2.5信号源电阻为0Ω的FDNR5阶低通滤波器的试制5.2.6抗误差用7阶切比雪夫滤波器的设计5.2.7特性的检验5.2.8利用高速A/D转换器减轻滤波器的负担5.2.9
2023/11/19 11:56:30 16.89MB 滤波器
1
希望大家喜欢吧,这个还是比较实用的,说实在挺喜欢,就是好
2023/11/9 2:55:58 5.79MB 固件
1
Python实现的编译原理中间代码生成程序,使用了PyQt5写图形界面题目:设计一个程序,该程序能够将形如x=yopz的简单赋值语句翻译为对应的四元式序列,其中op可为+、-、*、/等二元运算符。
要求用图形界面方式编程.例如:若输入赋值语句a=b+c,则输出如下四元式序列:(+,b,c,t1)(=,t1,-,a)
1
共 25 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡