在C語言中,怎麼做到輸入乙個字串,過濾此串,只保留串中的數字,並進行加減乘除?

時間 2021-05-08 17:46:54

1樓:

class

Catbool

IsBreak

(charCh)

}return

(false);}

intStrToInt

(char

*Str

)int

Sum=0;

for(;*p

;++p)

}return

(Sig

*Sum);}

public

:void

InputStr

(char

*Str

,int

Size

)char*p

=Str-1

;charCh=

0;for(

inti=0

;i

i)*(

++p)=

Ch;}*

(++p)

='\0';}

int*

GetAr

(char

*Str

,int

&ALen

)char*q

=Str

;for(;*

q;++q

);int*Ar

=(int*

)calloc((q

-Str

),sizeof

(int

));int*i

=Ar-1

;for

(char*p

=q=Str;*

p;++p

)}*(

++i)=

StrToInt(q

);if(i

ALen=1

+i-Ar

;return(Ar

);}};#include

#include

#include

"Cat.h"

intmain

(int

argc

,char

**argv

)else

}printf("

\n");free

(Str

);scanf

("%*s"

);return0;}

2樓:蒙奇D·LAw

在實現計算器的功能中,最終採用以下函式實現,如果輸入為字元加數字,則提取數字,以及運算符號;

double f1()

int i,j=1,n;

char a[100];

double sum=0,t=0.1;

printf("請輸入字元數字:\n");

scanf ("%s",a);

for(i=0;a[i]<'0'||a[i]>'9';i++)n=i;

if(a[i-1]=='-'||a[0]=='-')j=-1;

for(i=n;a[i]>='0'&&a[i]<='9';i++)sum=sum*10+(a[i]-'0');

n=i;

if(a[i]=='.')

for(i=n+1;a[i]>='0'&&a[i]<='9';i++)

sum=sum+(a[i]-'0')*t;

t*=0.1;

sum=sum*j;

return sum;

3樓:Reverier

有個叫ctype.h的標頭檔案,裡面有個函式叫int isdigit(int ),實際上它是判斷乙個char字元是否是數字的,返回true或者false.

可以用乙個迴圈來這麼幹,如果讀取到數字了再巢狀乙個迴圈或者利用標誌變數的辦法來讀取完整的數字。

4樓:雪地裡的枯樹

int a=0;

int str[200];

scanf("%s",&str);

for(int i=0;i<200;++i){if(str[i]>='0'||str[i]<='10'){a=a*10+str[i];

//a就是過濾後的數字

//未經測試,僅供參考

C語言指標初始化直接賦值乙個字串,位址是怎麼得到的?

C語言答疑課堂 char pChar I love U 對於這種寫法,左邊還是乙個指標變數pChar,它的型別是 char 而右邊 I love U 你看著是乙個字串,而且也沒有陣列儲存它。編譯器在編譯的時候會把這個字串的第乙個字元 I 的位址給指標變數pChar。 KkKk 這個是編譯器行為。編譯...

求教乙個字串生成的演算法?

我覺得沒必要考慮高不高效,只要考慮好生成的字串怎麼存就行了,因為你要的是長度為n的所有組合,那麼必然會輸出所有的字串,所以不管啥演算法都不能使時間複雜度降低到輸出所用時間以下。 zanxas 乙個string佔多少記憶體?用char陣列還是string考慮過沒?26 10 36 36的五次方是多少?...

2021 06 08 乙個字串至少要切幾刀能讓切出來的子串都是回文串?

時間拓荒者 在PAM上dp就好了,類似CF906E,複雜度是線性帶乙個字符集大小的。貌似用manacher可以線性,不會 kk 大概就是這樣的 分析可以見回文樹 OI Wiki f 0 0,g 0 1 for int i 1 i slen i last insert last,s i i for i...