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

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

时间:2019-04-07 04:56:10

相关推荐

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

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

谭浩强C程序设计(第五版)习题8-16

主要思路是:相邻连续数字的差是1

#include <stdio.h>#define N 50int isContinuous(char *str,int *p);int main(void){int i;char s[N];int a[N];int *point=a;//int* temp=point;int cnt;gets(s);//使用gets字符串输入函数,空格也会算作一个字符 printf("%s\n",s);cnt=isContinuous(s,point);point=a;printf("该字符串中一共有%d个连续的数字\n",cnt);for(i=0;i<cnt;i++){printf("%d\n",*(point+i));}return 0;}int isContinuous(char *str,int *p){int i=0,j,temp,sum=0,n=0;//n用来统计这个字符串中总共有多少个连续数字 int flag=0;//用来标志连续数字 while(*(str+i) != '\0'){if(*(str+i)>='0' && *(str+i)<='9'){temp=*(str+i)-'0';//将数字字符转换为数字 }else{i++;continue;}j=i+1;if((*(str+j)>='0' && *(str+j)<='9')&&((*(str+j)-'0')-temp==1)){if(!flag){sum=temp*10+(*(str+j)-'0');}else{sum=sum*10+(*(str+j)-'0');} //temp=*(str+j)-'0';flag=1;}else{//进入到else里说明不是连续数字、非数字字符、数字连续性结束 if(flag){//该逻辑判断作用于连续性数字结束 非数字字符进入else不会进行该逻辑判断 n++;*(p++)=sum;}flag=0;//标志本轮连续数字已经结束 sum=0;}i++;}return n;}

运行结果示例:

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

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