当前位置: 首页 > 文档资料 > C 语言程序设计 >

while循环

优质
小牛编辑
147浏览
2023-12-01

while循环

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

int main01(void)
{
    while (0)//0和非0
    {
        malloc(1024 * 1024 * 10);
    }

    system("pause");
    return 1;
}

int main02(void)
{
    int i = 0;
    while (i < 500)
    {
        system("notepad");
        i++;
    }

    system("pause");
    return 1;
}

int main03(void)
{
    int i = 0;
    int j = 0;

    //0 
    //1
    //2
    //3
    //4-->5次
    //while (i++ < 5)//++ <
    //{
    //  //i++;
    //  system("notepad");
    //}

    //i++ < 5 <==> ++j <6-->依然5次
    while (i++ < 5 && ++j < 6)
    {
        system("notepad");
    }

    system("pause");
    return 1;
}

//01.如何识别一条语句:
//  1.空语句(";")
//  2.只要以分号(";")结尾就算一条语句
//  3.语句块儿
//  4.任意一个结构:
//      顺序-->循环-->分支
int main04(void)
{
    while (1)
    {//while()之后不要添加空语句(;),如果是块儿语句,则整个块儿语句被当做一个语句,否则就是最近的一条语句(例如:空语句;)
        system("notepad");
    }

    system("pause");
    return 1;
}

//02.如何判断一个循环结构到底执行执行多少次?
//  判断多少对映射关系成立就行了
int main05(void)
{
    int i = 1;
    int res = 0;

    while (i <= 100)
    {//100组映射关系成立-->执行100次
        res += i;
        i++;
    }
    printf("%d \n", res);

    system("pause");
    return 1;
}

int main06(void)
{
    int n = 0;
    scanf("%d", &n);

    int i = 0;
    int res = 1;
    while (i < n)//循环条件
    {
        res *= 2;//循环执行体
        i++;
    }
    printf("%d \n", res);

    system("pause");
    return 1;
}

void shellOpenQQ()
{
    ShellExecuteA(0, "open", "D:\\ProgramFiles\\Tencent\\QQ\\Bin\\QQScLauncher.exe", 0, 0, 1);
}

int main01(void)
{
    shellOpenQQ();
    Sleep(3000);

    HWND win = FindWindowA("TXGuiFoundation", "QQ");
    if (win != NULL)//找到
    {
        //控制窗体显示和隐藏
        /*printf("窗体显示和隐藏! \n");
        while (1)
        {
            ShowWindow(win, SW_SHOW);
            Sleep(30);
            ShowWindow(win, SW_HIDE);
            Sleep(30);
        }*/

        //控制窗体从左向右移动
        printf("窗体从左往右移动! \n");
        //while (1)
        //{
        //  int i = 0;
        //  while (i < 1000)
        //  {
        //      SetWindowPos(win, NULL, i, 0, 500, 400, 1);
        //      //Sleep(30);
        //      i++;
        //      //i=0;i-->1000(从左往右进行移动)
        //      //500,400-->指定窗体的宽高
        //  }
        //}

        //控制窗体从上往下移动
        printf("窗体从上往下移动! \n");
        /*while (1)
        {
            int i = 0;
            while (i < 500)
            {
                SetWindowPos(win, NULL, 1000, i, 500, 400, 1);
                Sleep(30);
                i++;
            }
        }*/

        //控制窗体从右往左
        printf("控制窗体从右往左! \n");
        /*while (1)
        {
            int i = 1000;
            while (i > 0)
            {
                SetWindowPos(win, NULL, i, 500, 500, 400, 1);
                Sleep(30);
                i--;
            }
        }*/

        //控制窗体从下往上
        printf("控制窗体从下往上! \n");
        int i = 500;
        while (i > 0)
        {
            SetWindowPos(win, NULL, 0, i, 500, 400, 1);
            Sleep(30);
            i--;
        }
    }

    system("pause");
    return 1;
}

do-while循环

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

int main01(void)
{
    do
    {
        system("notepad");
    } while (-1);//do-while至少执行循环体一次,非0将会永远循环执行下去

    system("pause");
    return 1;
}

