注释添加
This commit is contained in:
parent
0aea0a88bc
commit
b3b948f55b
|
@ -1,5 +1,9 @@
|
||||||
# 2023春程序设计基础(吴茜媛)-Moodle
|
# 2023春程序设计基础(吴茜媛)-Moodle
|
||||||
|
|
||||||
|
已启用 ChatGPT 进行注释补充,如果注释有误,请联系 Luthics 或提交 issue(工单)。
|
||||||
|
|
||||||
|
代码保证可以通过 moodle 的对应题目,但请勿抄袭,使用代码作为参考与对拍程序更有益于你的成长。
|
||||||
|
|
||||||
## 文件名字的数字是题目的唯一 ID
|
## 文件名字的数字是题目的唯一 ID
|
||||||
查看方式:
|
查看方式:
|
||||||

|

|
|
@ -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'; // 添加字符串结尾
|
||||||
}
|
}
|
Loading…
Reference in New Issue