请问下面两个程序中,为什么第一个运行正确,第二个却不行。

1:#include<stdio.h>#include<string.h>voidmain(){chara[90],c;inti=0,num=0;gets(a);do{w... 1:#include <stdio.h>
#include <string.h>
void main()
{
char a[90],c;
int i=0,num=0;
gets(a);
do
{
while((c=a[i])==' ') i++;
if(c!='\o') num++;
while((c=a[i])!=' '&&c!='\0') i++;
}
while(c!='\0');
printf("%d\n",num);
}
2:#include <stdio.h>
#include <string.h>
void main()
{
char a[90],c;
int i=0,num=0;
gets(a);
do
{
c=a[i];
while(c==' ') i++;
if(c!='\o') num++;

while(c!=' '&&c!='\0') i++;
}
while(c!='\0');
printf("%d\n",num);
}
展开
 我来答
赵冰龙
2013-12-16 · TA获得超过117个赞
知道小有建树答主
回答量:80
采纳率:0%
帮助的人:82.5万
展开全部

编译了一下,你的有两个错误,先要包含一个头文件,因为你用了gets函数,第二个是\后面是数字0,不是字母o。

#include <string.h>
#include<stdio.h>
void main()
{
char a[90],c;
int i=0,num=0;
gets(a);
do
{
c=a[i];
while(c==' ') i++;
if(c!='\0') num++;

while(c!=' '&&c!='\0') i++;
}
while(c!='\0');
printf("%d\n",num);
}
看灰过来了
2013-12-16 · TA获得超过879个赞
知道小有建树答主
回答量:508
采纳率:83%
帮助的人:297万
展开全部
第一个题你把所有可能的情况都验证了么?都正确?
我个人建议你用第二种。注意几个问题:
1、多个运算符构成的表达式在一起时,最好把他们都分别用()括起来,以免运算符级别不同,造成意外的可能值
2、字符串结束标志是\0,是个零,不是欧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bengek
2013-12-16 · TA获得超过381个赞
知道小有建树答主
回答量:1228
采纳率:57%
帮助的人:561万
展开全部
第二个帮你改了下。。你看看。。

void main()

{

char a[90],c;

int i=0,num=0;

gets(a);

do

{

c=a[i];

   if(c==' ') i++;

if(c!='\0') num++;

if(c!=' '&&c!='\0') {i++;}

}while(c!='\0');

  printf("%d\n",num);

   

}

追问
while((c=a[i])==' ') i++;
if(c!='\0') num++;
while((c=a[i])!=' '&&c!='\0') i++;
只有这样才能运行成功,为什么?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式