c语言输出3进制和12进制加法口诀表代码

117 阅读9分钟

#include <stdio.h> #include <stdlib.h>

// 函数用于将整数转换为指定基数的字符串表示 char* intToBaseString(int num, int base) { static char buffer[33]; // 静态数组用于存储转换后的字符串 int i = 0; int isNegative = 0;

// 处理负数
if (num < 0) {
    isNegative = 1;
    num = -num;
}

// 转换为字符串
do {
    int digit = num % base;
    buffer[i++] = digit < 10 ? '0' + digit : 'A' + digit - 10;
    num /= base;
} while (num > 0);

// 如果是负数,添加负号
if (isNegative) {
    buffer[i++] = '-';
}

// 字符串结束符
buffer[i] = '\0';

// 反转字符串
for (int j = 0; j < i / 2; j++) {
    char temp = buffer[j];
    buffer[j] = buffer[i - j - 1];
    buffer[i - j - 1] = temp;
}

return buffer;

}

int main() { int n, m, o; char r[33], s[33], t[33]; // 为字符串分配足够的空间

for (n = 0; n < 8; n++) {
    for (m = 0; m < 8; m++) {
        o = n + m;
        // 调用函数将整数转换为基数为3的字符串
        strcpy(r, intToBaseString(n, 3));
        strcpy(s, intToBaseString(m, 3));
        strcpy(t, intToBaseString(o, 3));
        // 输出结果
        printf("%s+%s=%s\n", r, s, t);
    }
}

return 0;

} 将3进制改成12进制加法口诀表代码。 要将上述代码中的3进制改成12进制,我们需要对intToBaseString函数进行一些修改,以支持基数为12的转换。在12进制中,我们使用数字0-9和字母A和B来表示10和11。下面是修改后的代码:

正确例题
#include <stdio.h>
#include <stdlib.h>

// 函数用于将整数转换为指定基数的字符串表示
char* intToBaseString(int num, int base) {
    static char buffer[33]; // 静态数组用于存储转换后的字符串
    int i = 0;
    int isNegative = 0;

    // 处理负数
    if (num < 0) {
        isNegative = 1;
        num = -num;
    }

    // 转换为字符串
    do {
        int digit = num % base;
        if (digit < 10) {
            buffer[i++] = '0' + digit; // 0-9
        } else {
            buffer[i++] = 'A' + digit - 10; // A表示10,B表示11
        }
        num /= base;
    } while (num > 0);

    // 如果是负数,添加负号
    if (isNegative) {
        buffer[i++] = '-';
    }

    // 字符串结束符
    buffer[i] = '\0';

    // 反转字符串
    for (int j = 0; j < i / 2; j++) {
        char temp = buffer[j];
        buffer[j] = buffer[i - j - 1];
        buffer[i - j - 1] = temp;
    }

    return buffer;
}

int main() {
    int n, m, o;
    char r[33], s[33], t[33]; // 为字符串分配足够的空间

    // 生成12进制加法口诀表
    for (n = 0; n < 12; n++) {
        for (m = 0; m < 12; m++) {
            o = n + m;
            // 调用函数将整数转换为基数为12的字符串
            strcpy(r, intToBaseString(n, 12));
            strcpy(s, intToBaseString(m, 12));
            strcpy(t, intToBaseString(o, 12));
            // 输出结果
            printf("%s+%s=%s\n", r, s, t);
        }
        printf("\n"); // 每完成一行后换行
    }

    return 0;
}

这段代码中,intToBaseString函数现在支持将整数转换为12进制的字符串表示。在转换过程中,我们检查digit的值,如果它小于10,我们直接使用'0' + digit来获取对应的字符;如果digit等于或大于10,我们使用'A' + digit - 10来获取对应的字符(A表示10,B表示11)。

main函数中,我们使用两个嵌套的for循环来遍历从0到11的整数,并使用intToBaseString函数将这些整数转换为12进制的字符串,然后输出它们的和。每完成一行后,我们使用printf("\n")来换行,以便生成一个清晰的12进制加法口诀表。

import java.util.*; public class Test { public static void main(String[] args) { for(int n=0; n<8; n++) { for(int m=0; m<8; m++){ int o; o=n+m; String r = Integer.toString(n, 3); String s = Integer.toString(m, 3); String t = Integer.toString(o, 3); System.out.println(r+"+"+s+"="+t); } } } } 将以上java语言程序代码改编成c语言程序代码。

要将Java代码改编成C语言代码,我们需要考虑C语言中没有内置的字符串操作和整数到字符串的转换函数。在C语言中,我们通常使用printf函数来格式化输出,而整数到字符串的转换需要我们自己实现。下面是一个C语言版本的程序,它实现了类似的功能:

正确例题
#include <stdio.h>
#include <stdlib.h>

