700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 输入一个字符串 内有数字和非数字字符 例如:A123x456 17960? 302tab5876 将其中

输入一个字符串 内有数字和非数字字符 例如:A123x456 17960? 302tab5876 将其中

时间:2021-06-24 19:32:18

相关推荐

输入一个字符串 内有数字和非数字字符 例如:A123x456 17960? 302tab5876 将其中

输入一个字符串,内有数字和非数字字符,例如:A123x456 17960? 302tab5876,将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1]…统计共有多少个整数,并输出这些数。

#include <stdio.h>#include <string.h>// 第8章/p292/16void num_count(char *p);int main() {char str[30];printf("输入一个字符串:");gets(str);// 函数调用num_count(str);return 0;}void num_count(char *p) {long discover(char *p); // 函数原型char n[10];int i = 0, j = 0, sum = 0;long num[20];for (int m = 0; m <= strlen(p); m++) {// 循环次数包括'\0'if (*(p + m) >= '0' && *(p + m) <= '9') {// 即str[m]n[i++] = *(p + m);} else {n[i] = '\0'; // 若不是数字字符,则在末尾加'\0'字符串结束标志if (n[0] != '\0') {// 若第1个字符不为'\0',说明是数字字符,计数累加,并转换为整数存放到数组中sum++;num[j++] = discover(n);}i = 0; // 将当前长度设为0,重新下一轮计数}}printf("共有%d个整数:", sum);for (int k = 0; k < j; k++)printf("%ld ", num[k]);}// 数字字符串转换成一个整数long discover(char *p) {long num = 0;for (; *p != '\0'; p++) {num = num * 10 + *p - '0'; // *p-'0'的差值即为具体整数}return num;}

运行结果

输入一个字符串 内有数字和非数字字符 例如:A123x456 17960? 302tab5876 将其中连续的数字作为一个整数 依次存放到一数组a中。例如 123放在a[0] 456放在a[1]...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。