💬 任务布置说明:
- 题目考察范围:数组&字符数组
- 所有答案均放在我所写的
空代码块
或空引用框
中
1.程序员的浪漫-爱心代码
1.1 官网下载EasyX
EasyX 是针对 C/C++ 的图形库,可以帮助使用C/C++语言的程序员快速上手图形和游戏编程。
比如,可以用 VC + EasyX 很快的用几何图形画一个房子,或者一辆移动的小车,可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏,可以练习图形学的各种算法,等等。
这里只是为了让大家简单了解一下如何下载、安装与使用。
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执行代码成功截图放在引用框中
🔖 总结
在下面写下你对这次任务学习到的知识的总结,我们会根据你的总结给你打分(学习总结)