C语言,哪位高手帮我看看下面的一道C语言问题,谢谢。

为什么当我就输按一个回车符时,运行结果为: ???????
lines = 1
words =1
chars =1
从这个运行结果来看,编译器把回车符当做了空格(' ')和制表符 ( '\t' ),请问是这样的吗?????????????????????

#include <stdio.h>
void main()
{

int lines = 0,words = 0,chars = 0 ,ch;
while(1)
{
switch( ch = getchar() )
{
case '\n': lines++;
case ' ': /* fall thru */
case '\t':words += 1;
default:
chars += 1;
}
if(ch == '\n')
{
break;
}
}
printf("lines = %d\n",lines);
printf("words = %d\n",words);
printf("chars = %d\n",chars);
}

//加break可以解决问题!
#include <stdio.h>
void main()
{

int lines = 0,words = 0,chars = 0 ,ch;
while(1)
{
switch( ch = getchar() )
{
case '\n': lines++;break;
case ' ': /* fall thru */
case '\t':words += 1;break;
default:
chars += 1;
}
if(ch == '\n')
{
break;
}
}
printf("lines = %d\n",lines);
printf("words = %d\n",words);
printf("chars = %d\n",chars);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-10
同楼上 我拿经验的

哪位大虾帮我做下面这些C语言的题啊?让我参考,绝非是用来应付作业的!谢...
1、选C。输入输出函数定义在头文件中,源程序开头include<stdio.h>实现调用 A,main函数前有宏定义define、include,用户自己定义的函数等语句。B,一行可以写任意多条语句,但为了增加程序的可读性,一行只写一条。D,编译过程无法发现注释中的拼写错误。2、A 函数是C语言程序的基本单位。3、D ...

哪位大神帮我看一下这道C语言的题
答案为:B 如果语句改成这样:struct S {int g ; char h;} T;,则可以用struct S定义结构体变量,此时的T是声明类型的同时定义了变量,在这种情况下选D 而加上typedef后等于为struct S取了一个新的名字——T,此时T等价于struct S,或者说T是struct S的另一种称呼。所以选B。

c语言:有哪位大侠可以帮我解释一下下面这道题目???
int main() \/\/表示一下内容为主函数 {int prime(int); \/\/这个用途是前置函数声明、因为被调哈数prime是在主函数后面的所以需要函数声明 printf("input an integer:"); \/\/这个作为人机交互、在执行之后输出input an integer具体自己翻译 scanf("%d",&n); \/\/这里作为n变量的取值、功能是手动...

C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因..
第三项结果是一个指针,也就是一个地址。它就是a[2][1]的地址,由于scanf要求是地址,所以它是正确的。

C语言问题,高手帮我看看下面这段语句,是什么意思。特别是p = (unsig...
p = (unsigned int *)(0x4000+Addr); 这句是把p指向0x4000+Addr这个地址。0x4000是你这片EEPROM映射在CPU地址空间上的基地址,Addr是指偏移量。比如你想要向这片EEPROM的第0x0002个单元写数据,那你只要往0x4002里面写就行了。接下来的 *p = Data; 这句就是向0x4000+Addr地址写入Data,也就是...

C语言问题,求大神解决,谢谢拉。。我是小白,解释下原因
主要考察你c语言三目运算符的结合方向 是自右向左的 所以a<b?a:c<d?c:d 可以看成 a<b?a: (c<d?c:d) 1 < 4 ? a : (c < d ? c:d)括号内的表达式也可以看做是一个元素 因为 a = 1 b = 4 所以 条件 a < b 成立 所以选前者 a 答案就是 A) 1 ...

哪位大佬能帮看看这道c语言?
move1(pa+1,a,50);\/\/a当前元素之后的元素向后移1位 (pa+1)=*pb;break;} pa--;} if(!flag)\/\/如未发生位移,说明该b元素小于所有a元素,插入再a数组开始位置,a所有元素后移1位 move1(a,a,50),a[0]=*pb;pb--;} pa=a;printf("合并后的a数组为:\\n");while(pa<=&a[m+3-...

急急急,c语言问题,求高手帮我看看下面的程序,它要求是把10000以内的完 ...
int main(){ int i=2,m=2,k,sum=1,j=2;while (m<=100){ i=2; \/\/重设初始值 sum=1; \/\/重设初始值 while (i<m){ k=m%i;if (k==0) sum=sum+i;i=i+1;} if (sum-m==0) { \/\/判断为完全数并且输出的部分应该都在if语句内,用大括号 printf("%d its factors are ...

c语言高手帮忙下,看看下面这个程序哪里出错
如此明显的问题,阁下的老师竟然没看出来??首先。。。y=3x-1;和y=2x-1;这里,明显是错误的,c语言中的变量不能以数字开头的,3x,2x明显不是变量,应该是想做乘法运算吧,如果是乘法运算的话应该有“*”。其次,else是自动跟上一个没配对掉的if组合,这样的话if(x>=10)y=3x-1;printf("=...

一道C语言编程问题,高手们来看看帮忙解答下
int b;int c;int sum;\/\/ABC之和。for (a = 100;a > 0;a--)\/\/以A为循环变量,在1到100之间。{ for (b = a-1;b > 0;b--)\/\/以B为循环变量,在1到A之间。{ for (c = b-1;c > 0;c--)\/\/以C为循环变量,在1到B之间。{ \/\/判断公式左右两侧是不是相等,相等侧符合题目...

相似回答