创建一个程序,其中句子在C++中全部大写,全部小写
Creating a program where a sentence is turned all caps and all lowercase in C++
我正在尝试创建一个程序C++它将把你输入的任何句子变成
-全部大写
-全部小写
-大写字母将以小写形式切换,反之亦然
到目前为止,我已经正确地写好了所有内容,我唯一无法弄清楚的部分是如何让它给我三个单独的回复。如果我在 while 循环中只有一个函数,它可以正常工作,但不能同时使用所有三个函数,我不知道如何解决这个问题。谢谢!
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
void allCaps(char ch);
void allLows(char ch);
void mixed(char ch);
char ch;
int main()
{
printf("Enter Sentence:n");
while((ch=getchar()) != 'n')
{
allCaps(ch);
printf("%c",ch,"n");
allLows(ch);
printf("%c",ch,"n");
mixed(ch);
printf("%c",ch,"n");
}
return ch;
}
void allCaps(char ch)
{
if(ch >= 'a' && ch <='z')
::ch=ch-32;
}
void allLows(char ch)
{
if(ch>='A'&&ch<='Z')
::ch=ch+32;
}
void mixed(char ch)
{
if(ch >= 'a' && ch <='z')
::ch=ch-32;
else if(ch>='A'&&ch<='Z')
::ch=ch+32;
}
除了您可以使用io-streams,tolower
和toupper
,引用和其他C ++特定功能之外,您的主要问题是全局变量ch
。
考虑一下如果输入字符'A'
会发生什么。allCaps()
将获取大写字母"A"作为输入,将其转换为(仍然)大写字母"A"并将结果存储在全局变量ch
中。这个ch
(现在(或仍然)包含'A'
)现在将被传递给allLows()
,现在再次将大写'A'
转换为小写'a'
并将结果再次存储在您的全局ch
中。有趣的部分来了。还记得您最初输入了大写字母'A'
所以mixed()
应该生成一个小写字母吗?但是由于allLows()
已经将您的输入转换为小写字母,mixed()
现在将再次生成大写字母。
您可以通过不全局声明ch
并改为使函数返回结果来解决此问题。 例如,查看新allCaps()
char allCaps(char ch)
{
if(ch >= 'a' && ch <='z')
return ch - 32;
return ch;
}
并像这样使用它
int main()
{
printf("Enter Sentence:n");
char ch; // <-- local declaration
while((ch=getchar()) != 'n')
{
printf("%cn", allCaps(ch)); <-- all get the same (not modified) input
printf("%cn", allLows(ch));
printf("%cn", mixed(ch));
}
}
但是,这仍然不会完全按照您想要的方式进行。例如std::getline
,不是读取单个字符,而是读取整个std::string
,然后循环每个字符并使用tolower
和toupper
进行转换
您正在做的是在阅读每个字母时连续输出 3 次。
与其这样做,不如定义例如三个字符串,如下所示:std::string s1="",s2="",s3="";
然后你可以做
s1+=allCaps(ch);s2+=allLows(ch);s3+= mixed(ch);
在你的 while 循环中,最后你只需输出s1
、s2
和s3
。
- 如何删除peer if else分支中的冗长句子
- 在输入句子时终止 std::out_of_range
- 使用 C++ 验证 NMEA 句子
- 分析包含 NMEA 句子的日志文件C++
- Vscode/C++ - cout 无法输出完整的句子,也无法与整数连接
- 如何理解句子的生命周期始于对e的评估
- 该程序将.csv文件中的一系列单词放入数组中,然后随机生成句子.但它不起作用
- 全部转换为大写
- 捕获全部处理程序检测C++中的子类异常
- 句柄OK全部崩溃
- C++从句子中删除给定字符的程序不起作用
- 用C++替换std::字符串中的一个子字符串,但不能全部替换
- 使用通知全部进行多次等待
- 如何让正则表达式匹配句子中间?
- C++ 仅读取输入文件中的部分(不是全部)数据以添加到记录中
- 如何获取句子中单词的第一个字母*没有*指针,引用等
- 为什么函数的返回类型与实际句子不一致?
- C++ 如何将参数绑定到具有相同返回类型的函数,并将它们全部存储在一个容器中
- 如何将时间和日期转换为 C 或 C++ 的句子格式?
- 创建一个程序,其中句子在C++中全部大写,全部小写