第五章

news/2024/11/17 0:21:11/文章来源:https://www.cnblogs.com/hisun9/p/18550158

5.1 节练习

练习 5.1

空语句是最简单的语句,空语句由一个单独的分号构成。如果在程序的某个地方,语法上需要一条语句但是逻辑上不需要,此时应该使用空语句,空语句什么也不做。

一种常见的情况是,当循环的全部工作在条件部分就可以完成时,我们通常会用到空语句。使用空语句时最好加上注释,从而令代码的阅读者知道这条语句是有意省略内容的。

练习 5.2

块是指用花括号括起来的语句和声明的序列,也称为复合语句。一个块就是一个作用域,在块中引入的名字只能在块内部以及嵌套在块中的子块里访问。如果在程序的某个地方,语法上需要一条语句,但是逻辑上需要多条语句,此时应该使用块。块不需要以分号结束。

例如,循环体必须是一条语句,但是我们通常需要在循环体内做很多事情,此时就应该把多条语句用花括号括起来,从而把语句序列转变成块。

练习 5.3

原文的 while 循环使用了块,其形式是:

while ( val <= 10 ) 
{ sum += val; ++val; 
} 

利用逗号运算符改写之后的形式如下所示:

while ( val <= 10 ) sum += val, ++val; 

很明显,改写之后的代码不够清晰,可读性降低了。

5.2 节练习

练习 5.4

(a)是非法的,它的原意是希望在 while 语句的控制结构当中定义一个string::iterator 类型的变量 iter,然后判断 iter 是否到达了 s 的末尾,只要还没有到达末尾就执行循环体的内容。但是该式把变量的定义和关系判断混合在了一起,如果要使用 iter 与其他值比较,必须首先为 iter 赋初值。修改后的程序应该是:

string::iterator iter=s.begin(); 
while (iter != s.end()) 
{ ++iter; /*...*/ 
}

(b)是非法的,变量 status 定义在 while 循环控制结构的内部,其作用域仅限于 while 循环。if 语句已经位于 while 循环的作用域之外,status 在 if 语句内是一个未命名的无效变量。要想在 if 语句中继续使用 status,需要把它定义在while 循环之前。修改后的程序应该是:

bool status; 
while (status = find(word)) { /* ... */ } 
if (!status) { /* ... */ }

附上书上原话:

img

5.3 节练习

练习 5.5

#include <iostream>using namespace std;int main()
{int grade;cout << "请输入您的成绩:";cin >> grade;if (grade < 0 || grade > 100){cout << "该成绩不合法" << endl;return -1;}if (grade == 100) // 处理满分的情况{cout << "等级成绩是:" << "A++" << endl;return -1;}if (grade < 60) // 处理不及格的情况{cout << "等级成绩是:" << "F" << endl;return -1;}int iU = grade / 10; // 成绩的十位数int iT = grade % 10; // 成绩的个位数string score, level, lettergrade;// 根据成绩的十位数字确定 score if (iU == 9)score = "A";else if (iU == 8)score = "B";else if (iU == 7)score = "C";elsescore = "D";// 根据成绩的个位数字确定 level if (iT < 3)level = "-";else if (iT > 7)level = "+";elselevel = "";// 累加求得等级成绩lettergrade = score + level;cout << "等级成绩是:" << lettergrade << endl;return 0;
}

输出如下:

img

练习 5.6

#include <iostream> 
using namespace std;
int main()
{int grade;cout << "请输入您的成绩:";cin >> grade;if (grade < 0 || grade > 100){cout << "该成绩不合法" << endl;return -1;}if (grade == 100) // 处理满分的情况{cout << "等级成绩是:" << "A++" << endl;return -1;}if (grade < 60) // 处理不及格的情况{cout << "等级成绩是:" << "F" << endl;return -1;}int iU = grade / 10; // 成绩的十位数int iT = grade % 10; // 成绩的个位数string score, level, lettergrade;// 根据成绩的十位数字确定 score score = (iU == 9) ? "A": (iU == 8) ? "B": (iU == 7) ? "C" : "D";// 根据成绩的个位数字确定 level level = (iT < 3) ? "-": (iT > 7) ? "+" : "";// 累加求得等级成绩lettergrade = score + level;cout << "等级成绩是:" << lettergrade << endl;return 0;
}

输出如下:

img

练习 5.7

