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的每个整数的立方和。最后,它返回这个和。在主函数中,我们调用这个函数并打印结果。