微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C 程序计算给定字符串中字母“C”的出现次数

如何解决C 程序计算给定字符串中字母“C”的出现次数

我的程序需要帮助。抱歉,我的代码一团糟。任何帮助表示赞赏:)

解决方法

提示:当用户输入一个字符串时,您不需要将整个输入作为单个字符串处理。充分利用这一点

#include <stdio.h>
int main(void) {
    puts("Enter text:");
    unsigned cs = 0;
    for (;;) {
        int ch = getchar();
        if (ch == EOF) break;
        if ((ch == 'c') || (ch == 'C')) cs++;
    }
    printf("The letter 'C' appears %u times.\n",cs);
}
,
#include <string.h>
#include <stdio.h>

int main() {
  char string[50];
  memset(string,50);
  int cCount = 0;

  printf("Enter a string:\n");
  fgets(string,sizeof(string),stdin);

  for (int i = 0; i < strlen(string); i++) {
    if (string[i] == 'C' || string[i] == 'c')
      cCount++;
  }

  if (cCount == 0)
    printf("There is no C's in the string.\n");
  else
    printf("There are %d C's in the string.\n",cCount);
  return 0;
}
,

您的帖子中缺少 include <stdio.h>。而您的 main 签名是错误的。

while 用户输入一个字符串

如果要在用户输入零长度字符串之前处理分配,则以下应该有效。但请记住,如果用户输入 50 个字符的字符串,它可能不会执行您想要的操作,在这种情况下,代码将看到 while 循环的两次迭代:其中 string 具有 50 个字符,而第二个字符串有一个换行符。如果您使用较小的数组进行测试,则更容易看到 fgets 的行为。

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

int main (int argc,char *argv[] ) {
    while (1) {
        char string[50];
        int cCount = 0;

        printf("Enter a string:\n");
        fgets(string,stdin);

        if (strlen(string) == 0 || (strlen(string) == 1 && string[0] == '\n') )
           break;

        for (int i = 0; i < strlen(string); i++) {

                if (string[i] == 'C') {
                        cCount++;
                }
                if (string[i] == 'c') {
                        cCount++;
                }
        }

        if (cCount)
           printf("There are %d C's in the string",cCount);
        else
           printf("There are no C's in the string.");
    }

    return 0;
}

但是,如果教师的语法不准确并且教师的意思是“if”而不是“while”,那么作业会更容易,并且不容易出现由 fgets 的行为引起的问题。

,

请注意,您忘记包含标题 <stdio.h>

编译器应该为此语句发出错误

if (string[i] != 'C' && string[i] != 'c') {

因为变量 i 未在此范围内声明。它的作用域以声明它的 for 循环的结尾结束

    for (int i = 0; i < strlen(string); i++) {

            if (string[i] == 'C') {
                    cCount++;
            }
            if (string[i] == 'c') {
                    cCount++;
            }
    }

如果编译器没有发出错误,那么您似乎使用的是一个非常旧的编译器。

无论如何,上面的 if 语句没有意义。

作业中没有写到输入字符串的长度应少于 50 个字符。

char string[50];

要计算在用户输入中遇到字母 'c' 的次数,无需声明字符数组。

程序可以如下所示

#include <stdio.h>

int main(void) 
{
    char lower_case_c = 'c',upper_case_c = 'C';
    
    printf( "Enter an arbitrary text. Press Enter to finish: " );
    
    size_t count = 0;
    
    for ( int c; ( c = getchar() ) != EOF && c != '\n'; )
    {
        if ( c == lower_case_c || c == upper_case_c ) ++count;
    }
    
    if ( count == 0 )
    {
        printf( "There are neithr '%c' nor '%c' in the text.\n",lower_case_c,upper_case_c );
    }
    else
    {
        printf( "The letters '%c' and '%c' are encountered %zu times in the text.\n",upper_case_c,count );
    }
    
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。