// 函数用于将整数转换为指定基数的字符串表示
char* intToBaseString(int num, int base) {
    static char buffer[33]; // 静态数组用于存储转换后的字符串
    int i = 0;
    int isNegative = 0;

    // 处理负数
    if (num < 0) {
        isNegative = 1;
        num = -num;
    }

    // 转换为字符串
    do {
        int digit = num % base;
        buffer[i++] = digit < 10 ? '0' + digit : 'A' + digit - 10;
        num /= base;
    } while (num > 0);

    // 如果是负数,添加负号
    if (isNegative) {
        buffer[i++] = '-';
    }

    // 字符串结束符
    buffer[i] = '\0';

    // 反转字符串
    for (int j = 0; j < i / 2; j++) {
        char temp = buffer[j];
        buffer[j] = buffer[i - j - 1];
        buffer[i - j - 1] = temp;
    }

    return buffer;
}

int main() {
    int n, m, o;
    char r[33], s[33], t[33]; // 为字符串分配足够的空间

    for (n = 0; n < 8; n++) {
        for (m = 0; m < 8; m++) {
            o = n + m;
            // 调用函数将整数转换为基数为3的字符串
            strcpy(r, intToBaseString(n, 3));
            strcpy(s, intToBaseString(m, 3));
            strcpy(t, intToBaseString(o, 3));
            // 输出结果
            printf("%s+%s=%s\n", r, s, t);
        }
    }

    return 0;
}

这段代码中,intToBaseString函数负责将整数转换为指定基数的字符串表示。它使用了一个静态数组buffer来存储转换后的字符串,并在函数结束时返回这个数组的地址。在main函数中,我们使用两个嵌套的for循环来遍历从0到7的整数,并使用intToBaseString函数将这些整数转换为基数为3的字符串,然后输出它们的和。

注意,由于C语言中字符串是以空字符\0结尾的字符数组,所以我们在intToBaseString函数中添加了\0来确保字符串正确结束。此外,我们还添加了一个循环来反转字符串,因为我们的转换是从低位到高位进行的,而通常我们希望字符串从高位开始显示。

正确例题 #include <stdio.h> #include <stdlib.h>

// 函数用于将整数转换为指定基数的字符串表示 char* intToBaseString(int num, int base) { static char buffer[33]; // 静态数组用于存储转换后的字符串 int i = 0; int isNegative = 0;

// 处理负数
if (num < 0) {
    isNegative = 1;
    num = -num;
}

// 转换为字符串
do {
    int digit = num % base;
    buffer[i++] = digit < 10 ? '0' + digit : 'A' + digit - 10;
    num /= base;
} while (num > 0);

// 如果是负数,添加负号
if (isNegative) {
    buffer[i++] = '-';
}

// 字符串结束符
buffer[i] = '\0';

// 反转字符串
for (int j = 0; j < i / 2; j++) {
    char temp = buffer[j];
    buffer[j] = buffer[i - j - 1];
    buffer[i - j - 1] = temp;
}

return buffer;

}

int main() { int n, m, o; char r[33], s[33], t[33]; // 为字符串分配足够的空间

for (n = 0; n < 8; n++) {
    for (m = 0; m < 8; m++) {
        o = n + m;
        // 调用函数将整数转换为基数为3的字符串
        strcpy(r, intToBaseString(n, 4));
        strcpy(s, intToBaseString(m, 4));
        strcpy(t, intToBaseString(o, 4));
        // 输出结果
        printf("%s+%s=%s\n", r, s, t);
    }
}

return 0;

}

#include <stdio.h> #include <stdlib.h>

// 函数用于将整数转换为指定基数的字符串表示 char* intToBaseString(int num, int base) { static char buffer[33]; // 静态数组用于存储转换后的字符串 int i = 0; int isNegative = 0;

// 处理负数
if (num < 0) {
    isNegative = 1;
    num = -num;
}

// 转换为字符串
do {
    int digit = num % base;
    if (digit < 10) {
        buffer[i++] = '0' + digit; // 0-9
    } else {
        buffer[i++] = 'A' + digit - 10; // A表示10,B表示11
    }
    num /= base;
} while (num > 0);

// 如果是负数,添加负号
if (isNegative) {
    buffer[i++] = '-';
}

// 字符串结束符
buffer[i] = '\0';

// 反转字符串
for (int j = 0; j < i / 2; j++) {
    char temp = buffer[j];
    buffer[j] = buffer[i - j - 1];
    buffer[i - j - 1] = temp;
}

return buffer;

}