(a) if 语句的循环体应该是一条语句,需要以分号结束,

程序修改为:

if (ival1 != ival2) ival1 = ival2;
else ival1 = ival2 = 0;

(b) if 语句的循环体只能是一条语句,本题从逻辑上来说需要做两件事,一是修改 minval 的值,二是重置 occurs 的值,所以必须把这两条语句放在一个块里。

程序修改为:

if (ival < minval) 
{ minval = ival; occurs = 1; 
} 

(c) ival 是定义在 if 语句中的变量,其作用域仅限于第一个 if 语句,要想在第二个 if 语句中也使用它,就必须把它定义在两个 if 语句的外部。

程序修改为:

int ival; 
if (ival = get_value()) cout << "ival = " << ival << endl; 
if (!ival) cout << "ival = 0\n"; 

(d) 程序的原意是判断 ival 的值是否是 0,原题使用赋值运算符的结果是把 0赋给了 ival,然后检验 ival 的值,这样使得条件永远不会满足。

程序修改为:

if (ival == 0) ival = get_value();

练习 5.8

悬垂 else 是指当程序中的 if 分支多于 else 分支时,如何为 else 寻找与之匹配的 if 分支的问题。

C++规定,else 与离它最近的尚未匹配的 if 匹配,从而消除了二义性。

练习 5.9

#include <iostream> 
using namespace std;
int main()
{unsigned int vowelCnt = 0;char ch;cout << "请输入一段文本:" << endl;while (cin >> ch){if (ch == 'a')++vowelCnt;if (ch == 'e')++vowelCnt;if (ch == 'i')++vowelCnt;if (ch == 'o')++vowelCnt;if (ch == 'u')++vowelCnt;}cout << "您输入的文本中共有 " << vowelCnt << "个元音字母" << endl;return 0;
}

输出如下:

img

练习 5.10

#include <iostream> 
using namespace std;
int main()
{unsigned int aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0;char ch;cout << "请输入一段文本:" << endl;while (cin >> ch){switch (ch){case 'a':case 'A':++aCnt;break;case 'e':case 'E':++eCnt;break;case 'i':case 'I':++iCnt;break;case 'o':case 'O':++oCnt;break;case 'u':case 'U':++uCnt;break;}}cout << "元音字母 a 的数量是:" << aCnt << endl;cout << "元音字母 e 的数量是:" << eCnt << endl;cout << "元音字母 i 的数量是:" << iCnt << endl;cout << "元音字母 o 的数量是:" << oCnt << endl;cout << "元音字母 u 的数量是:" << uCnt << endl;return 0;
}

输出如下:

img

练习 5.11

#include <iostream> 
using namespace std;
int main()
{unsigned int aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0;unsigned int spaceCnt = 0, tabCnt = 0, newlineCnt = 0;char ch;cout << "请输入一段文本:" << endl;while (cin.get(ch)){switch (ch){case 'a':case 'A':++aCnt;break;case 'e':case 'E':++eCnt;break;case 'i':case 'I':++iCnt;break;case 'o':case 'O':++oCnt;break;case 'u':case 'U':++uCnt;break;case ' ':++spaceCnt;break;case '\t':++tabCnt;break;case '\n':++newlineCnt;break;}}cout << "元音字母 a 的数量是:" << aCnt << endl;cout << "元音字母 e 的数量是:" << eCnt << endl;cout << "元音字母 i 的数量是:" << iCnt << endl;cout << "元音字母 o 的数量是:" << oCnt << endl;cout << "元音字母 u 的数量是:" << uCnt << endl;cout << "空格的数量是:" << spaceCnt << endl;cout << "制表符的数量是:" << tabCnt << endl;cout << "换行符的数量是:" << newlineCnt << endl;return 0;
}

输出如下:

img

注意

读入字符的语句应该使用 cin.get(ch),而不能使用 >>,因为后者会忽略本题所要统计的特殊符号。

如果写成 while (cin >> ch),则输出结果是这样:

img

练习 5.12

我们的设定是一个字符只会被统计一次。如果用户输入的序列是 xxxxxfflxxx,则统计结果是 ff:1 次、fl:0 次、fi:0 次。如果用户输入的序列是xxxxxfiffffflxxx,则统计结果是 ff:2 次、fl:1 次、fi:1 次。

满足题意的程序如下所示:

