函数的功能是:输入一个字符串,过滤此串,统计串中包含的数字字符个数,逆序输出串中的数字字符。
函数接口定义:
int Count_Digit ( char *ptr,int *num );
其中 ptr是用户传入的参数,指向要处理的字符串,返回值是数字字符的个数;参数num是数字字符逆序生成的整数。
裁判测试程序样例:
#include <stdio.h>
int Count_Digit ( char *ptr,int *num );
int main()
{
char str[80];
int cnt,num;
gets(str);
cnt=Count_Digit(str,&num);
printf("There are %d digits in the string,they are %s\n",cnt,str);
printf("The number of inversions is %d\n",num);
return 0;
}
/* 请在这里填写答案 */
输入样例:
hjds34jj,&67
输出样例:
There are 4 digits in the string,they are 3467
The number of inversions is 7643
问题1:对指针的了解运用不够,给"s[count]='\0'"后后面的都不会再出现,有'\0'就停止。
问题2:最后还要把s赋值给ptr,因为ptr才是两个函数的联系,但是不能只有ptr来进行操作,s和ptr都是在对一个数组进行操作
int Count_Digit ( char *ptr,int *num )
{
char *s;
int count=0,i,sum=0;
s=ptr;
while(*ptr!='\0')
{
if(*ptr>='0'&&*ptr<='9')
{
s[count]=*ptr;
count++;
}
ptr++;
}
s[count]='\0';
for(i=count-1;i>=0;i--)
{
sum=sum*10+(s[i]-'0');
}
*num=sum;
ptr=s;
return count;
}