【发布时间】:2017-06-01 23:52:44
【问题描述】:
我写的程序如下
#include<stdio.h>
int main() {
double nl=0,nb=0,nt=0;
int c;
while((c=getchar())!=EOF) {
if(c == '\n') nl++;
if(c == ' ') nb++;
if(c == '\t') nt++;
}
printf("lines = %f, blanks= %f, tabs=%f ",nl,nb,nt);
return 0;
}
输入:
h a i
i am krishna
输出:
lines = 1.000000, blanks= 8.000000, tabs=0.000000
在输入中,我给出了两个选项卡(一个在h 之后的第一行,另一个在i 之后的第二行),每个选项卡通常包含 3 个空格。如果我们观察输出,它会显示 1 个新行(正确)、8 个空白(不正确,必须为 2)和 0 个制表符(错误,必须为 2)。
哪里出错了?为什么制表符算3个空格?
【问题讨论】:
-
你为什么用
double而不是整数类型 -
输出表明你确实放了空格而不是制表符,也许检查你的程序
-
可能是因为您的选项卡已经扩展为输入中的空格
-
我推荐使用
else if -
使用
double只是意味着一旦范围达到某个点(小于 UINT64_MAX),您就会得到虚假结果
标签: c