Lesson19循环语句作业

#include <windows.h>
#include <math.h>

#define WINMAXIMUM 100
HWND g_hwnds[WINMAXIMUM] = { 0 };
int g_winnum = 0;

BOOL CALLBACK EnumWindowsProc(
    _In_ HWND   hwnd,
    _In_ LPARAM lParam)
{
    char classname[MAXBYTE] = { 0 };
    GetClassNameA(hwnd, classname, MAXBYTE);
    if (strcmp("Notepad", classname) == 0)
    {
        g_hwnds[g_winnum] = hwnd;
        g_winnum++;
    }

    return TRUE;
}

int main()
{
    EnumWindows(EnumWindowsProc, NULL);

    //完成代码如下:////////////////////////////////////////////////////////
    //每排3个窗口分4列排列
    /*int i = 0;
    int line = 0;
    int num = 0;
        for (int line=0,  y =0; line<4&&y<1080; line++,y+=230)
        {
            for (int x = 0,num=0 ; num<3 && x < 1920; num++,x += 230)
            {
            MoveWindow(g_hwnds[i],x+230, y, 230, 230, TRUE);
            i++;
        }
    }*/

    //完成,代码如下://///////////////////////////////////////////////////////////////
    //让所有窗口依次从左向右飞过
    //for (int i=0; i<WINMAXIMUM;i++)
    //{
    //    for (int y=0; y<1080;y+=230)
    //    {
    //        for (int x=0;x<1920;x+=10 )
    //        {
    //            MoveWindow(g_hwnds[i], x , y, 230, 230, TRUE);
    //            Sleep(10);
    //        }
    //
    //    }
    //
    //}

    //代码完成,如下:///////////////////////////////////////////////////////////////////////////////////////////
    //让所有窗口依次挨个从左向右飞过
    //for (int y = 0; y < 1080 - 230; y += 230)
    //{
    //    for (int x = 0; x < 1920; x += 5)
    //    {
    //        for (int i = 0; i < WINMAXIMUM; i++)
    //        {
    //            MoveWindow(g_hwnds[i], x - 80 * i, y, 230, 230, TRUE);
    //            Sleep(5);
    //        }

    //    }

    //}

    //完成,代码如下://////////////////////////////////////////////////////////////////////////////////////////

    //让窗口排列成
    //*
    //**
    //***
    //**
    //*

    //int i = 0;

    //for (int line=-2,  y =0; line<=2; line++,y+=200)
    //{
    //    for (int x = 0,num=0 ; num<3-abs(line) ; num++,x += 210)
    //    {
    //        MoveWindow(g_hwnds[i],x, y, 200, 200, TRUE);
    //        i++;
    //    }
    //}

    //完成代码如下://////////////////////////////////////////////////////////

    //让窗口排列成
    //                *
    //               **
    //              ***
    //               **
    //                *

    //int i = 0;

    //for (int line = -2, y = 0; line <= 2; line++, y += 200)
    //{
    //    for (int x = 1700, num = 0; num < 3 - abs(line); num++, x -= 210)
    //    {
    //        MoveWindow(g_hwnds[i], x, y, 200, 200, TRUE);
    //        i++;
    //    }
    //}

    /////////////////////////////////////////////////////////////

    //让窗口分3行,每次每行飞入一个
    /*for (int i = 0; i < WINMAXIMUM; i++)
    {

        for (int x = 0; x < 1920; x += 230)
            {
                for (int y = 0; y < 1080 - 230; y +=10)
                {
                MoveWindow(g_hwnds[i], x - 80 * i, y, 230, 230, TRUE);
                Sleep(5);
                }

            }

    }
*/

////////反弹效果不符合要求,存疑。///////////////////////////////////////////////////////////////////////////////////

    //模拟窗口反弹

for (int i=0;i<WINMAXIMUM;i++)
{
    int y = 0;
    int num = 0;
    for (int x=0,n=1;x<1920-210;n++,x+=50)
    {    

        if (n%2==0)
        {

            for (int y = num; y <870; y += 10)
            {

                MoveWindow(g_hwnds[i], x, y + (870 - y) / (2 * n), 210, 210, TRUE);

                Sleep(5);

            }
        }
        else
        {
            for (int y =870; y >0; y -=10)
            {
                MoveWindow(g_hwnds[i], x, y + (870 - y) /(2*n), 210, 210, TRUE);
                Sleep(5);

            }
            //y=y+( 870 - y) / 2;
        }

    }

}

    //将数组中奇数下标的窗口从下往上飞,偶数下标的窗口从上往下飞。每次都需要反弹效果

//1,遍历数组
//for (int i=0;i<WINMAXIMUM;i++)
//{
//    //2,判断下标奇偶
//    if (i%2==1)
//    {
//        //3,奇数下标,向下飞
//        for (int x =0;x<1920;x+=50)
//        {
//
//            for (int y = 0; y <870; y += 20)
//            {
//
//                //反弹效果?
//
//
//                MoveWindow(g_hwnds[i], x, y, 210, 210, TRUE);
//                Sleep(5);
//            }
//        }
//
//    }
//    else
//    {
//        //4,偶数下标,往上飞
//        for (int x = 0; x < 1920; x += 50)
//        {
//
//            for (int y = 870; y>0; y -= 20)
//            {
//
//                //反弹效果?
//
//                MoveWindow(g_hwnds[i], x, y, 210, 210, TRUE);
//                Sleep(5);
//            }
//        }
//    }
//}

return 0;
}

