注册 登录
编程论坛 C语言论坛

C语言输入字符串求有几个单词各位大佬帮忙看看哪里出错了总少一个

青灯古佛 发布于 2020-12-08 23:13, 1183 次点击
程序代码:
#include"stdio.h"
#define N 100
main()
{
    char a[N];
    int i,um=0;
    gets(a);
    while(ch!'\n')
    {for(i=0;i<=N;i++)
    if(a[i]!=' '&&a[i+1]==' '||a[i]!=' '&&a[i+1]=='\n')
    {um++;}
    printf("um=%d",um);}
}
2 回复
#2
风过无痕19892020-12-09 00:42
回复 楼主 青灯古佛
程序代码:

#include<stdio.h>    // stdio.h 是系统自带的头函数,要用尖括号,自定义的的头函数才用双引号
#define N 100
int main()
{
    char a[N];
    int i, num = 0;
    gets_s(a);
    for (i = 0;i <= N;i++)
    {
        if (a[i] == ' ' || a[i] == '\0') // 输入完成后,系统会自动补0作为结束符,而不是被换行符作为结束符
        {
            num++;
        }
    }
    printf("num = %d\n", num);
}
#3
rjsp2020-12-09 09:56
main()
gets(a);
估计你用的也不是什么正儿八经的编译器了

认认真真完成作业,可以
程序代码:
#include <stdio.h>
#include <stdbool.h>

int main( void )
{
    size_t count = 0;

    bool flag = false; // 记录 前一个字符 是否为单词组成
    for( char buf[81]; fgets(buf,sizeof(buf),stdin); ) // 这个缓冲区大小81可改为任意大于1的值
    {
        for( const char* p=buf; *p!='\0'; ++p )
        {
            if( *p=='\n' )
            {
                printf( "%zu\n", count );
                return 0;
            }
            if( *p=='\t' || *p==' ' )
            {
                flag = false;
            }
            else
            {
                count += !flag;
                flag = true;
            }
        }
    }

    return 0;
}


想偷懒,可以
程序代码:
#include <stdio.h>

int main( void )
{
    size_t count = 0;
    for( ; ; )
    {
        scanf( "%*[\t ]" );
        int ch = getchar();
        if( ch == '\n' )
            break;
        ungetc( ch, stdin );
        scanf( "%*s" );
        ++count;
    }
    printf( "x = %zu\n", count );
}
1