字符串转换

输入一个全小写的字符串,每个字符字符对应一个下标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;
}

全部评论

相关推荐

牛客40297450...:不是研究生强,是你强
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务