【问题标题】:Alternate letters in upper case大写替代字母
【发布时间】:2021-07-30 21:59:18
【问题描述】:

因为下面的代码应该将给定的字符串转换为可选的大写或小写。字符串 S(仅限字母)作为输入传递。打印输出应包含每个单词中奇数位置的大写字母和偶数位置的小写字母。

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char str[100];
int i;
scanf("%s",str);
for(i=0;str[i]!='\0';i++){
if((i%2)==1)
str[i]=tolower(str[i]);
else
str[i]=toupper(str[i]);
}
printf("%s",str);
return 0;
}

输入将是tREE GiVES us fruiTS ,预期输出应该是TrEe GiVeS Us FrUiTs 但我得到的只是第一个字符串TrEe我应该怎么做才能得到完整的字符串

【问题讨论】:

  • 这是 C++ 问题还是 C 问题?这一切看起来都像 C 代码,这意味着 C++ 标记是不必要的。
  • %s 只读取一个单词。使用 getline。
  • 即使 c++ 用户也可以回答这个问题。所以我放置了那个标签
  • C++ 用户可以访问 C 程序员无法访问的功能。如果你是用 C 语言做的,那么 C++ 的答案可能不起作用。

标签: c++ c string


【解决方案1】:

scanf("%s, str) 读入一个字符串,直到第一个空白字符。因此,当您输入“tree give us fruits”时,它会读入“tree”,然后看到空格并停止。

尝试改用fgets(str, 100, stdin)

https://www.cplusplus.com/reference/cstdio/fgets/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    相关资源
    最近更新 更多