问题
读入一串字符,统计0-9出现的次数
算法思想1
用永真循环while(1)来输入数据,记录长度,当长度大于100或者出现$字符时退出。首先计数清零,如果遇到0-9计数加一,最后输出。
#include<bits/stdc++.h>
using namespace std;
//读入一串字符,分别统计数字'0'--'9'出现的次数
int main(){
int num[10],i;
char ch[100];
int length=0;
for(i=0;i<10;i++){//计数清零
num[i]=0;
}
cout<<"请输入字符串:";
while(1){
cin>>ch[length];
length++;
if(length>100||ch[length-1]=='$') break;
}
//1s3d234d32f49$
for(i=0;i<length;i++){
if(ch[i]>='0'&&ch[i]<='9'){
num[(ch[i]-'0')]++;
}
}
for(i=0;i<10;i++){
cout<<i<<"出现"<<num[i]<<endl;
}
}
算法思想2
读入一串字符,直到读入’\n’退出,计数清零,开始统计0-9的个数,统计减去48后的值的个数,0的ASCII值为48.最后输出的时候只输出0-9统计的个数。
```cpp
#include<bits/stdc++.h>
using namespace std;
//读入一串字符,分别统计数字'0'--'9'出现的次数
int main(){
int num[10],i;
char c;//每一个字符
for(i=0;i<10;i++){//计数清零
num[i]=0;
}
while((c=getchar())!='\n'){//读入每一个字符 只要不是换行
num[c-48]++;//0的ASCII码是48
}
for(i=0;i<10;i++){
cout<<i<<"出现"<<num[i]<<endl;
}
}
![运行](https://img-blog.csdnimg.cn/d757f3271a2d4bbb85d92271c00b2838.png)
## 收获
用while(1)输入真好用!
char c;
while((c=getchar())!=‘\n’)字符串的输入方法