该怎么样将数字字符转化为十进制整数并输出?

img

img

C D两问有关联。
C的代码已经打出来了如图,D应该如何操作?(能否用一个代码解决?)

#include <stdio.h>
#include <math.h>
void delnum(char *str)
{
    int i=0,j=0;
    while(str[i] != '\0')
    {
        if(str[i] >= '0' && str[i]<='9')
            str[j++] = str[i];
        i++;
    }
    str[j] = '\0';
}
int char2dec(char str[])
{
    int num=0;
    int i=0,j=0;
    while(str[j] != '\0')
        j++;
    int tem=1;
    for(i=0;i<j;i++)
    {
        num+=(str[j-1-i]-48)*tem;
        tem*=10;
    } 
    return num;
}
int main()
{
    char str[1000];
    printf("请输入一组字符串:");
    scanf("%s",str); 
    delnum(str);
    printf("删除非数字字符串后的字符串:\n");
    int num=char2dec(str);
    printf("%d\n",num);
    //printf("%s",str);
    return 0;
}

将字符减去'0'字符就是对应的数字字符了
比如 char c = '9'; printf("%d",c-'0');输出的就是数字9

long long char2dec(char str[])
{
    long long n = 0;
    int i=0;
    while(str[i] != '\0')
    {
        n = n*10 + str[i] - '0';
        i++;
    }
    return n;
}

使用c语言内置的atoi函数将字符串转数字


atoi(str);

供参考:

#include <stdio.h>
#include <stdlib.h>
void char2dec(char str[])
{
    int i, b = 0, flg;
    for (i = 0, flg = 1; str[i] != '\0'; i++)
    {
        if (str[i] >= '0' && str[i] <= '9' && flg)
        {
            flg = 0;
            b = atoi(str + i);
            printf("整数是:%d\n", b);
        }
        else if ((str[i] < '0' || str[i] > '9') && !flg)
            flg = 1;
    }
}
int main()
{
    char a[100];
    printf("请输入一串字符串:");
    scanf("%[^\n]", a);
    char2dec(a);
    return 0;
}