使用C将字符串中的每个其他字母字符更改为大写

时间:2013-03-19 02:23:44

标签: c for-loop toupper

有人会用我编写的以下代码引导我朝正确的方向前进。基本上我试图让字符串中的每个其他字符都用大写字母打印,同时不考虑空格或其他非字母字符。

示例:字符串输入=“感谢添加”应该打印为“ThAnKs FoR tHe AdD”

int main (void) 
{
    char* input = GetString();
    if (input == NULL)
        return 1;
    for (int i = 0, x = strlen(input); i < x; i+=2)
        input [i] = toupper(input[i]);
    printf("%s\n", input);
    return 0;
}

注意:我是计算机科学的新手,目前正在通过edx.org使用CS50x

2 个答案:

答案 0 :(得分:1)

只需使用isalpha忽略其他类型的字符:

#include <string.h>
#include <stdio.h>
#include <ctype.h>
int main (void) 
{
    char input[] = "thanks for the add";
    int  alpha_count = 0;
    for (int i = 0, x = strlen(input); i < x; i++) {
      if (isalpha(input[i])) {
        if (alpha_count++ % 2 == 0 ) 
          input [i] = toupper(input[i]);
      }   
    }   
    printf("%s\n", input);
    return 0;
}

答案 1 :(得分:-1)

#include <iostream>
using namespace std;

int main()
{
    char st[] = "thanks for the add";
    for(int i=0; i<strlen(st); i++)
        st[i++]=toupper(st[i]);
    cout<<st<<endl;
}