字符串转换
输入一个全小写的字符串,每个字符字符对应一个下标i(下标从1开始),例如 abc对应的下标分别是1 2 3,需要按照如下规则转换:如果下标i对应的二进制数里 1的个数是奇数,则将i对应的字母转成大写
#include <stdio.h> #include <string.h> #include <ctype.h> // 计算一个整数的二进制表示中1的个数 int count_ones(int n) { int count = 0; while (n) { count += n & 1; // 检查最低位是否为1 n >>= 1; // 右移一位 } return count; } void convert_string(char *str) { int length = strlen(str); for (int i = 0; i < length; i++) { int index = i + 1; // 下标从1开始 int ones = count_ones(index); if (ones % 2 == 1) { // 将小写字母转换为大写 str[i] = toupper(str[i]); //str[i] = str[i] -'a' + 'A'; } // 否则保持原样 } } int main() { char input[100]; printf("请输入全小写字符串: "); scanf("%s", input); convert_string(input); printf("转换结果: %s\n", input); return 0; }