本文主要是介绍输入一个字符串,内有数字和非数字字符,将其中连续的数字存放于一个数组中。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
谭浩强第八章第十六题
思路:本篇使用了多个指针,思路不够整洁,可以只需一个指针完成。
但与简洁思路相同,从字符数组数字的个位开始处理,若需要从高位开始处理,则好像可以少定义一个变量?以后再写。
int main()
{char s[20];scanf("%s", s);int a[20] = {0};char* p = s; //int num = 0; //计数连续数字int n = strlen(s);int i = 0; //整型数组的下标for (; p < s + n; p++){if (*p <= '9' && *p >= '0'){i++;num++;char* q = p;while (*++q <= '9' && *q >= '0') num++; //移动另一个指针并计算数字个数char* next = --q; //第三个指针记录数字尾int sum = *q - '0'; //记录数字的个位int m = 0; //记录每个位要乘10的次数while (q >= p){q--; //另一个指针后移a[i - 1] += sum; //整型数组接收每一位数字和num--; //接收一位数字后计数器减一m++; //下一位乘10次数加一if (num != 0) //计数器不为0则下一位自乘{int ret = 0;sum = *q - '0'; //记录下一位for (; ret < m; ret++) //下一位自乘多少次,由m决定{sum *= 10;}}}p = next; //指向这一组数字尾 }}for (num = 0; num < i; num++)printf("%d ", a[num]);
}
结果:
这篇关于输入一个字符串,内有数字和非数字字符,将其中连续的数字存放于一个数组中。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!