关于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函数 展开
#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函数 展开
3个回答
展开全部
#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;
}
重复出现的空格不影响单词的统计
更多追问追答
追问
题目答案是你这样的。
但我是这么想的
题目没说只输入小写字母与空格,
那么我就要考虑字符串里有大写字母或符号等等
又或者 我语文没学好 理解题意错误
老师老说我爱钻牛角尖!!!
追答
考虑太细,这个题就太复杂了,你的意思是如果输入了数字或者符号,就不算单词?
那你怎么不考虑如果单词是错的呢?
展开全部
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);
/*****************************/
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int fun(char *s) 少了分号
追问
哥哥,你糊涂了,fun函数定义后面不用加分号的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询