关于C语言的问题,求大神指点。国二难度的题

#include<string.h>#include<stdio.h>#defineN80intfun(char*s){inti=0,k=0,j=0;if(s[i]>='... #include<string.h>
#include<stdio.h>
#define N 80
int fun(char *s)
{int i=0,k=0,j=0;
if(s[i]>='a'&&s[i]<='z')
for(k=0;;k++)
{if(s[i]>='a'&&s[i]<='z')i++;
else if(s[i]==' '){j++;break;}
else break;

for(;s[i]=='\0';i++)
{if(s[i]==' ')
{
i++;
for(;s[i]<='a'||s[i]>='z';i++);
}
if(s[i]==' ')
j++;}

return j;
}
void main()
{
FILE *wf;
char line[N];
int num=0;
printf("Enter a string:\n ");
gets(line);
num=fun(line);
printf("The number of word is:%d\n\n ",num);
/******************************/
wf=fopen("out.dat","w");
fprintf(wf,"%d",fun("a big car"));
fclose(wf);
/*****************************/
}

题目是这样的

我用的是VC++6.0
编译出来说有错误,显示错误在main函数里
有可能是我无意间动了哪里,我不知道。我也检查不出来。
但我觉得更可能的是我的程序或者电脑有问题
所以希望有大神帮我看看程序有错没,再指正一下我那个fun函数
展开
 我来答
龍__鳳
推荐于2016-09-19 · TA获得超过2346个赞
知道小有建树答主
回答量:948
采纳率:0%
帮助的人:1405万
展开全部
#include<string.h>
#include<stdio.h>
#define N 80
int fun(char *s)
{
int i=0,k=0,j=0;
if(s[i]>='a'&&s[i]<='z')
for(k=0;;k++)
{
if(s[i]>='a'&&s[i]<='z')i++;
else if(s[i]==' ')
{
j++;break;
}
else break;

for(;s[i]=='\0';i++)
{
if(s[i]==' ')
{
i++;
for(;s[i]<='a'||s[i]>='z';i++);
}
if(s[i]==' ')
j++;
}


}//少个},这是{}不匹配的问题
return j;
}
void main()

FILE *wf;
char line[N]; 
int num=0;
printf("Enter a string:\n "); 
gets(line);
num=fun(line);
printf("The number of word is:%d\n\n ",num);
/******************************/
wf=fopen("out.dat","w");
fprintf(wf,"%d",fun("a big car"));
fclose(wf);
/*****************************/
}

上面是语法的错误

下面说你的逻辑错误

你的fun函数并不能实现你的需求 

1、你使用空格来统计单词的数目,如果连续出现2个空格呢?

2、你的循环有问题

下面是我的fun函数

int fun(char *s)
{
int i, num = 0;
for(i = 0; s[i] != '\0'; i++)
{
if(s[i] == ' ' && i != 0 && s[i-1] != ' ')
num++;
}
if(s[i-1] != ' ')
num++;
return num;
}

重复出现的空格不影响单词的统计

更多追问追答
追问
题目答案是你这样的。
但我是这么想的
题目没说只输入小写字母与空格,
那么我就要考虑字符串里有大写字母或符号等等

又或者 我语文没学好 理解题意错误

老师老说我爱钻牛角尖!!!
追答
考虑太细,这个题就太复杂了,你的意思是如果输入了数字或者符号,就不算单词?
那你怎么不考虑如果单词是错的呢?
felithuang
2014-07-13 · TA获得超过849个赞
知道小有建树答主
回答量:520
采纳率:50%
帮助的人:711万
展开全部

main函数前的函数少了一个收括号:}


#include<string.h>
#include<stdio.h>
#define N 80
int fun(char *s)
{int i=0,k=0,j=0;
if(s[i]>='a'&&s[i]<='z')
for(k=0;;k++)
{if(s[i]>='a'&&s[i]<='z')i++;
else if(s[i]==' '){j++;break;}
else break;

for(;s[i]=='\0';i++)
{if(s[i]==' ')
{
i++;
for(;s[i]<='a'||s[i]>='z';i++);
}
if(s[i]==' ')
j++;}
                                                                   
             

  return j;
}
} // 这个少了,加上就好。
void main()

  FILE *wf;
  char line[N]; 
  int num=0;
  printf("Enter a string:\n "); 
  gets(line);
  num=fun(line);
  printf("The number of word is:%d\n\n ",num);
/******************************/
  wf=fopen("out.dat","w");
  fprintf(wf,"%d",fun("a big car"));
  fclose(wf);
/*****************************/
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
OpenWrt
2014-07-13 · 超过13用户采纳过TA的回答
知道答主
回答量:55
采纳率:100%
帮助的人:12.8万
展开全部
int fun(char *s) 少了分号
追问
哥哥,你糊涂了,fun函数定义后面不用加分号的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式