【发布时间】:2012-01-26 11:21:26
【问题描述】:
我对语言 (C) 有点陌生,但我想做的是非常简单的 imo。我确定我只是忽略了某些事情或遇到了一些逻辑错误。
正如标题所示,我希望我的程序做的只是计算小写字母、大写字母和空格的数量。作为附加功能,它还将输入的小写字母转换为大写。
#include <stdio.h>
int main(void){
int iochar, numdigits=0, numlower=0, numupper=0, numwhites=0;
printf("Please enter a phrase:\n\n");
while((iochar=getchar())!=EOF) {
if ((iochar=' ')||(iochar='\t')||(iochar='\n')){
numwhites++;
putchar(iochar);
}
else if((iochar>='0')&&(iochar<='9')) {
numdigits++;
putchar(iochar);
}
else if(('a'<=iochar)&&(iochar<='z')) {
numlower++;
putchar(iochar-32);
}
else if(('A'<=iochar)&&(iochar<='Z')) {
numupper++;
putchar(iochar);
}
else
putchar(iochar);
}
printf("%d white characters, %d digits, ",numwhites,numdigits);
printf("%d lowercase have been converted to ",numlower);
printf("uppercase and %d uppercase.\n",numupper);
printf("\n\n");
return 0;
}
【问题讨论】:
-
好。问题是什么?
-
如果您在编码时错过区分 = 和 == ,请在比较时保持左侧的常量。例如如果 (' ' == iochar) 。这样可以避免犯错。
-
@yadab:当比较的两边都是左值时如何避免错误?
-
@SteveJessop:我不知道!但这是用于将常量与左值进行比较。
标签: c counter uppercase lowercase