习题 8.16 输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个整数,依次存放到一数组a中。统计共有多少个整数,并输出这些数。

C程序设计(第四版) 谭浩强 习题8.16 个人设计

习题 8.16 输入一个字符串,内有数字和非数字字符,例如:

A123x456 17960? 302tab5876

将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1]。。。。。。统计共有多少个整数,并输出这些数。

代码块:

#include <stdio.h>
#include <math.h>
void output(char *s, int n);            //定义输出函数
int main()
{
    char str[30];
    printf("Please enter string: ");    //输入字符串
    gets(str);
    output(str, 30);                    //调用输出函数
    return 0;
}
//输出函数
void output(char *s, int n)
{
    char *i;
    int j, k, t, m, temp[10], num;
    double sum, a[30];
    for (i=s, num=0, j=0, m=0; i<s+n; i++)
        if (*i>='0'&&*i<='9') num=1, temp[j++]=(int)(*i-'0');
        else if (num){
            for (num=0, k=0, sum=0, t=j-1; k<j; sum+=temp[k]*pow(10, t), t--, k++);
            a[m++]=sum, j=0;
        }
    for(j=0, printf("There is %d number in the string.\nResult: ", m); j<m; printf("%.0f ", a[j++]));
    printf("\n");
}

猜你喜欢

转载自blog.csdn.net/navicheung/article/details/79425705
今日推荐