int main() { int n, m, o; char r[33], s[33], t[33]; // 为字符串分配足够的空间

// 生成12进制加法口诀表
for (n = 0; n < 12; n++) {
    for (m = 0; m < 12; m++) {
        o = n + m;
        // 调用函数将整数转换为基数为12的字符串
        strcpy(r, intToBaseString(n, 12));
        strcpy(s, intToBaseString(m, 12));
        strcpy(t, intToBaseString(o, 12));
        // 输出结果
        printf("%s+%s=%s\n", r, s, t);
    }
    printf("\n"); // 每完成一行后换行
}

return 0;

} 将12进制改成62进制加法口诀表代码。

要将上述代码中的12进制改成62进制,我们需要对intToBaseString函数进行一些修改,以支持基数为62的转换。在62进制中,我们使用数字0-9、大写字母A-Z和小写字母a-z来表示10-61。下面是修改后的代码:

正确例题
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 函数用于将整数转换为指定基数的字符串表示
char* intToBaseString(int num, int base) {
    static char buffer[65]; // 静态数组用于存储转换后的字符串
    int i = 0;
    int isNegative = 0;

    // 处理负数
    if (num < 0) {
        isNegative = 1;
        num = -num;
    }

    // 转换为字符串
    do {
        int digit = num % base;
        if (digit < 10) {
            buffer[i++] = '0' + digit; // 0-9
        } else if (digit < 36) {
            buffer[i++] = 'A' + digit - 10; // A-Z
        } else {
            buffer[i++] = 'a' + digit - 36; // a-z
        }
        num /= base;
    } while (num > 0);

    // 如果是负数,添加负号
    if (isNegative) {
        buffer[i++] = '-';
    }

    // 字符串结束符
    buffer[i] = '\0';

    // 反转字符串
    for (int j = 0; j < i / 2; j++) {
        char temp = buffer[j];
        buffer[j] = buffer[i - j - 1];
        buffer[i - j - 1] = temp;
    }

    return buffer;
}

int main() {
    int n, m, o;
    char r[65], s[65], t[65]; // 为字符串分配足够的空间

    // 生成62进制加法口诀表
    for (n = 0; n < 62; n++) {
        for (m = 0; m < 62; m++) {
            o = n + m;
            // 调用函数将整数转换为基数为62的字符串
            strcpy(r, intToBaseString(n, 62));
            strcpy(s, intToBaseString(m, 62));
            strcpy(t, intToBaseString(o, 62));
            // 输出结果
            printf("%s+%s=%s\n", r, s, t);
        }
        printf("\n"); // 每完成一行后换行
    }

    return 0;
}

这段代码中,intToBaseString函数现在支持将整数转换为62进制的字符串表示。在转换过程中,我们检查digit的值,如果它小于10,我们使用'0' + digit来获取对应的字符;如果digit在10到35之间,我们使用'A' + digit - 10来获取对应的字符(A表示10,Z表示35);如果digit在36到61之间,我们使用'a' + digit - 36来获取对应的字符(a表示36,z表示61)。

main函数中,我们使用两个嵌套的for循环来遍历从0到61的整数,并使用intToBaseString函数将这些整数转换为62进制的字符串,然后输出它们的和。每完成一行后,我们使用printf("\n")来换行,以便生成一个清晰的62进制加法口诀表。

正确例题 #include <stdio.h> #include <stdlib.h> #include <string.h>

// 函数用于将整数转换为指定基数的字符串表示 char* intToBaseString(int num, int base) { static char buffer[65]; // 静态数组用于存储转换后的字符串 int i = 0; int isNegative = 0;

// 处理负数
if (num < 0) {
    isNegative = 1;
    num = -num;
}

// 转换为字符串
do {
    int digit = num % base;
    if (digit < 10) {
        buffer[i++] = '0' + digit; // 0-9
    } else if (digit < 36) {
        buffer[i++] = 'A' + digit - 10; // A-Z
    } else {
        buffer[i++] = 'a' + digit - 36; // a-z
    }
    num /= base;
} while (num > 0);

// 如果是负数,添加负号
if (isNegative) {
    buffer[i++] = '-';
}

// 字符串结束符
buffer[i] = '\0';

// 反转字符串
for (int j = 0; j < i / 2; j++) {
    char temp = buffer[j];
    buffer[j] = buffer[i - j - 1];
    buffer[i - j - 1] = temp;
}

return buffer;

}

int main() { int n, m, o; char r[65], s[65], t[65]; // 为字符串分配足够的空间

// 生成36进制加法口诀表
for (n = 0; n < 36; n++) {
    for (m = 0; m < 36; m++) {
        o = n + m;
        // 调用函数将整数转换为基数为36的字符串
        strcpy(r, intToBaseString(n, 36));
        strcpy(s, intToBaseString(m, 36));
        strcpy(t, intToBaseString(o, 36));
        // 输出结果
        printf("%s+%s=%s\n", r, s, t);
    }
    printf("\n"); // 每完成一行后换行
}

return 0;

}