所以我试图编写这个程序,但我不能使用字符串,必须使用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;
}
答案 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;