#include <iostream> 
using namespace std;
int main()
{unsigned int ffCnt = 0, flCnt = 0, fiCnt = 0;char ch, prech = '\0';cout << "请输入一段文本:" << endl;while (cin >> ch){bool bl = true;if (prech == 'f'){switch (ch){case 'f':++ffCnt;bl = false;break;case 'l':++flCnt;break;case 'i':++fiCnt;break;}}if (!bl)prech = '\0';elseprech = ch;}cout << "ff 的数量是:" << ffCnt << endl;cout << "fl 的数量是:" << flCnt << endl;cout << "fi 的数量是:" << fiCnt << endl;return 0;
}

输出如下:

img

练习 5.13

switch 语句有几个语法要点:必须在必要的地方使用 break;语句,应该把变量定义在块作用域内,case 标签只能有一个值且不能是变量。

(a)的错误是在每个 case 分支中都缺少了 break;语句,造成的后果是一旦执行了前面的 case 分支,必定还会继续执行接下来的其他 case 分支。举例说明,如果ch 的内容是字符'a',则 aCnt、eCnt 和 iouCnt 的值都会增加;如果 ch 的内容是字符'e',则 eCnt 和 iouCnt 的值都会增加,这显然与程序的预期是不相符的。

修改后的程序如下所示:

unsigned aCnt = 0, eCnt = 0, iouCnt = 0;
char ch = next_text();
switch (ch) {
case 'a':aCnt++;break;
case 'e':eCnt++;break;
default:iouCnt++;break;
}

(b)的错误是在 case 分支中定义并初始化了变量 ix,同时在 default 分支中使用了该变量,此时如果控制流跳过 case 分支而直接到达 default 分支,则会试图使用未经初始化的变量,因而该程序无法通过编译。解决办法是,把 ix 的定义放置在 switch 语句之前。

修改后的程序如下所示:

unsigned index = some_value();
int ix;
switch (index) {
case 1:ix = get_value();ivec[ix] = index;break;
default:ix = ivec.size() - 1;ivec[ix] = index;
}

附上书上原话:

img

插句题外话

在Visual Studio 2019 中:

如果写成这样,则编译会报错

