c如何编写一个程序,计算句子中有多少单词而不使用字符串

时间:2016-02-25 02:28:59

标签: c

所以我试图编写这个程序,但我不能使用字符串,必须使用getchar函数。这是我到目前为止,但它没有工作,但它编译。当我运行它时,它不会返回正确的单词。我也试过把单词+ = 1,但这也没有帮助。

#include <stdio.h>



int main()
{
char ch;
int words = 1 ;

    printf("Enter a sentence ended by a '.', a '?' or a '!': ");
     ch = getchar();
     while (getchar() !='\n');      
{

    if (ch == ' ')  
    words++;

}
    printf("Total number of words:%d\n", words);


   return 0;
  }

3 个答案:

答案 0 :(得分:0)

假设句子写得正确,一个简单的方法就是计算空格数并为其加1:

<form class="beneEnroll" name="enrollForm" novalidate ng-model="electionData">
    <table class="table">
        <thead>
            <tr>
                <th></th>
                <th></th>
                <th>your plan year election</th>
                <th>pay check deduction amount</th>
                <th>NaviCard (no cost)</th>
                <th></th>
            </tr>
        </thead>
        <tbody ng-repeat="benefit in oe.oeBenefits">
            <tr>
                <td><input type="checkbox" name="beneElect" data-ng-value="false" ng-model="electInfo.deleted"></td>
                <td>{{ benefit.benefitName }}</td>
                <td><input type="number" name="amount" class="form-control" id="claimAmount" data-ng-model="electInfo.annualElection" ng-required="true" navia-min="0.01" navia-max="10000" ng-pattern="/^\d*(\.\d{0,2})?$/"></td>
                <td>{{benefit.numberOfContributions}}</td>
                <td><input type="checkbox" name="beneElect" data-ng-value="false" ng-model="electInfo.isDebitCard"></td>
            </tr>
        </tbody>
    </table>
</form>

答案 1 :(得分:0)

更改

while (getchar() !='\n'); 

while (getchar() !='\n')

请注意删除分号。使用分号,循环不会执行循环括号中给出的指令。

如果您希望下次轻松解决所有这些问题,请使用编译器的标志并启用完整警告。

如果您使用的是gcc,请使用标记-Wall-Wextra-Wall会给你额外的警告,包括一个你的愚蠢错误。 -Wextra会使您遇到的所有警告都出错,确保您注意它们。

答案 2 :(得分:-1)

ch = getchar();需要在while循环中。否则,ch永远不会更新。另外,不要忘记if语句的括号。并改变getchar()!=&#39; \ n&#39;在while循环中ch!=&#39; \ n&#39;