C语言 将用户输入的字符串中的所有数字提取出来 编写一个程序将用户输入的由数字字符和非数字字符组成的字符串中...
C\u8bed\u8a00 \u5c06\u7528\u6237\u8f93\u5165\u7684\u5b57\u7b26\u4e32\u4e2d\u7684\u6240\u6709\u6570\u5b57\u63d0\u53d6\u51fa\u6765\u697c\u4e3b\u91c7\u7eb3\u6211\u5427
#include
void
main()
{
char
str[80],digit[80];
char
*ps;
int
i=0;
gets(str);
ps=str;
while(*ps!='\0')
{
if(*ps>='0'&&*ps<='9')
{
digit[i]=*ps;//\u82e5\u5f53\u524d\u5b57\u7b26\u662f\u6570\u5b57\u5b57\u7b26\uff0c\u4fdd\u5b58\u5230digit\u3010i\u3011\u91cc\u9762\uff0c\u5e76\u4e14i\u7684\u4e0b\u6807\u52a01
i++;
}
ps++;//\u4e0d\u7ba1\u662f\u4e0d\u662f\uff0c\u5224\u65ad\u5b8c\u5f53\u524d\u7684\u5b57\u7b26*ps\u4e4b\u540e\uff0cps++\uff0c\u8868\u793a\u79fb\u52a8\u5230\u4e0b\u4e00\u4e2a\u5b57\u7b26\u5224\u65ad
}
digit[i]='\0';//\u7ed9\u4fdd\u5b58\u6570\u5b57\u5b57\u7b26\u7684\u5b57\u7b26\u6570\u7ec4\u52a0\u4e0a\u4e2a\u7ed3\u675f\u7b26\u53f7\u2018\0\u2019\uff0c\u56e0\u4e3aprintf(%s)\u662f\u4ee5'\0'\u8868\u793a\u5b57\u7b26\u7ed3\u675f\u7684
}
#include #define MAXSIZE 80void print(char *a);void print2( char *a );int main(){ char a[MAXSIZE]={0}; gets(a); print(a); printf("\n"); print2(a); return 0;}//\u76f4\u63a5\u8f93\u51fa void print(char *a){while( *a ){if( *a>='0'&& *a='0'&& *a '9') printf(" ");}a++;}//\u8f93\u5165\uff1aasd123rt456,fg789 \u8f93\u51fa\u7ed3\u679c\uff1a 123 456 789}
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
intmain()
{
intz=0;
intt,i;
int*p;
intm=0;
ints=0;
chara[10];//输入一个字符串到a[6]
printf("请输入一个字符串
");
scanf("%s",a);//输入字符串
for(i=0;i<10;i++)//计算a[6]中的数字个数
{
if(a[i]>='0'&&a[i]<='9')
m++;
}
if(m==0)
printf("字符串中没有数字
");
p=(int*)calloc(m,sizeof(int));//动态数组
for(i=0;i<10;i++)
{
if(a[i]>='0'&&a[i]<='9')
{
*(p+s)=a[i]-48;
s++;
}
}
//组成新的整数
for(t=0;t<m;t++)
{
z+=(*(p+t))*pow(10,m-(t+1));//组成新的整数
}
printf("新组成整数:%d
",z);
free(p);
}
kuo
扩展资料
C语言实现将字符串的数字提取为整数
#include<stdio.h>
intStringToInteger(char*p)
{
intvalue=0;
while(*p!='\0')
{
if((*p>='0')&&(*p<='9'))
{
value=value*10+*p-'0';
}
p++;
}
returnvalue;
}
intmain(void)
{
char*str="112.123.156.1";
intval=0;
val=StringToInteger(str);
printf("value=%d
",val);
getchar();
return0;
}
#include <stdio.h>
void main()
{
char str[80],digit[80];
char *ps;
int i=0;
gets(str);
ps=str;
while(*ps!='\0')
{
if(*ps>='0'&&*ps<='9')
{
digit[i]=*ps;//若当前字符是数字字符,保存到digit【i】里面,并且i的下标加1i++;
}
ps++;//不管是不是,判断完当前的字符*ps之后,ps++,表示移动到下一个字符判断。
}
digit[i]='\0';//给保存数字字符的字符数组加上个结束符号‘\0’,因为printf(%s)是以'\0'表示字符结束的。
}
提取字符串中数字,输出整型数:
while写法:
a='abc12d345'
i=0;
b=0;
while i<len(a):
if '0'<=a[i]<='9':
b=b*10+int(a[i])
i+=1;
print(b)
for写法:
a="abc12d345"
b=0;
for i in a:
if '0'<=i<='9':
b=b*10+ord(i)-48
print(b)
扩展资料:
提取字符串的数字:
将用户输入的字符串中的所有数字提取出来核心思想是每找到一个连续的数字子串,就分别用两个指针begin和end来标记它,并且每当处理完一个数字子串,就将新的起点设在上一次数字子串结尾的后一个的字符上,直到起始位置的字符为空,则遍历结束。
#include <stdio.h>
void main (void)
{
char a[15]={'0','-','1','2','3','-','4','1','5','6','2','-','4','\0','\0'};
int b[10];
int i,j;
j=0;
for(i=0;a[i]!='\0';i++)
{
if(a[i]>='0'&&a[i]<='9')
{
b[j]=a[i]-'0';
j++;
}
}
for(i=0;i<j;i++)
{
printf("b[%d]:%d
",i,b[i]);
}
}
#include <stdio.h>
void main()
{
char str[80],digit[80];
char *ps;
int i=0;
gets(str);
ps=str;
while(*ps!='\0')
{
if(*ps>='0'&&*ps<='9')
{
digit[i]=*ps;//充入digit中
i++;
}
ps++;//ps后移
}
digit[i]='\0';//在字符串最后填一个'\0'作为结束符
printf("%s
",digit);
}
#include <stdio.h>
void main()
{
char str[80],digit[80];
char *ps;
int i=0;
gets(str);
ps=str;
while(*ps!='\0')
{
if(*ps>='0'&&*ps<='9')
{
digit[i]=*ps; //找到数字,存放到数组digit里
i++;
}
ps++; //ps指针指向字符串下一个字符
}
digit[i]='\0'; //为了能用%s输出,digit在末尾要加一个结束字符'\0'
printf("%s
",digit);
}
楼主采纳我吧
#include <stdio.h>
void main()
{
char str[80],digit[80];
char *ps;
int i=0;
gets(str);
ps=str;
while(*ps!='\0')
{
if(*ps>='0'&&*ps<='9')
{
digit[i]=*ps;//若当前字符是数字字符,保存到digit【i】里面,并且i的下标加1
i++;
}
ps++;//不管是不是,判断完当前的字符*ps之后,ps++,表示移动到下一个字符判断
}
digit[i]='\0';//给保存数字字符的字符数组加上个结束符号‘\0’,因为printf(%s)是以'\0'表示字符结束的
}
扩展阅读:c 如何比较字符串的大小 ... c#截取字符串中的一部分 ... c语言输入字符串方法 ... 输入含有空格的字符串 ... 将一字符串按反序输出 ... 字符串c语言怎么输入 ... c #根据符号分割字符串 ... c语言cout输入字符串 ... c语言scanf输入多个字符串 ...