0
点赞
收藏
分享

微信扫一扫

IntelliJ IDEA安装

爪哇驿站 2023-12-09 阅读 48

1,写一个函数,实现数字的加密和解密。

下面是一个简单的C语言函数,可以实现数字的加密和解密。这个函数采用简单的加密算法,将输入的数字乘以一个固定的密钥,然后加上一个固定的偏移量。解密过程就是将加密后的数字减去偏移量,然后再除以密钥。

#include <stdio.h>  
  
// 加密函数  
int encrypt(int num, int key, int offset) {  
    return (num * key) + offset;  
}  
  
// 解密函数  
int decrypt(int encrypted_num, int key, int offset) {  
    return (encrypted_num - offset) / key;  
}  
  
int main() {  
    int num = 12345;  
    int key = 7;  
    int offset = 100;  
  
    // 加密数字  
    int encrypted_num = encrypt(num, key, offset);  
    printf("加密后的数字为:%d\n", encrypted_num);  
  
    // 解密数字  
    int decrypted_num = decrypt(encrypted_num, key, offset);  
    printf("解密后的数字为:%d\n", decrypted_num);  
  
    return 0;  
}

在上面的代码中,encrypt()函数将输入的数字乘以密钥并加上偏移量,然后返回加密后的数字。decrypt()函数将加密后的数字减去偏移量,然后除以密钥,返回解密后的数字。在main()函数中,我们定义了一个输入的数字、一个密钥和一个偏移量,然后使用这些参数调用encrypt()decrypt()函数来加密和解密数字。

2,写一个函数,将一个字符串转换为整数。

在C语言中,可以使用库函数 atoi() 来将字符串转换为整数,前前面好像有一篇写过这个功能,但用的是库函数,这里不用。不过下面的代码不用库函数实现这个功能:

#include <stdio.h>  
#include <stdlib.h> // for NULL  
  
int string_to_int(char* str) {  
    int result = 0;  
    int sign = 1;  
  
    // Handle negative numbers  
    if (*str == '-') {  
        sign = -1;  
        str++;  
    }  
  
    // Convert each character to an integer  
    while (*str != '\0') {  
        char c = *str - '0';  
        if (c < 0 || c > 9) {  
            // If the character is not a digit, return 0  
            return 0;  
        }  
        result = result * 10 + c;  
        str++;  
    }  
  
    // Apply the sign  
    return sign * result;  
}  
  
int main() {  
    char str[] = "-123";  
    int num = string_to_int(str);  
    printf("%d\n", num); // Outputs: -123  
    return 0;  
}

        这个函数首先检查字符串的第一个字符是否为负号,然后遍历字符串的每一个字符,将其转换为对应的数字,并累加到结果中。最后,根据符号将结果返回。如果字符串中包含非数字的字符,函数将返回0。

3,写一个函数,将一个整数转换为字符串。

下面的功能,也是用不同的方式实现。

#include <stdio.h>  
#include <stdlib.h>  
  
char* int_to_str(int num) {  
    int i = 0;  
    int sign = num < 0 ? -1 : 1;  
    int abs_num = sign * num;  
    char* str = (char*)malloc(32 * sizeof(char));  
    if (str == NULL) {  
        printf("Memory allocation failed.\n");  
        exit(1);  
    }  
    while (abs_num > 0) {  
        int rem = abs_num % 10;  
        str[i++] = '0' + rem;  
        abs_num /= 10;  
    }  
    if (sign < 0) {  
        str[i++] = '-';  
    }  
    str[i] = '\0';  
    int j = i - 1;  
    while (j >= 0 && str[j] == '0') {  
        j--;  
    }  
    if (j < 0) {  
        str[0] = '\0';  
    } else {  
        for (int k = 0; k < j; k++) {  
            str[k] = str[j--];  
        }  
        str[j] = '\0';  
    }  
    return str;  
}

        该函数首先判断输入的整数是否为负数,如果是负数则取其绝对值,否则直接取其绝对值。然后,使用循环将整数转换为字符串,每次取余数并将其转换为字符存储到字符串中,最后将字符串返回。在返回之前,函数会将其符号处理后返回。此外,函数还会对字符串进行优化,删除多余的零。

4,写一个函数,判断一个数字是否为偶数或奇数。

可以写一个函数来判断一个数字是偶数还是奇数。以下是一个简单的示例:

#include <stdio.h>  
  
// 判断数字是偶数还是奇数  
void checkNumber(int num) {  
    if (num % 2 == 0) {  
        printf("%d 是偶数\n", num);  
    } else {  
        printf("%d 是奇数\n", num);  
    }  
}  
  
int main() {  
    int num;  
    printf("请输入一个数字: ");  
    scanf("%d", &num);  
    checkNumber(num);  
    return 0;  
}

        在这个程序中,我们首先定义了一个函数 checkNumber,它接收一个整数作为参数,并使用模数运算符 % 来检查这个数是否可被2整除。如果数字可以被2整除,那么它就是偶数,否则它就是奇数。然后,我们从用户那里获取一个数字,并使用 checkNumber 函数来检查这个数字是偶数还是奇数。

5,写一个函数,求一个立方数的和。

#include <stdio.h>  
  
int sumOfCubes(int n) {  
    int sum = 0;  
    for (int i = 1; i <= n; i++) {  
        sum += i * i * i;  
    }  
    return sum;  
}  
  
int main() {  
    int n = 10;  
    int result = sumOfCubes(n);  
    printf("The sum of cubes from 1 to %d is %d\n", n, result);  
    return 0;  
}

        这个函数使用一个循环来计算从1到给定数字n的每个整数的立方和。最后,它返回这个和。在主函数中,我们调用这个函数并打印结果。

举报

相关推荐

0 条评论