求值!!!统计输入数字,空白符以及其他字符的值
#include <stdio.h>void main()//统计输入数字,空白符和其他符号
{
int i,num={0},blank=0,others=0;
char c;
while(c=getchar()!=EOF)
{
if(c>='0'&&c<='9')
{
++num;
}
else
{
if(c==' '||c=='\n'||c=='\t')
{
++blank;
}
else
{
++others;
}
}
}
for(i=0;i<=9;i++)
{
printf("数字%d有%d个\n",i,num);
}
printf("blank有%d个\n",blank);
printf("others有%d个\n",others);
} 不知道哪里错了,又没有大佬指教一下谢谢了 在while循环的条件地方,我改了下,你看看
#include <stdio.h>
void main()//统计输入数字,空白符和其他符号
{
int i,num={0},blank=0,others=0;
char c;
while((c=getchar())!='\n')
{
if(c>='0'&&c<='9')
{
i=c-'0';
num++;
}
else
{
if(c==' '||c=='\n'||c=='\t')
{
blank++;
}
else
{
others++;
}
}
}
for(i=0;i<=9;i++)
{
printf("数字%d有%d个\n",i,num);
}
printf("blank有%d个\n",blank);
printf("others有%d个\n",others);
} 首先,!= 元素符的优先级是高于等号运算符的,所以while循环的条件表达式应该修改成
while((c=getchar())!= EOF)。
其次, EOF这个字符你在键盘怎么输入?EOF一般是针对文件读取的,判断文件结束的。键盘输入一般以回车结束。所以呢,这一句应该改成:
while((c=getchar())!= '\n');
要用while((c=getchar())!=EOF) 的话要用CTRL+Z结束输入,否则不会结束
本帖最后由 jackz007 于 2020-3-2 02:14 编辑
#include <stdio.h>
main(void)
{
char c , num ;
int i , blank , digit , other ;
for(blank = 0 , digit = 0 , other = 0 ; (c = getchar()) != EOF ;) {
if(c >= '0' && c <= '9') num = c ;
else if(c == '\t' || c == '\n' || c == ' ') blank ++ ;
else other ++ ;
}
printf("数字有%d个\n" , digit) ;
for(i = 0 ; i < digit ; i ++) printf("\t%c\n" , num) ;
printf("blank有 %d 个\n" , blank) ;
printf("其他字符有 %d 个\n" , other) ;
printf("\n") ;
}
编译、运行实况:
C:\Bin>g++ -o x x.c
C:\Bin>x
#include <stdio.h>
main(void)
{
char c , num ;
int i , blank , digit , other ;
for(blank = 0 , digit = 0 , other = 0 ; (c = getchar()) != EOF ;) {
if(c >= '0' && c <= '9') num = c ;
else if(c == '\t' || c == '\n' || c == ' ') blank ++ ;
else other ++ ;
}
printf("数字有%d个\n" , digit) ;
for(i = 0 ; i < digit ; i ++) printf("\t%c\n" , num) ;
printf("blank有 %d 个\n" , blank) ;
printf("其他字符有 %d 个\n" , other) ;
printf("\n") ;
}
^Z
数字有9个
2
5
6
0
0
0
0
9
0
blank有 480 个
其他字符有 341 个
C:\Bin> 小笨笨难得糊涂 发表于 2020-3-2 00:45
在while循环的条件地方,我改了下,你看看
#include
谢谢!就是因为循环判断哪里没有处理好 major_lyu 发表于 2020-3-2 00:50
首先,!= 元素符的优先级是高于等号运算符的,所以while循环的条件表达式应该修改成
其次, EOF这个字符 ...
谢谢你 学到了很多细节 小笨笨难得糊涂 发表于 2020-3-2 00:51
要用while((c=getchar())!=EOF) 的话要用CTRL+Z结束输入,否则不会结束
谢谢你。我还想请问一下,我输入 CTRL+Z回车 再输入CTRL+Z才会有结果 为啥啊? jackz007 发表于 2020-3-2 02:02
编译、运行实况:
谢谢但是就是结果好乱 {:5_104:} 补充下看法,这个函数头文件没有#include <conio.h>,_getch()运行会受影响吧。 我也是这题完全没懂 在调用函数的时候编译器一直报错
页:
[1]