gpt4 book ai didi

c++ - 查找空格和换行符数量的程序

转载 作者:太空宇宙 更新时间:2023-11-04 11:36:03 38 4
gpt4 key购买 nike

如何在 C++ 中编程查找空格和换行符的数量??到目前为止我所拥有的......

#include <iostream.h>
#include <string.h>

int main()
{
int i;
int w = 0;
char a[] = {' ', '\n'};
char x[30],z[30];

for (int i = 0 ; i <= 30;i++)
cin >> x[i];

for (int j = 0 ; j < 30; j++) {
for (int k = 0 ; k < 2; k++) {
x[j] == a[k];
if (x[j] == ' ')
w++;
}
}

cout << w << endl;
system("pause");
return 0;
}

最佳答案

这是一个展示基本算法的例子。正如其他人评论的那样,有更简单有效的方法。

int main(void)
{
char c;
unsigned int space_quantity = 0;
unsigned int newline_quantity = 0;
while (cin >> c) // Read in the character.
{
switch (c)
{
case ' ': // Check for space.
++space_quantity;
break;

case '\n': // Check for newline.
++newlines;
break;

default: // Don't do anything for other characters.
break;
}
}
cout << "Spaces: " << space_quantity << '\n';
cout << "Newlines: " << newline_quantity << '\n';
return EXIT_SUCCESS;
}

在上面的程序中,我使用了 switch 而不是 if-else-if 因为我认为它看起来更具可读性。您可能还没有了解 switch 语句,因此您可以使用多个 if 语句来检查字符。同样的意图;也许相同的可执行代码和性能。

编辑 1:使用数组
通过在每个输入请求中读取多个字符,数组可以提高 I/O 的性能。在内存中搜索比从输入源(而不是内存作为输入源)读取要快得多。

如果您必须使用数组,这里有一个使用数组的例子。由于用户响应缓慢,通常数组不与 cin 一起使用。

#define ARRAY_CAPACITY 128

int main(void)
{
char c;
unsigned int space_quantity = 0;
unsigned int newline_quantity = 0;
char buffer[ARRAY_CAPACITY];
while (cin.read(buffer, ARRAY_CAPACITY))
{
// Need to get the number of characters
// actually read into the buffer.
const unsigned int characters_read = cin.gcount();

// Process each character from the buffer.
for (unsigned int i = 0; i < characters_read; ++i)
{
switch (c)
{
case ' ': // Check for space.
++space_quantity;
break;

case '\n': // Check for newline.
++newlines;
break;

default: // Don't do anything for other characters.
break;
} // End: switch
} // End: for
} // End: while
cout << "Spaces: " << space_quantity << '\n';
cout << "Newlines: " << newline_quantity << '\n';
return EXIT_SUCCESS;
}

关于c++ - 查找空格和换行符数量的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23032475/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com