每日一题——第八十九题

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

//思想:

#include<stdio.h>
#include<stdbool.h>
#include<ctype.h>

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值