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的每個整數的立方和。最后,它返回這個和。在主函數中,我們調用這個函數并打印結果。