C语言语句与分支结构全解:表达式/赋值/空/块语句、if嵌套、switch穿透、鼠标事件模拟点击(附笔记代码)
第1讲 程序的最小单元-语句C语言语句表达式语句运算表达式语句123;单纯的一个运算表达式虽无意义但语法无误。赋值语句int a20;流程控制语句结构化语句条件语句if语句switch语句循环语句for语句while语句do while语句非结构化语句限定转向语句break语句continue语句return语句非限定转向语句goto语句函数调用语句test();空语句;什么都不写就一个分号的语句就是空语句块语句{}一个函数中可以内嵌很多{}块{}括起来的语句就是块语句。查看不同块语句中的变量地址intmain(){inta;printf(%x\n,a);{inta;printf(%x\n,a);}{inta;printf(%x\n,a);}return0;}结果为第2讲 结构化程序设计的三种结构SetCursorPos(100,100);//设置鼠标位置mouse_event();//鼠标事件。要查看其参数可在VS中右击mouse_event选择“转到定义”mouse_event(__in DWORD dwFlags,__in DWORD dx,__in DWORD dy,__in DWORD dwData,__in ULONG_PTR dwExtraInfo);#defineMOUSEEVENTF_MOVE 0x0001/* mouse move */#defineMOUSEEVENTF_LEFTDOWN 0x0002/* left button down */#defineMOUSEEVENTF_LEFTUP 0x0004/* left button up */#defineMOUSEEVENTF_RIGHTDOWN 0x0008/* right button down */#defineMOUSEEVENTF_RIGHTUP 0x0010/* right button up */#defineMOUSEEVENTF_MIDDLEDOWN 0x0020/* middle button down */#defineMOUSEEVENTF_MIDDLEUP 0x0040/* middle button up */#defineMOUSEEVENTF_XDOWN 0x0080/* x button down */#defineMOUSEEVENTF_XUP 0x0100/* x button down */#defineMOUSEEVENTF_WHEEL 0x0800/* wheel button rolled */案例模拟鼠标自动点击百度推广链接#includestdio.h#includestdlib.h#includeWindows.hvoidopenbaidu(){//打开百度一个推广链接ShellExecuteA(0,open,http://www.baidu.com/s?ieutf-8f8rsv_bp0rsv_idx1chtnbaidubarwd%E9%93%81%E8%A7%82%E9%9F%B3rnoqrsv_pqd808933f00008f47rsv_t69bdG9HyZ67yEAm7XkNquPuYaDp9HV1aktZOFzHYMK2yLWkcLEjFo%2FdUqrErsv_enter1inputT2453,0,0,3);}voidclosebaidu(){//关闭IEsystem(taskkill /f /im iexplore.exe);}voidclickbaidu(){SetCursorPos(200,250);//设置鼠标位置Sleep(50);//鼠标双击mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);}intmain(){while(1){openbaidu();Sleep(5000);clickbaidu();Sleep(3000);closebaidu();Sleep(1000);}return0;}if语句——之双分支选择结构案例输入两个数打印出绝对值最大的数intmain(){inta,b;scanf(%d%d,a,b);a(a0)?a:-a;b(b0)?b:-b;printf(%d,ab?a:b);return0;}if语句——之多分支选择结构if语句没有{}的情况下作用域是最靠近它的一个分号前面的语句。案例1将txt中的内容传递给scanf再把printf的内容输出到另一文件把下面的代码编译为zz.exe#include stdio.hint main(){int a;scanf(%d,a);printf(a%d,a);return 0;}然后在zz.exe同一目录下创建zz.txt在里面输入12345保存。然后在CMD中进入zz.exe所在目录输入下面内容zz.exezz.txtzz2.txt最终结果为zz2.txt中的内容为a12345案例2将txt中的内容传递给scanf再把system执行的结果输出到另一文件把下面的代码编译为yy.exe#include stdio.h#include stdlib.hint main(){char str[100];scanf(%s,str);printf(%s,str);system(str);return 0;}然后在yy.exe同一目录下创建yy.txt在里面输入tasklist保存。然后在CMD中进入yy.exe所在目录输入下面内容yy.exeyy.txtyy2.txt最终结果为yy2.txt中的内容为system(tasklist);查询到的进程列表多分支选择应用举例案例判断输入字符是数字、大写字母、小写字母还是其它字符#includestdio.hintmain(){while(1){charcgetchar();getchar();//用于接收回车并丢弃if(c0 c9)printf(number\n);elseif(ca cb)printf(Small\n);elseif(cA cZ)printf(Big\n);elseprintf(other\n);}return0;}多分支案例讲解思考1024个人有一个人血液有病毒我们化验血液化验多少次可以找出这个人化验一次需要一个小时。答可以用二分查找把1024个人分成两半分别将他们血液混合再化验无病毒的一半可排除这样目标可确定在另一半的512人中间。用样的方法依次进行512--256-128-64-32-16-8-4-2-1化验10次就能找出这个人。案例在VS中用MFC建立一个编辑器可以容纳word、excel、ppt等大量形式的文档CRichEditView就是一个编辑器切换到“资源视图”窗口在vs2010的左下角双击“Ribbon”下的“IDR_RIBBON”打开界面编辑窗口在VS2010右侧“工具箱”中可以加入各种控件运行后可以轻松地在里面插入各种对象如下给按钮添加事件处理代码右击按钮--“添加事件处理程序”--类列表“CMainFrame”ifelse嵌套一个很蛋疼的if语句if(1)if(1)if(1);else;else;else;if else之间没有大括号就只能有一条语句碰到分号就代表一语句结束或者是一个循环或分支的整体。switch语句switch中多个case共用一组语句的情况switch(c){case a:case b:语句;break;}注意事项1、break切记不能少2、可以不含default分支default分支不一定要在最后。但是default不在最后时切记不要忘记使用break。3、switch中的表达式和case后的常量表达式类型要一致4、case后的表达式是常量5、如果不使用break那么只要找到一个符合条件的case入口就会一直往下执行直到switch结束或直到碰到break为止。6、switch无法处理浮点数对分支语句有无break每个分支有break就是多分支中选择一个分支。无break就是多分支中选择多个分支。此时需要注意case的顺序。有一个或多个break但并不是每个分支都有break的话可以限定选择多个分支。