注释添加

This commit is contained in:
Luthics 2023-04-13 00:39:54 +08:00
parent 0aea0a88bc
commit b3b948f55b
2 changed files with 35 additions and 27 deletions

View File

@ -1,5 +1,9 @@
# 2023春程序设计基础(吴茜媛)-Moodle # 2023春程序设计基础(吴茜媛)-Moodle
已启用 ChatGPT 进行注释补充,如果注释有误,请联系 Luthics 或提交 issue工单
代码保证可以通过 moodle 的对应题目,但请勿抄袭,使用代码作为参考与对拍程序更有益于你的成长。
## 文件名字的数字是题目的唯一 ID ## 文件名字的数字是题目的唯一 ID
查看方式: 查看方式:
![1679279596411.png](https://picture-1300689095.file.myqcloud.com/2023/03/20/6417c5f41624f.png) ![1679279596411.png](https://picture-1300689095.file.myqcloud.com/2023/03/20/6417c5f41624f.png)

View File

@ -1,58 +1,62 @@
#include <stdio.h> #include <stdio.h>
// 函数名称DigiTran
// 函数功能将整数k变换为一个字母串
// 参数int k要转换的整数char res[](存储转换结果的字符数组)
void DigiTran(int k, char res[]); void DigiTran(int k, char res[]);
int s; int s;
int main() { int main() {
while (scanf("%d", &s)) { while (scanf("%d", &s)) { // 循环读入整数
if (s == -1) { if (s == -1) { // 如果读入数字为-1则退出循环
return 0; return 0;
} }
char res[233]; char res[233]; // 存储结果的字符数组
DigiTran(s, res); DigiTran(s, res); // 调用DigiTran函数进行转换
printf("%s ", res); printf("%s ", res); // 输出转换结果
} }
} }
// 函数名称ws
// 函数功能:获取一个整数的位数
// 参数int a要获取位数的整数
int ws(int a) { int ws(int a) {
int ans = 0; int ans = 0;
while (a) { while (a) { // 当a不为0时继续循环
ans++; ans++;
a /= 10; a /= 10; // 每次除以10向下取整
} }
return ans; return ans; // 返回位数
} }
void DigiTran(int k, char res[]) { void DigiTran(int k, char res[]) {
int rr[233]; int rr[233];
if (k == 0) { if (k == 0) { // 如果k为0直接将res赋值为A
res[0] = 'A'; res[0] = 'A';
res[1] = '\0'; res[1] = '\0'; // 字符串结尾
return; return; // 直接返回
} }
int n = ws(k); int n = ws(k); // 获取k的位数
for (int i = 0; i < n; i++) { for (int i = 0; i < n; i++) {
rr[n - i - 1] = k % 10; rr[n - i - 1] = k % 10; // 将k的每一位存入数组rr中
k /= 10; k /= 10;
} }
// rr 为将数组拆解为一位一位的数组 // rr 为将数组拆解为一位一位的数组
int ki = 0; // 标识 res 位数 int ki = 0; // 标识res的位数
for (int i = 0; i < n; i++) { for (int i = 0; i < n; i++) {
if (i == n - 1) { if (i == n - 1) { // 如果已经到达最后一位
res[ki++] = rr[i] + 'A'; res[ki++] = rr[i] + 'A'; // 将当前位转换为字母后存入res中
continue; continue; // 直接进行下一轮循环
} }
int ls = rr[i] * 10 + rr[i + 1]; int ls = rr[i] * 10 + rr[i + 1]; // 计算当前位和下一位组成的数字
// 如果两位数字合条件 // 如果两位数字合条件
if (ls >= 10 && ls <= 25) { if (ls >= 10 && ls <= 25) {
res[ki++] = ls + 'A'; res[ki++] = ls + 'A'; // 将两位数字转换为字母后存入res中
i++; i++; // 因为处理了两个数字所以i需要加1
// 替换两位需要将 i++ } else { // 如果不符合条件,只用一个数字进行转换
} else { res[ki++] = rr[i] + 'A'; // 将当前位转换为字母后存入res中
//如果不符合,只用一位变换
res[ki++] = rr[i] + 'A';
} }
} }
res[ki] = '\0'; res[ki] = '\0'; // 添加字符串结尾
} }