软件协会第01次活动第04次任务布置:爱心代码+数组练习

简介: 软件协会第01次活动第04次任务布置:爱心代码+数组练习

🏠 官网:https://www.csuftsap.cn/

💬 任务布置说明:

  • 题目考察范围:数组&字符数组
  • 所有答案均放在我所写的空代码块空引用框

1.程序员的浪漫-爱心代码

1.1 官网下载EasyX

EasyX 是针对 C/C++ 的图形库,可以帮助使用C/C++语言的程序员快速上手图形和游戏编程。

比如,可以用 VC + EasyX 很快的用几何图形画一个房子,或者一辆移动的小车,可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏,可以练习图形学的各种算法,等等。

这里只是为了让大家简单了解一下如何下载、安装与使用。

🏠 https://easyx.cn/download

1.2 安装EasyX

1.3 重启vs,新建项目并在其中创建一个.cpp文件(如果之前打开了vs,请重启vs)

也可以在vs界面内使用 ctrl + shift + A 快速创建文件

1.4 将如下代码拷贝到 love.cpp 文件中运行即可

// 程序名称:《点燃我,温暖你》爱心程序
// 作  者:爱编程的胡桃
#include<graphics.h>
#include<conio.h>
#include<time.h>
#include<math.h>
#include<sys/timeb.h>
struct MyLove
{
    int NUMS;  //  编号
    double m;
    double n;
    double size;
    bool Is_show;
    int x;
    int y;
};
MyLove mylove[400];
int CenterX = 320;
int CenterY = 180;
double Size = 60;
void initdata();  // 初始化数据
void updata();    // 更新
void movedata();  // 平移
void showdata();  // 显示
int* GetRand(int* buf, int count, int range);  // 随机数的生成
void heart(int x0, int y0, int size, COLORREF C);
void HpSleep(int ms);
int main()
{
    initgraph(640, 480);
    initdata();
    BeginBatchDraw();
    while (true)
    {
        updata();
        showdata();
        HpSleep(30);    // 改为精确延时
        FlushBatchDraw();
        cleardevice();
    }
    EndBatchDraw();
    _getch();
    return 0;
}
void updata()
{
    int* buf = (int*)malloc(sizeof(int) * 20);
    buf = GetRand(buf, 20, (int)(2 * Size / 0.01));
    movedata();
    for (int i = 0; i < 20; i++)
    {
        mylove[i].m = buf[i] * 0.01;
        mylove[i].n = (((sin(buf[(int)i] * 0.01) * sqrt(fabs(cos(buf[(int)i] * 0.01)))) / (sin(buf[(int)i] * 0.01) + 1.4142)) - 2 * sin(buf[(int)i] * 0.01) + 2);
        mylove[i].size = Size;
        mylove[i].NUMS = i / 20;
        mylove[i].Is_show = true;
        mylove[i].x = (int)(-Size * mylove[i].n * cos(mylove[i].m) + CenterX);
        mylove[i].y = (int)(-Size * mylove[i].n * sin(mylove[i].m) + CenterY - mylove[i].size);
    }
    for (int i = 20; i < 400; i++)
    {
        mylove[i].size = mylove[i].size + 1;
        if (mylove[i].size > 80)
        {
            mylove[i].size = 80;
        }
        mylove[i].NUMS = i / 20;
        mylove[i].x = (int)(-mylove[i].size * mylove[i].n * cos(mylove[i].m) + CenterX);
        mylove[i].y = (int)(-mylove[i].size * mylove[i].n * sin(mylove[i].m) + CenterY - mylove[i].size);
    }
}
void movedata()
{
    for (int i = 399; i > 19; i--)
    {
        mylove[i] = mylove[i - 20];
    }
}
void showdata()
{
    settextcolor(RED);
    wchar_t c = 0x59;    // 0x28 是电话机在 Wingdings 字体中的对应编码
    for (int i = 0; i < 400; i++)
    {
        settextstyle(mylove[i].NUMS + 10, 0, _T("Webdings"));
        setbkmode(TRANSPARENT);
        outtextxy(mylove[i].x + 20, mylove[i].y + 20, c);
    }
}
int* GetRand(int* buf, int count, int range)
{
    struct timeb timeSeed;
    ftime(&timeSeed);
    srand(timeSeed.time * 1000 + timeSeed.millitm);  // milli time
    for (int i = 0; i < count; i++)
    {
        int randTmp = rand() % range;
        for (int j = 0; j < i; j++)
        {
            if (buf[j] == randTmp)
            {
                break;//检查重复。
            }
        }
        buf[i] = randTmp;
    }
    return buf;
}
void initdata()
{
    for (int i = 0; i < 400; i++)
    {
        mylove[i].NUMS = 0;
        mylove[i].m = 0;
        mylove[i].n = 0;
        mylove[i].size = 0;
        mylove[i].Is_show = false;
        mylove[i].x = 0;
        mylove[i].y = 0;
    }
}
// 精确延时函数(可以精确到 1ms,精度 ±1ms)
// by yangw80<yw80@qq.com>, 2011-5-4
void HpSleep(int ms)
{
    static clock_t oldclock = clock();    // 静态变量,记录上一次 tick
    oldclock += ms * CLOCKS_PER_SEC / 1000;  // 更新 tick
    if (clock() > oldclock)          // 如果已经超时,无需延时
        oldclock = clock();
    else
        while (clock() < oldclock)      // 延时
            Sleep(1);            // 释放 CPU 控制权,降低 CPU 占用率,精度 10~16ms
    //      Sleep(0);            // 更高精度、更高 CPU 占用率,精度 1ms
}

