黑马程序员技术交流社区
标题: 下面的代码我怎么输入打印的值都是1,求大神帮忙 [打印本页]
作者: shenxian88 时间: 2015-4-29 14:42
标题: 下面的代码我怎么输入打印的值都是1,求大神帮忙
本帖最后由 shenxian88 于 2015-4-30 00:39 编辑
#include <stdio.h>
int main(){
char s[81],c;//定义一个数组,c接收字符
int num = 0,word=0;//num表示单词的个数,word做单词的标记
printf("请输入一句英语,单词之间用空格隔开:");//提示用户输入
scanf("%s",s);
for (int i=0; (c=s)!='\0'; i++) {
if (c==' ') word = 0;//如果c是空字符,那么标志word就等于0
else if(word==0){word = 1;num++;}//当word == 0的时候就执行就执行括号里面的再把word赋值1;num++
}
printf("There are %d words.\n",num);//打印单词的个数
return 0;
}
作者: 流风124 时间: 2015-4-29 16:48
本帖最后由 流风124 于 2015-4-29 16:51 编辑
scanf函数的问题,不接收空格、回车和Tab,可以改成gets()函数,但是会有警告
另外程序本身写的有点问题 c=s 这句是不对的,c是字符,s是字符串,怎么直接赋值?应该是 c=s,这里其实用while函数更好,也没有必要定义c来接收每一个字符,不过这里就按你的思路来吧
还有你的代码规范不是很好,还是多多注意一点
下面是我改的代码,结果没错
- #include <stdio.h>
- int main(){
- char s[81],c;//定义一个数组,c接收字符
- int num = 0,word=0;//num表示单词的个数,word做单词的标记
-
- printf("请输入一句英语,单词之间用空格隔开:");//提示用户输入
-
- gets(s);
-
- for (int i = 0; ( c = s[i] ) != '\0'; i++) {
-
- if (c == ' ')
- {
- word = 0;//如果c是空字符,那么标志word就等于0
- }
- else if(word == 0)
- {
- word = 1;
- num++;
- }//当word == 0的时候就执行就执行括号里面的再把word赋值1;num++
-
- }
- printf("There are %d words.\n",num);//打印单词的个数
- return 0;
- }
复制代码
作者: shenxian88 时间: 2015-4-29 17:16
谢谢,大神,我知道了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |