每日一题——第八十九题

题目:在字符串中找到提取数字,并统计一共找到多少整数,a123xxyu23&8889,那么找到的整数为123,23, 8889

//思想:

#include
#include
#include

int main() {

	char str[] = "a123xxyu23&8889";
	int count = 0;
	int num = 0;//用于临时存放当前正在构建的整数。
	bool inNum = false;//用于标记当前是否正在读取一个整数

	for (int i = 0; str[i] != '\0'; i++)
	{
		if (isdigit(str[i])) {//如果当前字符是数字的话,则开始或者继续构建数字
			
			if (!inNum) {//如果之前不在数字中,则重置num并开始新的整数,将inNum置为true,表示当前在数字中

				num = 0;
				inNum = true;
			}

			num = num * 10 + (str[i] - '0');//将当前数字加到num上
		}
		else {//如果当前字符不是数字, 则截断了,同时判断,如果之前是在数字中,则就打印这个数字,并且计数器+1,并将inNum状态修改为false,方便下一次判断读取
			   //否则,啥也不做,执行下一次循环
		
			if (inNum) {//之前在读取数字,则打印该数字,并重置状态
				printf("找到整数:%d\n", num);
				count++;
				inNum = false;
			}
		}
	}

	if (inNum) {//判断之前是否在数字中,如果在,并且跳出循环了,则需要单独判断,并打印出来
		printf("找到整数:%d\n", num);
		count++;
	}

	printf("总共找到整数 %d个\n", count);

	return 0;
}

你可能感兴趣的:(C语言程序设计每日一练,c语言)