1.5 运行该 .cpp 文件

将你运行出来的结果截图放入下面的引用框中:

🚀 以下题目建议先学习完数组,链接:https://blog.csdn.net/qq_62982856/article/details/127780909?spm=1001.2014.3001.5502

2.基础题目

2.1 寻找最小值

题目描述:输入两行,第一行输入一个数字n - 表示数组大小,第二行输入n个数字,求这n个数字的最小值

测试 输入 输出
测试一 5
10 6 7 2 3
2
测试二 8
4 5 2 3 1 1 4 8
1

👇 代码写在代码块中

• 1

👇 vs执行代码成功截图放在引用框中

2.2 删除最大值

题目描述:输入10个整数并保存在数组中,找到该数组的第一个最大元素并删除它,输出删除后的数组

测试 输入 输出
测试一 10 6 7 2 3 4 3 1 8 10 6 7 2 3 4 3 1 8 10
测试二 4 5 2 3 1 1 4 8 4 5 4 5 2 3 1 1 4 4 5

👇 代码写在代码块中

• 1

👇 vs执行代码成功截图放在引用框中

2.3 计算数组中元素的最大值及其所在的行列下标值

题目描述:按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值。其中m和n的值由用户键盘输入。已知m和n的值都不超过10。

  • 输入
    输入数组大小:"%d,%d"
    下面输入数组中元素。
  • 输出
    输出格式:"max=%d, row=%d, col=%d"

样例输入

5,5
1 2 3 4 5
4 5 6 100 2
3 2 1 5 6
1 2 3 5 4
3 5 6 4 8

样例输出

max=100, row=2, col=4

👇 代码写在代码块中

• 1

👇 vs执行代码成功截图放在引用框中

2.4 查找整数

题目描述:给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

  • 输入
    第一行包含一个整数n。
    第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
    第三行包含一个整数a,为待查找的数。
  • 输出
    如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。

样例输入:

6
1 9 4 8 3 9
9

样例输出:

2

👇 代码写在代码块中

• 1

👇 vs执行代码成功截图放在引用框中

2.5 排序问题

题目描述:将十个数进行从大到小的顺序进行排列。

  • 输入:输入十个整数。
  • 输出:以从大到小的顺序输出这个十个数。

样例输入:

1 2 3 4 5 6 7 8 9 10

样例输出:

10 9 8 7 6 5 4 3 2 1

👇 代码写在代码块中

• 1

👇 vs执行代码成功截图放在引用框中

2.6 倒叙输出

题目描述:输入一个字符串,然后倒叙输出

测试 输入 输出
测试一 likeyou uoyekil
测试二 coolgirl lriglooc

👇 代码写在代码块中

• 1

👇 vs执行代码成功截图放在引用框中

3.进阶题目

3.1 英语句子的单词数

题目描述:输入一个标准的英语句子(由空格,英语字母,英文逗号和英文句号组成),判断一共有几个单词。

测试 输入 输出
测试一 I love you,my girl. 5
测试二 You are so beautiful that I can not forget you. 10

👇 代码写在代码块中

• 1

👇 vs执行代码成功截图放在引用框中

3.2 倒叙输出

题目描述:输入一个英语句子(只有空格与英文字母),单词倒叙输出

测试 输入 输出
测试一 I love you you love I
测试二 I miss you so much much so you miss I

👇 代码写在代码块中

• 1

👇 vs执行代码成功截图放在引用框中

3.3 计算数量

题目描述:输入一个字符串,计算该字符串的英文字母、数字、空格、其它字符的数量

测试 输入 输出
测试一 if you say love me,i will bug you. 25 0 7 2
测试二 i say 123 mean i you son. 15 3 6 1

👇 代码写在代码块中

• 1

👇 vs执行代码成功截图放在引用框中

4.难度题目:给你两个很大正整数a和b,求和

