diff --git a/README.md b/README.md index ec27067..2a1b0f9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # 2023春程序设计基础(吴茜媛)-Moodle +已启用 ChatGPT 进行注释补充,如果注释有误,请联系 Luthics 或提交 issue(工单)。 + +代码保证可以通过 moodle 的对应题目,但请勿抄袭,使用代码作为参考与对拍程序更有益于你的成长。 + ## 文件名字的数字是题目的唯一 ID 查看方式: ![1679279596411.png](https://picture-1300689095.file.myqcloud.com/2023/03/20/6417c5f41624f.png) \ No newline at end of file diff --git a/homework/11989.c b/homework/11989.c index 8501a16..bb2f30a 100644 --- a/homework/11989.c +++ b/homework/11989.c @@ -1,58 +1,62 @@ #include +// 函数名称:DigiTran +// 函数功能:将整数k变换为一个字母串 +// 参数:int k(要转换的整数),char res[](存储转换结果的字符数组) void DigiTran(int k, char res[]); int s; int main() { - while (scanf("%d", &s)) { - if (s == -1) { + while (scanf("%d", &s)) { // 循环读入整数 + if (s == -1) { // 如果读入数字为-1,则退出循环 return 0; } - char res[233]; - DigiTran(s, res); - printf("%s ", res); + char res[233]; // 存储结果的字符数组 + DigiTran(s, res); // 调用DigiTran函数进行转换 + printf("%s ", res); // 输出转换结果 } } +// 函数名称:ws +// 函数功能:获取一个整数的位数 +// 参数:int a(要获取位数的整数) int ws(int a) { int ans = 0; - while (a) { + while (a) { // 当a不为0时继续循环 ans++; - a /= 10; + a /= 10; // 每次除以10,向下取整 } - return ans; + return ans; // 返回位数 } void DigiTran(int k, char res[]) { int rr[233]; - if (k == 0) { + if (k == 0) { // 如果k为0,直接将res赋值为A res[0] = 'A'; - res[1] = '\0'; - return; + res[1] = '\0'; // 字符串结尾 + return; // 直接返回 } - int n = ws(k); + int n = ws(k); // 获取k的位数 for (int i = 0; i < n; i++) { - rr[n - i - 1] = k % 10; + rr[n - i - 1] = k % 10; // 将k的每一位存入数组rr中 k /= 10; } // rr 为将数组拆解为一位一位的数组 - int ki = 0; // 标识 res 位数 + int ki = 0; // 标识res的位数 for (int i = 0; i < n; i++) { - if (i == n - 1) { - res[ki++] = rr[i] + 'A'; - continue; + if (i == n - 1) { // 如果已经到达最后一位 + res[ki++] = rr[i] + 'A'; // 将当前位转换为字母后存入res中 + continue; // 直接进行下一轮循环 } - int ls = rr[i] * 10 + rr[i + 1]; - // 如果两位数字符合条件 + int ls = rr[i] * 10 + rr[i + 1]; // 计算当前位和下一位组成的数字 + // 如果两位数字合条件 if (ls >= 10 && ls <= 25) { - res[ki++] = ls + 'A'; - i++; - // 替换两位需要将 i++ - } else { - //如果不符合,只用一位变换 - res[ki++] = rr[i] + 'A'; + res[ki++] = ls + 'A'; // 将两位数字转换为字母后存入res中 + i++; // 因为处理了两个数字,所以i需要加1 + } else { // 如果不符合条件,只用一个数字进行转换 + res[ki++] = rr[i] + 'A'; // 将当前位转换为字母后存入res中 } } - res[ki] = '\0'; -} \ No newline at end of file + res[ki] = '\0'; // 添加字符串结尾 +}