news 2026/6/1 0:56:15

C语言语句与分支结构全解:表达式/赋值/空/块语句、if嵌套、switch穿透、鼠标事件模拟点击(附笔记代码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言语句与分支结构全解:表达式/赋值/空/块语句、if嵌套、switch穿透、鼠标事件模拟点击(附笔记代码)

1讲 程序的最小单元-语句

C语言语句

表达式语句

运算表达式语句

1+2+3;单纯的一个运算表达式,虽无意义,但语法无误。

赋值语句

int a=20;

流程控制语句

结构化语句

条件语句

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 */

案例:模拟鼠标自动点击百度推广链接

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

voidopenbaidu(){//打开百度一个推广链接

ShellExecuteA(0,"open","http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&ch=&tn=baidu&bar=&wd=%E9%93%81%E8%A7%82%E9%9F%B3&rn=&oq=&rsv_pq=d808933f00008f47&rsv_t=69bdG9HyZ67yEAm7XkNquPuYaDp9HV1aktZOFzHYMK2yLWkcLEjFo%2FdUqrE&rsv_enter=1&inputT=2453",0,0,3);

}

voidclosebaidu(){//关闭IE

system("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=(a>=0)?a:-a;

b=(b>=0)?b:-b;

printf("%d",a>b?a:b);

return0;

}

if语句——之多分支选择结构

if语句没有{}的情况下,作用域是最靠近它的一个分号前面的语句。

案例1txt中的内容传递给scanf,再把printf的内容输出到另一文件

把下面的代码编译为zz.exe

#include <stdio.h>

int main(){

int a;

scanf("%d",&a);

printf("a=%d",a);

return 0;

}

然后在zz.exe同一目录下创建zz.txt,在里面输入12345,保存。

然后在CMD中进入zz.exe所在目录,输入下面内容:

zz.exe<zz.txt>zz2.txt

最终结果为:zz2.txt中的内容为a=12345

案例2txt中的内容传递给scanf,再把system执行的结果输出到另一文件

把下面的代码编译为yy.exe

#include <stdio.h>

#include <stdlib.h>

int main(){

char str[100];

scanf("%s",str);

printf("%s",str);

system(str);

return 0;

}

然后在yy.exe同一目录下创建yy.txt,在里面输入tasklist,保存。

然后在CMD中进入yy.exe所在目录,输入下面内容:

yy.exe<yy.txt>yy2.txt

最终结果为:yy2.txt中的内容为system("tasklist");查询到的进程列表:

多分支选择应用举例

案例:判断输入字符是数字、大写字母、小写字母还是其它字符

#include<stdio.h>

intmain(){

while(1){

charc=getchar();

getchar();//用于接收回车并丢弃

if(c>='0'&& c<='9')

printf("number\n");

elseif(c>='a'&& c<='b')

printf("Small\n");

elseif(c>='A'&& c<='Z')

printf("Big\n");

else

printf("other\n");

}

return0;

}

多分支案例讲解

思考:1024个人,有一个人血液有病毒,我们化验血液,化验多少次可以找出这个人,化验一次需要一个小时。

答:可以用二分查找:把1024个人分成两半,分别将他们血液混合,再化验,无病毒的一半,可排除,这样目标可确定在另一半的512人中间。用样的方法依次进行:

512-->256->128->64->32->16->8->4->2->1

化验10次就能找出这个人。

案例:在VS中用MFC建立一个编辑器,可以容纳wordexcelppt等大量形式的文档

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;

}

注意事项:

1break切记不能少,

2、可以不含default分支,default分支不一定要在最后。但是default不在最后时,切记不要忘记使用break

3switch中的表达式和case后的常量表达式类型要一致

4case后的表达式是常量

5、如果不使用break,那么只要找到一个符合条件的case入口,就会一直往下执行,直到switch结束或直到碰到break为止。

6switch无法处理浮点数

对分支语句有无break

每个分支有break,就是多分支中选择一个分支。

break,就是多分支中选择多个分支。此时,需要注意case的顺序。

有一个或多个break,但并不是每个分支都有break的话,可以限定选择多个分支。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/1 0:51:27

3步搞定抖音批量下载:douyin-downloader免费开源工具全攻略

3步搞定抖音批量下载&#xff1a;douyin-downloader免费开源工具全攻略 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback …

作者头像 李华
网站建设 2026/6/1 0:36:09

课堂行为监测 教室课堂行为识别 课堂睡觉检测 课堂玩手机识别 课堂出勤率识别

课堂行为检测系统设计方案 系统概述课堂行为检测系统是一款基于计算机视觉技术的智能分析工具&#xff0c;旨在自动识别学生在课堂上的6种主要行为&#xff1a;举手、看书、写字、使用手机、低头做其他事情和睡觉。该系统可帮助教师客观评估课堂参与度&#xff0c;及时发现注意…

作者头像 李华
网站建设 2026/6/1 0:15:03

仅剩47小时!Gemini 2.5欧洲语言模型权重微调窗口即将关闭:3个轻量级LoRA适配器+1套验证集,零代码快速部署

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Gemini 2.5欧洲语言翻译能力演进与窗口期战略意义 Gemini 2.5在欧洲语言支持方面实现了质的跃升&#xff0c;尤其在德语、法语、西班牙语、意大利语及葡萄牙语的长上下文跨语言对齐、术语一致性保持和文化语境…

作者头像 李华
网站建设 2026/6/1 0:08:52

Arduino红外遥控库完整实践指南:从零到精通的10个技巧

Arduino红外遥控库完整实践指南&#xff1a;从零到精通的10个技巧 【免费下载链接】Arduino-IRremote Infrared remote library for Arduino: send and receive infrared signals with multiple protocols 项目地址: https://gitcode.com/gh_mirrors/ar/Arduino-IRremote …

作者头像 李华