声明:该题来自某211陈年题库,仅供参考,欢迎大佬指正
题目描述
编写函数fun统计字符串中数字字符出现的次数,没有返回0。
例如:字符串为:abcdef35adgh3kjsdf7,统计结果为4。
核心想法
利用ASCII码对字符串中元素进行一一核对,如果满足在0-9的ASCII码区间内,则+1
核心函数
int fun(char a[])
{
int i=0,j=0;//j为数字字符个数,初始为0
while(a[i]!='\0')//检验字符串是否读到末尾
{
if(a[i]>='0'&&a[i]<='9')//判断a[i]是否为数字字符
{
j++;//判断结果为是,j自增
}
i++;//读取下一个字符
}
return j;
}
加上文件流部分
全部代码
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
/*******************/
int fun(char a[])
{
int i=0,j=0;//j为数字字符个数,初始为0
while(a[i]!='\0')//检验字符串是否读到末尾
{
if(a[i]>='0'&&a[i]<='9')//判断a[i]是否为数字字符
{
j++;//判断结果为是,j自增
}
i++;//读取下一个字符
}
return j;
}
/********************/
int main()
{ void xxx();
char s[80];
int t;
cout<<"请输入字符串:";
cin.getline(s,80);
t=fun(s);
cout<<endl<<"该字符串中数字字符出现的次数是:"<<t;
xxx();
return 0;
}
void xxx()
{
ifstream IN("in.txt",ios::in);
ofstream OUT;
OUT.open("out.txt",ios::out);
char k[100];
int i,iOUT;
for(i=0;i<3;i++)
{
IN>>k;
iOUT=fun(k);
OUT<<iOUT<<'\n';
}
IN.close();
OUT.close();
}