最后两题做得不符合要求。

时间: 2024-10-11 22:06:12

Lesson19循环语句作业的相关文章

3.1分支结构与循环语句作业解析

作业1:实现个人所得税的计算器. 应纳税所得额 = 税前工资收入金额 - 起征点(3500元) 应纳税额 = 应纳税所得额 x 税率 - 速算扣除数 import java.util.Scanner; public class Homework1{ public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.println("请输入您的税前工资:"); double

#9.5课堂JS总结#循环语句、函数

一.循环语句 1.for循环 下面是 for 循环的语法: for (语句 1; 语句 2; 语句 3) { 被执行的代码块 } 语句 1 在循环(代码块)开始前执行 语句 2 定义运行循环(代码块)的条件 语句 3 在循环(代码块)已被执行之后执行 2.for-in语句 for-in语句是一种精准的迭代语句,可以用来枚举对象的属性. 下面是for-in语句的语法: for(property in expression) statement demo: for(var propName in w

switch_case,&amp;&amp;,||,条件操作符和逗号操作符,循环语句

一.switch-case switch-case语句主要用在多分支条件的环境中,在这种环境中使用if语句会存在烦琐且效率不高的弊端. switch(expression) { case const expression1: .... case const expression2; ... default: ... } 在执行过程中,expression的值会与每个case的值比较,实现switch语句的功能.关键字case和它所关联的值被称作case标号.每个case标号的值都必须是一个整形常

10-16C#for...循环语句(2)

for....循环语句 格式:for(初始条件:循环条件:状态改变) { 循环体: } 一.课前作业:打印等腰直角三角形 第一种方法:是运用一开始学习的从上往下执行控制台程序,用一个for循环语句执行,只有一个循环. 第二种方法:利用for嵌套循环语句,就是for循环里面再嵌套一个或多个for语句的小循环组成. (注意:在嵌套循环里面容易犯的错误:外面大的循环条件执行一次之后,光标继续从上往下顺着执行下面的小循环,只要小循环里面的条件符合,就会一直在里面继续执行,只有不满足小循环的循环条件了,光

Linux创建多个用户,并赋予随机密码,不使用循环语句

Linux创建多个用户,并赋予随机密码,要求不使用循环语句. 方法一 使用基本命令useradd和passwd添加用户和添加密码. (注:RANDOM随机生成数字(3-5个不等).) 创建一个用户 [[email protected] ~]# useradd stu01 创建多个用户就是要重复上面的命令多次,但是一个一个输入会比较麻烦,但是我们可以先生成一串序列,然后使用替换的方法将序列替换成上面的格式. [[email protected] ~]# seq 10 1 2 3 4 5 6 7 8

L7 linux shell总结以及条件循环语句使用

1.描述shell程序的运行原理(可附带必要的图形说明): shell总结 2.总结shell编程中所涉及到的所有知识点(如:变量.语法.命令状态等等等,要带图的哟): 3.总结课程所讲的所有循环语句.条件判断的使用方法及其相关示例:(if (jpg|png is not exist): echo "You say a XX") 4.写一个脚本:如果某路径不存在,则将其创建为目录:否则显示其存在,并显示内容类型:(不要怀疑,就是这么简单) 5.写一个脚本,完成如下功能:判断给定的两个数

【C/C++】循环语句的效率

C/C++循环语句中,for语句使用频率最高,while语句其次,do语句很少用.本节重点讨论循环体的效率.提高循环体效率的基本办法是降低循环体的复杂性. [建议4-4-1]在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU夸切循环层的次数. //低效率:长循环在最外层 for (row = 0; row < 100; ++row) { for (col = 0; col < 5; ++col) { sum += a[row][col]; } } //高效

理论+实操:shell之case语句for/while/until循环语句、函数、数组-满满的干货

前言: 单引号表示纯符号 用双引号表字符串 case多分支语句 循环语句 for循环语句 while循环语句 until循环语句 shell函数 shell数组 一 : case语句的结构 1.1 case结构 多分支表现形式:if语句,case语句 case 语句可以使用正则表达式,正则表达式后面会去阐述 针对变量的不同取值,分别执行不同的命令程序 case 中::表示一句话的结束 如果匹配某一个固定值,大多数用caes,其适用于某一个固定值 如果匹配某一个区间范围,大多数用if else 语

python基础之条件循环语句

前两篇说的是数据类型和数据运算,本篇来讲讲条件语句和循环语句. 0x00. 条件语句 条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python interprets non-zero values as True. None and 0 are interpreted as False. Python 判断非0的值为 True, 而None和0被认为是 False.注意这里的True和False首字母大写,Py