我正在尝试一个根据以下规则翻译用户输入的程序:
- 如果字符是字母,则必须大写打印。
- 如果字符是数字 (0-9),则必须打印星号 (*)。
- 如果字符是双引号 ("),则必须打印单引号 (')。
- 如果字符是反斜杠“\”,则跳过(不打印)并打印下一个字符而不做任何修改。
- 否则,字符按原样打印。
MyCode
#include <stdio.h>
void lowertoupper(char lower)
{
char upper;
if(lower >= 'a' && lower <= 'z'){
upper = ('A' + lower - 'a');
}
else{
upper = lower;
}
printf("%c",upper);
}
int main(void) {
char chara;
printf("please enter");
while(scanf(" %c", &chara)!= EOF) {
if ((chara>='a' && chara<='z')||(chara>='A' && chara<='Z'))
{
lowertoupper(chara);
}
else if (chara>=0 && chara<=9)
{
printf("*");
}
else if (chara=='"')
{
printf("'");
}
else if (chara=="\\")
{
}
else {
printf("%c",chara);
}
}
}
我的问题
- 这并不像预期的那样。我在这里缺少什么条件。
- 如何在不使用任何内置函数的情况下满足条件 4。
最佳答案
int noChange = 0; /* Added */
while(scanf(" %c", &chara) == 1) { /* Modified */
if(noChange == 1) { /* Added */
printf("%c",chara); /* Added */
noChange = 0; /* Added */
} /* Added */
else if ((chara>='a' && chara<='z')||(chara>='A' && chara<='Z')) /* Modified */
{
lowertoupper(chara);
}
else if (chara >= '0' && chara <= '9') /* Modified */
{
printf("*");
}
else if (chara=='"')
{
printf("'");
}
else if (chara=='\\') /* Modified */
{
noChange = 1; /* Added */
}
else {
printf("%c",chara);
}
}
关于c - 在 C 错误中翻译用户输入程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28759798/