题目描述:有两个很大整数,无法用已有的数据类型存储下来,试用数组解决该问题

  • 样例输入:
    456894561486584658465184651348651346513 7846584651346513245613253124513285
  • 样例输出:
    456894561486584658465184651348651346513 + 7846584651346513245613253124513285 = 456902408071236004978430264601775859798

👇 代码写在代码块中

• 1

👇 vs执行代码成功截图放在引用框中

🔖 总结

在下面写下你对这次任务学习到的知识的总结,我们会根据你的总结给你打分(学习总结)


相关文章
|
Go 开发者
数组和查找的作业布置|学习笔记
快速学习数组和查找的作业布置。
108 0
|
小程序
抽奖活动小程序之随机选取中奖用户功能实现
抽奖活动小程序之随机选取中奖用户功能实现
抽奖活动小程序之随机选取中奖用户功能实现
编号(太晚了,先发一题,可能以后题都单发了,方便分类整理)
编号(太晚了,先发一题,可能以后题都单发了,方便分类整理)
73 0
|
安全 云计算
企业购买云服务的那些坑 其实不用自己再来趟一遍
本文讲的是企业购买云服务的那些坑 其实不用自己再来趟一遍云计算作为一种新兴的信息服务的交付和使用模式,在国内的发展已有十年。十年前大家还在讨论要不要上云,现在大家讨论的已是什么业务该上什么云。云计算、云服务快速部署、按需分配的特点能提供便利、低成本的网络、计算、存储、应用等一系列服务资源,受到越来越多企业的认可。
1733 0
|
9月前
|
存储 C语言
数组和函数实践:扫雷游戏玩法和棋盘初始化(1)
数组和函数实践:扫雷游戏玩法和棋盘初始化(1)
|
C语言 Windows
扫雷——循环、函数、数组三位一体
🤖前言 🤖正文 🤖主函数部分(test.c) 👾main函数 👾menu函数 👾game函数 🤖自定义头文件部分(game.h) 👾自定义头文件部分所需引用 🤖功能实现函数部分(game.c)--- 基础版 👾功能实现函数部分所需引用 👾1.初始化函数 👾 2.打印函数 👾3.布置雷函数 👾4.排查雷函数 👾 5.统计雷函数-排查雷函数的辅助函数 👾6.效果展示 🤖主函数部分代码(test.c) 🤖自定义头文件部分代码(game.h) 🤖功能实现函数部分(game.c) 🌌进阶版(屏幕清理、爆炸展开、雷点标记) 🌏屏幕清理 🌏爆炸展开 🌏雷
90 0
扫雷——循环、函数、数组三位一体
|
缓存 NoSQL 数据库
从零开始实现放置游戏(十六)——道具系统(1)道具字典
道具系统是游戏的核心系统之一,常见的业务功能包括 “角色背包”, “道具商店”, “怪物掉落” 等,都依赖道具系统。     在实现这些功能之前,首先要解决的问题就是要定义我们的游戏世界中,到底会有哪些道具, 以及这些道具是如何分类的?     这就是我们这期要做的“道具字典“。首先必须要有一个“字典”来说明这个道具是什么,接下来才能有“背包”系统,来表示角色的背包里有些什么道具,数量有多少。
从零开始实现放置游戏(十六)——道具系统(1)道具字典
|
前端开发 JavaScript Java
内容管理-易错重难点
项目的模块架构理解 在我们做项目之前首先要对项目的模块结构有一个基本的了解,放一张我做的结构图: 注意点: 我们将依赖版本管理和依赖管理分为两个工程,而不是放在一个工程中,这样的话可以子模块可以选择性的继承,而不会太重 parent工程:对整个项目的依赖包版本进行管理 base工程:提供基础类库、工具类库等(继承parent工程,从而也纳入版本管理) content工程是一个聚合工程,不需要依赖,所以我们让它继承于parent工程拿到依赖版本即可 在content微服务工程中,我们可以发现api工程和service工程都依赖于model工程,那么我们就不需要让api、service、m
51 0
|
9月前
【错题集-编程题】孩子们的游戏(圆圈中最后剩下的数)(约瑟夫环)
【错题集-编程题】孩子们的游戏(圆圈中最后剩下的数)(约瑟夫环)
|
JavaScript
小明特别喜欢打扑克牌,除了喜欢斗地主和德州扑克之外,还喜欢一种叫桥牌的游戏,桥牌的具体规则相当复杂,有叫牌、打牌和计分三个阶段,还有不断变化的局况,局况可能影响叫牌打牌策略。但是小明暂时不关心这一些,
小明特别喜欢打扑克牌,除了喜欢斗地主和德州扑克之外,还喜欢一种叫桥牌的游戏,桥牌的具体规则相当复杂,有叫牌、打牌和计分三个阶段,还有不断变化的局况,局况可能影响叫牌打牌策略。但是小明暂时不关心这一些,
399 0

热门文章

最新文章