【问题标题】:Asking a user to input their name and outputting their initials in C要求用户输入他们的名字并在 C 中输出他们的首字母
【发布时间】:2017-09-02 04:21:29
【问题描述】:

我只是想通过承认我是编码的初学者来开始这件事,而且这不是我凭直觉就能想到的。

我要做的是编写一个简单的程序,让用户输入他们的全名,并输出他们的首字母缩写。我试图遵循的逻辑是,由于 C 中的字符串只是数组中的字符,因此应该是首字母的字符将出现在 '\0' 值之后。

我不确定我的问题是逻辑问题还是将逻辑转换为有效语法,因此我们将不胜感激。

这是完整的代码:

# include <stdio.h>
#include <cs50.h>
#include <string.h>

int main (void)
{

printf ("Please insert your name. \n");
string name = get_string();
//printf ("Your name is %s\n", name);
int x = 0;
char c = name [x];
while (c != '\0')
    {
        x++;
    }
    printf ("%c/n", c);

}

我知道这完全是一团糟,但我再次试图弄清楚是否最好退出,所以任何帮助都将不胜感激。

提前致谢。

【问题讨论】:

  • 嘿,欢迎!请不要放弃——我知道一开始可能会非常困难,但最终你会明白的。看起来你在这里有了一个好的开始。继续加油!
  • "因为 C 中的字符串只是数组中的字符" 对。但是您想要的首字母很可能是 first 字符。 (在我的名字"Steve"作为C字符串中,第一个字符是S'\0'之前的字符是e,我们不能说什么是正确的之后 '\0'.)
  • 为简单起见,我建议将人的名字、姓氏和中间名作为单独的字符串。一旦你开始工作,你就可以尝试从一个字符串中提取全名的首字母。

标签: c cs50


【解决方案1】:

我试图遵循的逻辑是,由于 C 中的字符串只是数组中的字符,因此应该是首字母的字符将出现在 '\0' 值之后。

在 C 中,\0 表示字符串的结尾,因此您绝对不想寻找那个值。

让我们考虑一下逻辑。某人的姓名缩写可能是:

  • 字符串中的第一个字符
  • 空格后的第一个字符

– 即“Albus Percival Wulfric Brian Dumbledore”->“APWBD”–

所以你会想要遍历字符串,寻找:

  • 一个空格,在这种情况下,您需要获取下一个字母,或者
  • 字符串的结尾 ('\0') 在这种情况下您需要停止。

需要注意的边缘情况:

  • 如果字符串为空会怎样?
  • 如果字符串以空格结尾会怎样? (如果您保证获得格式正确的输入,则可能不会发生这种情况)

请不要气馁——我们曾经都是初学者。这种想法并不总是直截了当的,但答案终将到来。祝你好运!

【讨论】:

  • 非常感谢您提供如此有用的答案。很难不气馁,感觉其他人都比我快得多。再次感谢。
猜你喜欢
  • 1970-01-01
  • 2022-05-23
  • 2022-05-23
  • 2021-06-03
  • 1970-01-01
相关资源
最近更新 更多