#include <iostream>
#include <vector>using namespace std;int main()
{unsigned index = 2;vector<int> ivec(5);int ix;switch (index) {case 1://int ix = 10;ivec[ix] = index;break;default:ix = ivec.size() - 1;ivec[ix] = index;}for (auto i : ivec)cout << i << " ";cout << endl;return 0;
}

img

但是写成这样(即在定义ix的同时对其初始化)就可以编译通过了:

#include <iostream>
#include <vector>using namespace std;int main()
{unsigned index = 2;vector<int> ivec(5);int ix = 0;switch (index) {case 1://int ix = 10;ivec[ix] = index;break;default:ix = ivec.size() - 1;ivec[ix] = index;}for (auto i : ivec)cout << i << " ";cout << endl;return 0;
}

输出如下:

img

在Dev-C++ 5.11中:

写成这样(即在定义ix的时候不对其进行初始化),是不报错的:

#include <iostream>
#include <vector>using namespace std;int main()
{unsigned index = 2;vector<int> ivec(5);int ix;switch (index) {case 1://int ix = 10;ivec[ix] = index;break;default:ix = ivec.size() - 1;ivec[ix] = index;}for (auto i : ivec)cout << i << " ";cout << endl;return 0;
}

输出如下:

img

在Visual Studio 2019中,写成这样,会报如下错误:

#include <iostream>
#include <vector>using namespace std;int main()
{unsigned index = 2;vector<int> ivec(5);switch (index) {case 1:int ix = 10;ivec[ix] = index;break;default:ix = ivec.size() - 1;ivec[ix] = index;}for (auto i : ivec)cout << i << " ";cout << endl;return 0;
}

img

回归正题

(c)的错误是在同一个 case 标签中放置了多个值,而 C++规定一个 case 标签只能对应一个值。

修改后的程序如下所示:

unsigned evenCnt = 0, oddCnt = 0;
int digit = get_num() % 10;
switch (digit) {
case 1:
case 3:
case 5:
case 7:
case 9:oddcnt++;break;
case 2:
case 4:
case 6:
case 8:
case 10:evencnt++;break;
} 

(d)的错误是使用变量作为 case 标签的内容,C++规定,case 标签的内容只能是整型常量表达式。

修改后的程序如下所示:

const unsigned ival = 512, jval = 1024, kval = 4096;
unsigned bufsize;
unsigned swt = get_bufCnt();
switch (swt) {
case ival:bufsize = ival * sizeof(int);break;
case jval:bufsize = jval * sizeof(int);break;
case kval:bufsize = kval * sizeof(int);break;
}

5.4 节练习

练习 5.14

#include <iostream> 
#include <string> 
using namespace std;
int main()
{// 定义 3 个字符串变量,分别表示:// 当前操作的字符串、前一个字符串、当前出现次数最多的字符串string currString, preString = "", maxString;// 定义 2 个整型变量,分别表示:// 当前连续出现的字符串数量、当前出现次数最多的字符串数量int currCnt = 1, maxCnt = 0;while (cin >> currString) // 检查每个字符串{// 如果当前字符串与前一个字符串一致,更新状态if (currString == preString){++currCnt;if (currCnt > maxCnt){maxCnt = currCnt;maxString = currString;}}// 如果当前字符串与前一个字符串不一致,重置 currCnt else{currCnt = 1;}// 更新 preString 以便于下一次循环使用preString = currString;}if (maxCnt > 1)cout << "出现最多的字符串是:" << maxString<< ",次数是:" << maxCnt << endl;elsecout << "每个字符串都只出现了一次" << endl;return 0;
}

输出如下:

img

插句题外话

自己写的

#include <iostream>using namespace std;int main()
{int num = 1, res = 1;string word, preword, maxword;while (cin >> word){if (preword == word){num++;}else{if (num > res){res = num;maxword = preword;}preword = word;num = 1;}}res == 1 ? cout << "no answer" << endl : cout << maxword << " " << res << endl;return 0;
}

输出如下:

img

练习 5.15

(a)的错误是在 for 语句中定义了变量 ix,然后试图在 for 语句之外继续使用ix。因为 ix 定义在 for 语句的内部,所以其作用域仅限于 for 语句。在 if 语句中 ix 已经失效,因此程序无法编译通过。

修改后的程序如下:

int ix; 
for (ix = 0; ix != sz; ++ix) { /* ... */ } 
if (ix != sz) 
// ...

(b)的错误有两个,一是变量 ix 未经初始化就直接使用,二是 for 语句的控制结构缺少一句话,在语法上是错误的。

修改后的程序如下:

int ix; 
for (ix = 0; ix != sz; ++ix) { /* ... */ } 

(c)的错误是一旦进入循环,程序就会无休止地执行下去。也就是说,当初始情况下 ix != sz 时,由题意可知 ix 和 sz 一直同步增长,循环的终止条件永远不会满足,所以该循环是一个死循环。

修改后的程序如下:

for (int ix = 0; ix != sz; ++ix) { /* ... */ }

练习 5.16

不赘叙了

练习 5.17

#include <iostream> 
#include <vector> 
using namespace std;
int main()
{vector<int> v1 = { 0, 1, 1, 2 };vector<int> v2 = { 0, 1, 1, 2, 3, 5, 8 };vector<int> v3 = { 3, 5, 8 };vector<int> v4 = { 3, 5, 0, 9, 2, 7 };auto it1 = v1.cbegin(); // 定义 v1 的迭代器auto it2 = v2.cbegin(); // 定义 v2 的迭代器auto it3 = v3.cbegin(); // 定义 v3 的迭代器auto it4 = v4.cbegin(); // 定义 v4 的迭代器// 设定循环条件:v1 和 v2 都尚未检查完while (it1 != v1.cend() && it2 != v2.cend()){// 如果当前位置的两个元素不相等,则肯定没有前缀关系,退出循环if (*it1 != *it2){cout << "v1 和 v2 之间不存在前缀关系" << endl;break;}++it1; // 迭代器移动到下一个元素++it2; // 迭代器移动到下一个元素}if (it1 == v1.cend()) // 如果 v1 较短{cout << "v1 是 v2 的前缀" << endl;}if (it2 == v2.cend()) // 如果 v2 较短{cout << "v2 是 v1 的前缀" << endl;}return 0;
}

输出如下:

img

程序的输出结果是:v1 是 v2 的前缀。如果更新程序使其处理 v3 和 v4,则程序将显示:v3 和 v4 之间不存在前缀关系。

插句题外话

自己写的

#include <iostream>
#include <vector>using namespace std;bool isequal(vector<int> vshort, vector<int> vlong)
{for (int index = 0; index != vshort.size(); index++)if (vshort[index] != vlong[index])return false;return true;
}int main()
{vector<int> v1;vector<int> v2;int n, size1, size2;cout << "输入第一组数据的长度:";cin >> size1;cout << "输入第一组数据:";for (int i = 0; i < size1; ++i){cin >> n;v1.push_back(n);}cout << "输入第二组数据的长度:";cin >> size2;cout << "输入第二组数据:";for (int i = 0; i < size2; ++i){cin >> n;v2.push_back(n);}if (size1 <= size2)isequal(v1, v2) ? cout << "v1是v2的前缀" << endl: cout << "v1 和 v2 之间不存在前缀关系" << endl;elseisequal(v1, v2) ? cout << "v2是v1的前缀" << endl: cout << "v1 和 v2 之间不存在前缀关系" << endl;return 0;
}

输出如下:

img

练习 5.18

(a)的含义是每次循环读入两个整数并输出它们的和。因为 do-while 语句的循环体必须是一条语句或者一个语句块,所以在本题中应该把循环体的内容用花括号括起来。

修改后的程序是:

do {int v1, v2;cout << "Please enter two numbers to sum:";if (cin >> v1 >> v2)cout << "Sum is: " << v1 + v2 << endl;
} while (cin);

(b)的含义是当 get_response 的返回值不为 0 时执行循环体。因为 do-while语句不允许在循环条件内定义变量,所以该程序是错误的。

修改后的程序是:

int ival;
do {ival = get_response();
} while (ival);

(c) 的含义是当 get_response 的返回值不为 0 时执行循环体。因为出现在do-while 语句条件部分的变量必须定义在循环体之外,所以该程序是错误的。

修改后的程序是:

int ival;
do {ival = get_response();
} while (ival);

练习 5.19

#include <iostream>
#include <string>
using namespace std;int main()
{do {cout << "请输入两个字符串" << endl;string str1, str2;// 检查输入是否有效if (!(cin >> str1 >> str2)) {// 输入失败时退出循环cout << "输入结束或发生错误。" << endl;break;}// 比较字符串长度并输出结果if (str1.size() < str2.size())cout << "长度较小的字符串是:" << str1 << endl;else if (str1.size() > str2.size())cout << "长度较小的字符串是:" << str2 << endl;elsecout << "两个字符串等长" << endl;} while (true); // 循环控制交由输入校验处理return 0;
}

输出如下:

img

在自己写这题的时候,思考了一个问题,可以看看这篇博客 使用while循环分别对两个vector进行赋值,该怎么做

5.5 节练习

练习 5.20

#include <iostream> 
#include <string> 
using namespace std;
int main()
{string currString, preString;bool bl = true;cout << "请输入一组字符串:" << endl;while (cin >> currString){if (currString == preString){bl = false;cout << "连续出现的字符串是:" << currString << endl;break;}preString = currString;}if (bl)cout << "没有连续出现的字符串" << endl;return 0;
}

输出如下:

img

练习 5.21

#include <iostream> 
#include <string> 
using namespace std;
int main()
{string currString, preString;bool bl = true;cout << "请输入一组字符串:" << endl;while (cin >> currString){if (!isupper(currString[0])){preString = "";continue;}if (currString == preString){bl = false;cout << "连续出现的以大写字母开头的字符串是:" << currString << endl;break;}preString = currString;}if (bl)cout << "没有连续出现的以大写字母开头的字符串" << endl;return 0;
}

练习 5.22

int sz;
do {sz = get_size();
} while (sz <= 0);

5.6 节练习

练习 5.23

#include <iostream> 
using namespace std;
int main()
{cout << "请依次输入被除数和除数:" << endl;int ival1, ival2;cin >> ival1 >> ival2;if (ival2 == 0){cout << "除数不能为 0" << endl;return -1;}cout << "两数相除的结果是:" << ival1 / ival2 << endl;return 0;
}

输出如下:

img

练习 5.24

#include <iostream> 
#include <stdexcept> 
using namespace std;
int main()
{cout << "请依次输入被除数和除数:" << endl;int ival1, ival2;cin >> ival1 >> ival2;if (ival2 == 0){throw runtime_error("除数不能为 0");}cout << "两数相除的结果是:" << ival1 / ival2 << endl;return 0;
}

在Visual Studio 2019中运行,弹出了这个:

img

在Dev C++中运行,输出如下:

img

练习 5.25

#include <iostream> 
#include <stdexcept> 
using namespace std;
int main()
{cout << "请依次输入被除数和除数:" << endl;int ival1, ival2;while (cin >> ival1 >> ival2){try{if (ival2 == 0){throw runtime_error("除数不能为 0");}cout << "两数相除的结果是:" << ival1 / ival2 << endl;}catch (runtime_error err){cout << err.what() << endl;cout << "需要继续吗(y or n)?";char ch;cin >> ch;if (ch != 'y' && ch != 'Y')break;}}return 0;
}

输出如下:

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/834856.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI独立开发完全指南:从Cursor到变现的实战攻略

大家好,我是加加,今天给大家分享的是用 cursor 实现复杂创意想法。近期参加了圈子里的 cursor 培训,当了回教练,以下是我分享的那节课的主要内容,分享给初学者想要入门AI独立开发的朋友。这几乎就是逐字稿了,但是生生的让我给读成了磕磕绊绊,我这口头表达能力啊,真是太…

OCS助手配置

使用准备:装有Edge浏览器的电脑鼠标眼睛一双灵活的手一颗勇敢不放弃的心♥安装流程 1.安装油猴插件 2.安装油猴脚本-OCS助手 3.配置OCS助手 4.启动刷课 教程开始 1.安装油猴插件打开Edge浏览器的主页2.点击三个点点点击扩展3.点击"打开MIcrosoft Edge加载项"4.在左边…

测试笔记1

测试笔记1 ​​

Win11安装kali子系统

Win11安装kali子系统 1. 开启服务,更新wsl2 启用或关闭Windows功能 -> 开启适用于Linux的Windows子系统wsl --update #更新到wsl2`wsl --status #检查一下`2. 安装kali,换源配置工具 wsl --install kali-linux #安装kali-linux`换源中科大源,会变快很多,将官方源…

002.测试2

002.测试2 ​​ ‍

第三篇:Scrum冲刺博客

冲刺博客:Day 3 - 数据处理与设计细化 站立式会议照片: ![站立式会议 - Day 3](链接到Day 3的照片) 工作进展:许莹柔(机器学习工程师):昨日完成:数据集预处理工作开始。 今日计划:继续数据集预处理,并开始模型训练。 遇到的困难:数据集存在一些异常值需要处理。肖晓霞…

CPP 智能指针

CPP 智能指针Created: 2024-06-30T20:43+08:00 Published: 2024-11-16T23:17+08:00 Categories: C-CPP智能指针的作用 智能指针最初使的作用就是离开作用域调用析构函数。 因为 malloc 出来的东西只能通过指针持有,栈上的对象在离开作用域后会自动调用析构函数,但是裸指针会不…

先天软工圣体队——冲刺日记(第三天)

1. 每位团队成员的分工与进度成员 完成的任务 完成的任务时长 剩余时间何愉心、邱雨涵 对以及会议进行记录与vlog剪辑 3小时 1小时陈思雨,郑奇键 添加资料库滑动框,美化UI 2小时 2小时陈尚冰 ”登录“”注册“页面的开发,安全性强化 5小时 2小时柯鸿毅 API拓展功能完善 2小时…

学期2024-2025-1 学号20241306 《计算机基础与程序设计》第8周学习总结

学期2024-2025-1学号20241306 《计算机基础与程序设计》第8周学习总结 作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第8周作业)这个作业的目标 功能设…

第二篇:Scrum冲刺博客

冲刺博客:Day 2 - 启动与规划 站立式会议照片: ![站立式会议 - Day 2](链接到Day 2的照片) 工作进展:许莹柔(机器学习工程师):昨日完成:阅读《构建之法》第六章,为模型训练做准备。 今日计划:开始数据集的预处理工作。 遇到的困难:无。肖晓霞(UI设计师):昨日完成:…

AtCoder Beginner Contest 380

A - 123233 题意给个\(6\)位数,判断是否是\(1\)个\(1\),\(2\)个\(2\),\(3\)个\(3\)。思路模拟。代码点击查看代码 #include <bits/stdc++.h> using namespace std; #define int long long typedef pair<int, int> pii;const int mxn = 1e6 + 5;void solve() {st…