PC安卓版的c语言简单的7进制计算器程序代码

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

// 将七进制数转换为十进制
int septenaryToDecimal(char *septenary) {
int decimal = 0;
int length = strlen(septenary);
for (int i = 0; i < length; i++) {
int digit = septenary[i] - ‘0’;
if (digit < 0 || digit > 6) {
printf(“输入的不是有效的七进制数!\n”);
return -1;
}
decimal += digit * pow(7, length - i - 1);
}
return decimal;
}

// 将十进制数转换为七进制
void decimalToSeptenary(int decimal, char *septenary) {
int index = 0;
while (decimal > 0) {
septenary[index++] = decimal % 7 + ‘0’;
decimal /= 7;
}
septenary[index] = ‘\0’;
int start = 0, end = index - 1;
while (start < end) {
char temp = septenary[start];
septenary[start] = septenary[end];
septenary[end] = temp;
start++;
end–;
}
}

// 执行加法
void add(char *num1, char *num2, char *result) {
int decimal1 = septenaryToDecimal(num1);
int decimal2 = septenaryToDecimal(num2);
if (decimal1 == -1 || decimal2 == -1) {
return;
}
int sum = decimal1 + decimal2;
decimalToSeptenary(sum, result);
}

// 执行减法
void subtract(char *num1, char *num2, char *result) {
int decimal1 = septenaryToDecimal(num1);
int decimal2 = septenaryToDecimal(num2);
if (decimal1 == -1 || decimal2 == -1) {
return;
}
int difference = decimal1 - decimal2;
if (difference < 0) {
printf(“结果为负数,不支持!\n”);
return;
}
decimalToSeptenary(difference, result);
}

// 执行乘法
void multiply(char *num1, char *num2, char *result) {
int decimal1 = septenaryToDecimal(num1);
int decimal2 = septenaryToDecimal(num2);
if (decimal1 == -1 || decimal2 == -1) {
return;
}
int product = decimal1 * decimal2;
decimalToSeptenary(product, result);
}

// 执行除法
void divide(char *num1, char *num2, char *result) {
int decimal1 = septenaryToDecimal(num1);
int decimal2 = septenaryToDecimal(num2);
if (decimal1 == -1 || decimal2 == -1) {
return;
}
if (decimal2 == 0) {
printf(“除数不能为 0!\n”);
return;
}
int quotient = decimal1 / decimal2;
decimalToSeptenary(quotient, result);
}

// 计算平方根
void squareRoot(char *num, char *result) {
int decimal = septenaryToDecimal(num);
if (decimal == -1) {
return;
}
if (decimal < 0) {
printf(“不能计算负数的平方根!\n”);
return;
}
double root = sqrt(decimal);
decimalToSeptenary((int)root, result);
}

// 计算幂运算
void power(char *num, int exponent, char *result) {
int decimal = septenaryToDecimal(num);
if (decimal == -1) {
return;
}
int powerResult = (int)pow(decimal, exponent);
decimalToSeptenary(powerResult, result);
}

// 计算阶乘
void factorial(char *num, char *result) {
int decimal = septenaryToDecimal(num);
if (decimal == -1) {
return;
}
if (decimal < 0) {
printf(“负数没有阶乘!\n”);
return;
}
int fact = 1;
for (int i = 1; i <= decimal; i++) {
fact *= i;
}
decimalToSeptenary(fact, result);
}

int main() {
int choice;
char num1[50], num2[50], result[50];

do {
    printf("1. 加法\n");
    printf("2. 减法\n");
    printf("3. 乘法\n");
    printf("4. 除法\n");
    printf("5. 平方根\n");
    printf("6. 幂运算\n");
    printf("7. 阶乘\n");
    printf("8. 继续\n");
    printf("9. 退出\n");
    printf("请选择: ");
    scanf("%d", &choice);

    switch (choice) {
        case 1:
            printf("请输入第一个七进制数: ");
            scanf("%s", num1);
            printf("请输入第二个七进制数: ");
            scanf("%s", num2);
            add(num1, num2, result);
            printf("结果: %s\n", result);
            break;
        case 2:
            printf("请输入被减数(七进制): ");
            scanf("%s", num1);
            printf("请输入减数(七进制): ");
            scanf("%s", num2);
            subtract(num1, num2, result);
            printf("结果: %s\n", result);
            break;
        case 3:
            printf("请输入第一个七进制数: ");
            scanf("%s", num1);
            printf("请输入第二个七进制数: ");
            scanf("%s", num2);
            multiply(num1, num2, result);
            printf("结果: %s\n", result);
            break;
        case 4:
            printf("请输入被除数(七进制): ");
            scanf("%s", num1);
            printf("请输入除数(七进制): ");
            scanf("%s", num2);
            divide(num1, num2, result);
            printf("结果: %s\n", result);
            break;
        case 5:
            printf("请输入要计算平方根的七进制数: ");
            scanf("%s", num1);
            squareRoot(num1, result);
            printf("结果: %s\n", result);
            break;
        case 6:
            printf("请输入底数(七进制): ");
            scanf("%s", num1);
            int exponent;
            printf("请输入指数: ");
            scanf("%d", &exponent);
            power(num1, exponent, result);
            printf("结果: %s\n", result);
            break;
        case 7:
            printf("请输入要求阶乘的七进制数: ");
            scanf("%s", num1);
            factorial(num1, result);
            printf("结果: %s\n", result);
            break;
        case 8:
            printf("继续进行其他操作...\n");
            break;
        case 9:
            printf("退出系统!\n");
            break;
        default:
            printf("无效的选择,请重新输入!\n");
    }
} while (choice!= 9);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易软科技(河源)有限公司

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值