|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
做了一个统计输入的各个数字、空白符(空格、制表符、换行符)以及所有其他字符出现的次数,并分别存储在变量num[10],blank,others里边打印的程序。但是运行结果却是乱码,求大神指点!!!
下面是我写的代码:
- #include<stdio.h>
- int main()
- {
- int a,b,d,i,j,k;
- int num[10]={0};
- char blank[10]={'\n'},others[10]={'?'},c;
- a=b=d=0;
- while((c=getchar())!=EOF)
- {
- if((c==' ')||(c=='\t')||(c=='\n'))
- { blank[b]=c;++b;}
- if((c>=0)||(c<=9))
- { num[a]=c;++a;}
- else
- others[d]=c;++d;
- }
- for(i=0;i<a+1;i++)
- printf("%d,",num[i]);
- for(j=0;j<b+1;j++)
- printf("%c,",blank[j]);
- for(k=0;k<d+1;k++)
- printf("%c,",others[k]);
-
- printf("%d,%d,%d\n",a-1,b-1,d-1);
- return 0;
- }
复制代码
- #include<stdio.h>
- int main()
- {
- int a = 0, b = 0, d = 0, i, j, k;
- int num[10] = { 0 };
- char blank[10], others[10], c; // blank[10]、others[10] 没有必要初始化
- while ((c = getchar()) != '\n')
- {
- if ((c == ' ') || (c == '\t') || (c == '\n'))
- {
- blank[b] = c;
- ++b; // b 没有初始化
- }
- if ((c >= '0') && (c <= '9')) // 数字是一个整体,要用 && ,不能用 ||;并且输入的是字符型数字,要加单引号
- {
- num[a] = c;
- ++a; // a 没有初始化
- }
- else
- { // 不加花括号,无论前面是哪种情况,++d 都会自加一次,是输出乱码的来源
- others[d] = c;
- ++d; // d 没有初始化
- }
- }
-
- for (i = 0;i < a;i++)
- printf("%c,", num[i]);
- printf("\n"); // 不换行,输出的数据将堆一起,无法分辨
- for (j = 0;j < b;j++)
- printf("%c,", blank[j]);
- printf("\n"); // 不换行,输出的数据将堆一起,无法分辨
- for (k = 0;k < d;k++)
- printf("%c,", others[k]);
- printf("\n"); // 不换行,输出的数据将堆一起,无法分辨
- printf("%d,%d,%d\n", a - 1, b - 1, d - 1);
- return 0;
- }
复制代码
|
|