本题要求提取一个字符串中的所有数字字符(‘0‘……‘9‘),将其转换为一个整数输出。

今天遇到了一道题,我觉得很有意义,所以写下来记录一下

题目:

本题要求提取一个字符串中的所有数字字符('0'……'9'),将其转换为一个整数输出。

我一开始没有仔细看题目,然后第一想法就是找到字符串中的数字字符然后直接打印出来,代码如下

#include <stdio.h>
int main() 
{
    char arr[81];
    int len = 0;
    //输入字符串,并记录下len
    while (1) 
    {
        scanf("%c", &arr[len]);
        if (arr[len] == '\n') 
        {
            break;
        }
        len++;
    }
    //我当时就是直接找出数字字符,然后直接打印出来
    for(int i = 0;i < len;++i)
    {
        if(arr[i] >= '0' && arr[i] <= '9')
        {
            printf("%c", arr[i]);
        }
    }
    return 0;
}

之后提交的时候才发现需要将其转换为一个整数输出。

改进后代码如下

#include<stdio.h> 
int main()
{
	char arr[80];
	char b[80];
	int n = 0;
	int len = 0;
	while (1)
	{
		scanf("%c", &arr[len]);
		if (arr[len] == '\n')
		{
			break;
		}
		len++;
	}
	将数字备份到字符串b中 
	for (int i = 0; i < len; ++i) 
	{
		if (arr[i] >= '0' && arr[i] <= '9') 
		{
			b[n] = arr[i];
			n++;//记录b的个数
		}
	}
	int sum = 0;
	//最大的坑
	//本题要求提取一个字符串中的所有数字字符('0'……'9'),将其转换为一个整数输出。
	for (int i = 0; i < n; ++i)
	{
		//输出最好按题目要求
		if (i == 0) 
		{
			sum = b[i] - '0';
		}
		//字符串转数字要-'0' 
		else 
		{
			sum = sum * 10 + b[i] - '0';
		}
	}
	printf("%d", sum);
}

最后,做一个小小的总结。

其实这道题目并没有那么的难,很基础。但是由于我的马虎,没有按照题目的要求来写,导致我耗费了一定的时间。

所以说各位老铁们还是要认真读题,不要像我一样出这样的低级错误

猜你喜欢

转载自blog.csdn.net/ikun10001/article/details/129905037
今日推荐