1.从标准输入读取字符并输出,大写字母字符转小写字母字符,其他字符不变
char ToUp(char ch) {
if (ch < 'A' || ch > 'Z') {
return ch;
}
char a = 'a';
return ch + 32;
}
2.从标准输入读取字符并输出,非字母字符直接输出,字母字符输出时加密,加密规则:每个字母被修改为在字母表上距其13个位置(前或后)的字母
char Encryption(char ch) {
if ((ch < 'a' || ch > 'z') && (ch < 'A' || ch > 'Z')) {
return ch;
}
if (ch < ('A' + 13) || (ch >= 'a' && ch < ('a' + 13))) {
return ch + 13;
}
return ch - 13;
}
3.编写函数unsigned int reverse_bit(unsigned int value),实现二进制位逆置
unsigned int reverse_bit(unsigned int value) {
int total_bits = sizeof(unsigned int) * 8;
int val_reverse = 0;
for (int bit = 0; bit < total_bits; ++bit, value /= 2) {
val_reverse = val_reverse * 2 + (value % 2);
}
return val_reverse;
}
4.编写一组函数,实现位数组
void set_bit(char bit_array[], unsigned int bit_number) {
bit_array[bit_number / 8] |= (1 << (bit_number % 8));
}
void clear_bit(char bit_array[], unsigned int bit_number) {
bit_array[bit_number / 8] &= ~(1 << (bit_number % 8));
}
void assign_bit(char bit_array[], unsigned int bit_number, int value) {
if (value) {
set_bit(bit_array, bit_number);
}
else {
clear_bit(bit_array, bit_number);
}
}
int test_bit(char bit_array[], unsigned int bit_number) {
return bit_array[bit_number / 8] == (bit_array[bit_number / 8] | (1 << (bit_number % 8)));
}
5.编写一个函数,把一个给定的值存储到一个整数中指定的几个位
int store_bit_field(int original_value, int value_to_store,
unsigned int starting_bit, unsigned int ending_bit) {
unsigned int mask = 0;
for (int i = ending_bit; i <= starting_bit; ++i) {
mask |= 1 << i;
}
original_value &= ~mask;
value_to_store <<= ending_bit;
value_to_store &= mask;
return original_value | value_to_store;
}