//01.通过映射对数判断执行次数的方式:
//  执行-->4
//  执行-->3
//  执行-->2
//  执行-->1
//  执行-->0-->不再执行
int main02(void)
{
    int i = 5;

    do
    {//相当于直接将5映射的哪一次给执行了5-->1:执行5次
        system("notepad");
        i--;
    } while (i);//5次

    system("pause");
    return 1;
}

//02.通过映射对数判断执行次数的方式:
//  执行-->5
//  执行-->4
//  执行-->3
//  执行-->2
//  执行-->1
//  执行-->0-->不再执行
//  注意:后面的整数是根据while();后面的整个表达式结果进行判断的
//03.循环结构转换特点:
//  1.while循环结构一定能够转换成为do-while循环结构;
//  2.do-while循环结构却不一定能够转换成为while循环结构
//  注意:while<--->do-while循环结构之间的转换规律
int main03(void)
{
    int i = 5;

    do
    {
        printf("notepad \n");
    } while (i--);//6次-->整个表达式的映射多加了一个0映射

    system("pause");
    return 1;
}

int main04(void)
{
    do
    {
        printf("notepad \n");
        malloc(1024 * 1024 * 500);
    } while (0);

    system("pause");
    return 1;
}

int main05(void)
{
    int i = 5;
    int j = 4;

    //执行规律特点分析:
    //  0.确定逻辑与的前后判断关系
    //  1.针对j的规律分析:
    //      执行-->4
    //      执行-->3
    //      执行-->2
    //      执行-->1
    //      执行-->0-->映射对数5-->执行5次
    //  2.针对i的规律分析:
    //      执行-->4
    //      执行-->3
    //      执行-->2
    //      执行-->1
    //      执行-->0-->映射对数5-->执行5次
    do
    {
        printf("notepad \n");
        printf("i = %d, j = %d \n", i, j);
    } while (j-- && --i);//与,有一个为0就终止循环结构

    system("pause");
    return 1;
}

int main06(void)
{
    char ch;

    do
    {
        ch = getchar();
        if (ch >= 'A' && ch <= 'Z')
        {
            ch = ch + 32;//大写转小写
        }
        getchar();//缓冲回车
        putchar(ch);
        putchar('\n');
    } while (ch != '\t');//等于tab退出do-while循环结构

    system("pause");
    return 1;
}

//03.Window操作API与do-while函数的结合使用
int main07(void)
{
    //异步启动一个记事本
    system("start notepad");
    Sleep(2000);
    //获取窗体编号
    HWND win = FindWindowA("Notepad", "无标题 - 记事本");
    if (win != NULL)
    {
        system("echo find notepad! \n");
        int i = 0;
        do
        {
            //设置窗体信息:
            //win00000000-->窗体句柄号
            //i---------------->窗体x坐标
            //i * 768 /1366--->窗体y坐标
            //400------------->窗体宽度
            //400------------->窗体高度
            SetWindowPos(win, NULL, i, i * 768 / 1366, 400, 400, 1);//设置坐标,尺寸
            i++;
        } while (i < 1000);
    }

    //窗体描述信息
    //  窗体左上角的坐标表示(IpRect.left, IpRect.top);
    //  窗体右下角的坐标表示(IpRect.right, IpRect.bottom);
    RECT IpRect;
    GetWindowRect(win, &IpRect);
    printf("%d, %d, %d, %d \n", IpRect.top, IpRect.bottom, IpRect.left, IpRect.right);

    if (win != NULL)
    {
        printf("find! \n");
        //SWP_SHOWWINDOW-->表示显示窗口
        SetWindowPos(win, NULL, 0, 0, 300, 300, SWP_SHOWWINDOW);//设置坐标尺寸
        //SetWindowPos();
        int i = 400;
        Sleep(1000);
        do
        {
            SetWindowPos(win, NULL, 0, 0, i, i, SWP_SHOWWINDOW);
            //MoveWindow();
            printf("%d \n", i);
            Sleep(100);
            i += 20;
        } while (i <= 700);
    }
    else
    {
        printf("not find! \n");
    }

    system("pause");
    return 1;
}