70,027
社区成员




#include <stdio.h>
int* process(char* p);
int n=0;
int main()
{
char strin[100];
int* a;
int i=0;
gets(strin);
a=process(strin);
for(i=0;i<n;i++)
{
printf("%d\t",*(a+i));
}
printf("\n");
return 0;
}
int* process(char* p)
{
int j=0,k=0;
int el=1;
int a[100]={0};
int sum=0;
char* q=p;
while(*p!=0)
{
q=p;
while(*q>='0' && *q<='9')
{
j++;
q++;
}
if(j>0)
{
for(j=j-1;j>=0;j--)
{
sum+=((*(p+j)-48)*el);
el=el*10;
}
a[n]=sum;
printf("%d\n",a[n]);//加上这句,就可以正确输出数组a,不加就不行,为什么?
n++;
j=0;
el=1;
sum=0;
}
p=q;
if(*p!=0)
{
p++;
}
}
return a;
}
root@~ #cat str2int.c
#include <stdio.h>
int main (void) {
char str[80];
scanf("%s",str);
int num=0,len=0,base=1,temp,i=0,j=0;
int digit[10];
while(str[len]!='\0') {
len++;
}
len--;
while(len>=0) {
if(str[len]>='0'&&str[len]<='9') {
for(i=len;str[i]>='0'&&str[i]<='9';i--) {
temp=str[i]-'0';
num+=temp*base;
base*=10;
}
if(num>=10) {
digit[j]=num;
num=0;
base=1;
j++;
len=i;
}else{
num=0;
base=1;
}
}
len--;
}
for(j--;j>=0;j--) { printf ("%i ",digit[j]);}
printf ("\n");
return 0;
}
root@~ #
root@~ #cat str2int.c
#include <stdio.h>
int main (void) {
char str[80];
scanf("%s",str);
int num=0,len=0,base=1,temp,i=0,j=0;
int digit[10];
while(str[len]!='\0') {
len++;
}
len--;
while(len>=0) {
if(str[len]>='0'&&str[len]<='9') {
for(i=len;str[i]>='0'&&str[i]<='9';i--) {
temp=str[i]-'0';
num+=temp*base;
base*=10;
}
digit[j]=num;
num=0;
base=1;
j++;
len=i;
}
len--;
}
for(j--;j>=0;j--) { printf ("%i ",digit[j]);}
printf ("\n");
return 0;
}
root@~ #
#include <iostream>
#include <cstring>
using namespace std;
bool isDigit(char c)
{
return '0'<c && c<'9';
}
void print(const char *str)
{
bool last=true; //打印
if( !isDigit(str[0]) )
{
last=false; //不打印
}
for(int i=1;i<(int)strlen(str);++i)
{
if(isDigit(str[i]))
{
if( last && ( !isDigit(str[i-1]) || str[i-1]+1!=str[i] ) )
{
cout<<" ";
}
last=true;
cout<<str[i];
}
}
cout<<endl;
}
int main()
{
const char *str="m123h456";
print(str);
return 0;
}
#include <stdio.h>
int* process(char* p, int a[]);
int n=0;
int main()
{
char strin[100];
int a[100];
int i=0;
gets(strin);
process(strin, a);
for(i=0;i<n;i++)
{
printf("%d\t",*(a+i));
}
printf("\n");
return 0;
}
int* process(char* p, int a[])
{
int j=0,k=0;
int el=1;
//int a[100]={0};
int sum=0;
char* q=p;
while(*p!=0)
{
q=p;
while(*q>='0' && *q<='9')
{
j++;
q++;
}
if(j>0)
{
for(j=j-1;j>=0;j--)
{
sum+=((*(p+j)-48)*el);
el=el*10;
}
a[n]=sum;
printf("%d\n",a[n]);//加上这句,就可以正确输出数组a,不加就不行,为什么?
n++;
j=0;
el=1;
sum=0;
}
p=q;
if(*p!=0)
{
p++;
}
}
return a;
}