|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #define OUT 0
- #define IN 1
- int main()
- {
- int i, ch, quantity, j, k, state;
- int number[10];
-
- for(i = 0; i < 10; ++i)
- number[i] = 0;
-
- quantity = 0;
- state = OUT;
- while((ch = getchar()) != EOF){
- if(ch != ' ' || ch != '/n' || ch != '/t'){
- state = IN;
- quantity++; //统计单词字符数
- }
- else
- state = OUT; //一个单词结束
- if(state == OUT){
- if(quantity >= '0' && quantity <= '9') //将单词字符数储存在数组里
- ++number[quantity-'0'];
- quantity = 0;
- }
- }
- printf("digits =");
- for (i = 0; i < 10; ++i)
- printf(" %d", number[i]);
- }
复制代码
本帖最后由 sunrise085 于 2020-1-10 12:24 编辑
不知道你要完成什么功能。数组number中存储的是每个单词的字符数,还是不同长度的单词个数。反正不管是哪一种,你的程序都完成不了这项功能。
1、将单词字符数储存在数组里,这个if模块有很大的问题。quantity是一个单词的长度,你拿它和‘0’以及‘9’比较深什么鬼?‘0’的值是48,‘9’的值58,很少有这么长的单词吧。你是要达到什么目的?
2、统计单词字符数的if判断条件应该用与(&&)而不是或(||),另外,回车和tab中的斜杠写错了。
3、你的程序不会将最后一个单词统计进去,以你为最后一个单词结束的时候,getchar()获得的值是EOF,直接跳出循环了,不会进入 将单词字符数储存在数组里 这个循环。
帮你修改了一下不知道是否是你需要的功能,你也没说清你的要求。。。
- #include <stdio.h>
- #define OUT 0
- #define IN 1
- int main()
- {
- int i, quantity, j, k, state;
- char ch;
- int number[10];
-
- for(i = 0; i < 10; ++i)
- number[i] = 0;
- quantity = 0,j = 0;
- state = IN;
- while((ch = getchar()) != EOF and j<10){
- if(ch != ' ' && ch != '\n' && ch != '\t'){
- quantity++; //统计单词字符数
- }
- else
- state = OUT; //一个单词结束
- if(state == OUT){
- number[j++]=quantity; //将单词字符数储存在数组里
- quantity = 0;
- state = IN;
- }
- }
- if(j<=10)
- number[j]=quantity;
- printf("digits =");
- for (i = 0; i < 10; ++i)
- printf(" %d", number[i]);
- return 0;
- }
复制代码
|
|