C語言怎麼判斷我輸入的字元中含有非數字字元

2021-05-22 22:55:13 字數 6363 閱讀 7339

1樓:匿名使用者

可以讀入五個輸入來的字源符,然後迴圈判斷是否為數字。

如果c是數字,那麼必須滿足 c>='0' && c <='9',反之則是不符合要求的。**如下:

int c[5];

int i;

for(i = 0; i < 5; i ++)c[i] = getchar();//讀入五個字元。

for(i = 0; i < 5; i ++)if(c[i]<'0' || c[i] >'9')break;//如果不符合,則退出迴圈。

if(i == 5) printf("全部為數字字元\n");//如i為5,則為正常退出,不是通過break退出的,說明全是數字字元。

else printf("存在不是數字字元的元素\n");

2樓:金色潛鳥

int k;

k = scanf("%d",&a[i]); 用scanf 返回值判斷 是否成功讀到數了。

if (k != 1) 讀到非法數了。

3樓:匿名使用者

你輸入的數字如果是三位數或者是四位數的話,那肯定是對的。你都scanf("%d",&a[i]);這樣了,如果你輸入1a3而不是123,那根本就讀不進去。

4樓:永恆の眷戀

你的意思是你要來連著輸入5個字自符,沒有空格也沒有換行?那你的輸入方法用錯了,因為%d的範圍可以包括int型別的取之範圍的,所以不管你輸入多少位,系統永遠認為你輸入的是一個int,你可以用gets()呀,先獲得連續的字串,你就可以用a[i]<'0' || a[i]>'9'來判斷了,當然a[i]的型別是char型別的,如果不確定是幾位,你可以定義char a[100],到時候用strlen獲得長度,a[strlen(a)] = '\0'就好啦 ,隨便寫個程式給你看看吧

#include

#include

int main()

else

printf("%c", a[i]);

}printf("\n%d\n", n);

getchar();

return 0;}

5樓:匿名使用者

看幫助,isdigit可以用來判斷

6樓:匿名使用者

ctype.h 中有個isdigital(),餘下的我就不多說了吧。

c語言中如何判斷輸入的是字元還是數字

7樓:非常可愛

可以使用**進行判斷:

#include

intmain()

return0;

}擴充套件資料c語言判斷輸入是否是數字

intdigit;

printf("pleaseinputainteger\n");

intret=scanf("%d",&digit);

if(0==ret)

8樓:四舍**入

1、可以用sa**f或gets函式直接接收輸入的字串,然後用迴圈遍歷字串中每一個字元,判斷其是字母還是數字。

2、可以用迴圈呼叫getch()或getchar()函式來一個一個字元的接收輸入,同時判讀輸入的是字母還是數字。

3、假設字元c,滿足 (c>='a'&& c<='z')|| (c>='a' && c<='z')就是字母,滿足 (c>=0 && c<=9)就是數字。

9樓:匿名使用者

1 通過getchar讀入一個字元。

2 對字元判斷,如果字元在'0'到'9'之間,則為數字,否則為字元。

3 根據判斷結果,輸出程式執行結果。

**:int main()

10樓:匿名使用者

首先當作字元逐個讀入字串字串中,讀到分隔符(如白字元,逗號等)後,判斷這個字串中各個字元是否滿足條件即可(0 -- 9為十進位制數,含有abcdef或abcdef則為十六進位制數)。

11樓:匿名使用者

isalnum

語法:#include

int isalnum( int ch );

功能:如果引數是

數字或字母字元,函式返回非零值,否則返回零值。

isalpha

語法:#include

int isalpha( int ch );

功能:如果引數是字母字元,函式返回非零值,否則返回零值。

isdigit

語法:#include

int isdigit( int ch );

功能:如果引數是0到9之間的數字字元,函式返回非零值,否則返回零值isxdigit

語法:#include

int isxdigit( int ch );

功能:如果引數是十六進位制數字字元(即:a-f, a-f, 0-9),函式返回非零值,否則返回零值。

另外,可以根據ascii的值來判斷:

48~57是數字 ,0~31是控制字元,其他....

12樓:匿名使用者

這個看著簡單的問題,其實涉及的東西不少。由於種種原因, c的輸入部分,如scanf等,安全問題很大, 所以如果可能,就如前面有人建議的那樣,把使用者輸入當字串一起讀入,然後自己處理。下面的**用fgets讀入全部輸入,然後用strtok分割,對分割後的字串再做是否數字串的檢查。

(注:有人認為strtok不安全,其實不一定,要看如何使用,如果可能採用支援新的c11的安全庫xx_s結尾的,或自己寫,或採用第3方開源的庫都是可以的)。下面是一個完整的例子:

#include

#include

#include

#include

#define max_input 1024int isnumstring(const char *s);

int main(int argc, char** argv)printf("numeric string number: %d\n", count_numstring);

}return 0;

}int isnumstring(const char* s)}

return retcode;

}執行結果:

enter strings, enter to continue, ctrl-c to exit.

1 2 3

numeric string number: 31,2s.3 | 4 # 5

numeric string number: 4

13樓:匿名使用者

這個要看你的**是怎麼處理輸入的

比如int a = 0;

scanf("%d", &a);

這就只能接收一個整數輸入

------------

最好貼出你的**,也許你提出的問題不是你真正面對的問題。

14樓:獅子

具體需要分析你寫的程式,因為如果你規定第二個輸入為字元型,那麼12 12a間的空格就是第二個資料,自然你看不見第二個輸入資料。這只是一種可能。

15樓:匿名使用者

建議你查一下 c函式庫 可以用 isdigit 來判斷是否為數字

16樓:李莞朋順

判斷是不是字元c可以使用:

if(g=='c')

滿足這個便是c

注意大小寫

17樓:龍鶴旗柔婉

#include

intmain()

18樓:幻翼高達

需要準備的材料分別有:電腦、c語言編譯器。

1、首先,開啟c語言編譯器,新建一個初始的.cpp檔案,例如:test.cpp。

2、其次,在test.cpp檔案中,輸入c語言**:char a = getchar(); getchar();

if (a <= '9' && a >= '0') printf("數字");else printf("字母");

3、然後,編譯器執行test.cpp檔案,輸入數字,此時會成功判斷輸入內容為數字。

4、最後,輸入字母,此時成功判斷了輸入內容為字母。

19樓:鈔潤桓鴻暉

對了,剛才經過試驗發現ctype.h裡面的函式都不能判定輸入的字元。。。拿isalpha來說,其函式原型為

intisalpha(int

ch);其規定了ch為int型的,如果輸入是字元的話就會程式錯誤,所以只能在程式本身裡先賦好值,就像ch=\'a\'

這樣判斷才行,而輸入的東西是不確定的,只有先賦值才不會有函式型別的判斷錯誤。。。不知道本人說的對不,這是我剛才試出來的,我剛學c不久。。。

c語言 如何判斷輸入的是數字還是字元

20樓:高金山

你這個程式與「輸入的是字元還是數字」沒有關係。

關鍵是不能用double型別的r與0直接這樣進行比較:r!=0應該像下面這樣寫:

const float epsinon = 0.00001;

if ((x >= - epsinon) && (x <= epsinon)

不可將浮點變數用「==」或「!=」與數字比較,應該設法轉化成「>=」或「<=」此類形式。

21樓:左稚幻

使用isdigit函式可以判斷

22樓:爾夢山柔通

char型的話可以與

『0'到

『9』比

如char

a;if(a>'0'&&a<'9')

int型可比較ascii碼,具體

inta;

if(a>(int)'0'&&a<(int)'9')其實強制轉換不一定需要,,呵呵

23樓:疏獻湯爾

他們說的是理論,具體程式我給你吧。

此程式在microsoft

visual

c++6.0下編譯並通過

#include

intmain()

24樓:利韶段幹帥

按字元讀入儲存在char中(假設儲存在char型變數c中),若c>='0'&&c<='9'返回值為true,則是數字,否則(返回值為false)是其他字元。

25樓:業運城誠

你是知道自己想要輸入的是字元還是數字,對吧?

如果是這樣,你就加一個標誌符,用來判斷輸入的東西是不是你要的。

int flag;

flag = scanf("%d",&n);

if(flag==1)

printf("right\n");

else

printf("wrong\n");

flag = scanf("%d",&n); //送返成功讀入的資料個數。輸入字母,flag為0

26樓:邰霓雲德懷

intisdigit(int

ch)若ch是數字('0'-'9')返回非0值,否則返回0需要包含標頭檔案ctype.h

再就是像一樓那樣說的,根據這個字元的ascii碼來判斷

27樓:貴冠朱藍

#include

#include

void

main()

c語言 輸入一個字元,判斷該字元是數字、字母、空格還是其他字元。

28樓:匿名使用者

三個空分別是:

1、ch >= 'a'&&ch<='z' || a>='a'&&ch<='z'

2、 ch >= '0' && ch<='9'

3、 ch == ' '

4、完整**

#include

#include int main()

else if(ch>='a'&&ch<='z')

else if(ch>='a'&&ch<='z')

else if(ch==' ')

else

}   return 0;

}擴充套件資料

c語言特有特點

1、c語言是一個有結構化程式設計、具有變數作用域(variable scope)以及遞迴功能的過程式語言。

2、c語言傳遞引數均是以值傳遞(pass by value),另外也可以傳遞指標(a pointer passed by value)。

3、不同的變數型別可以用結構體(struct)組合在一起。

4、只有32個保留字(reserved keywords),使變數、函式命名有更多彈性。

參考資料

c語言輸入字元判斷該字元是數字字母空

三個空分別是 1 ch a ch z a a ch z 2 ch 0 ch 9 3 ch 4 完整 include include int main else if ch a ch z else if ch a ch z else if ch else return 0 擴充套件資料 c語言特有特點...

C語言 如何判斷字元陣列裡輸入的是字母還是數字還是漢字還是特殊字元

ascii碼佔用一個位元組,漢字佔用兩個位元組,並且漢字的兩個位元組的最高位都是1,而ascii碼的最高位都是0,可以據此判斷 c語言 輸入一個字元,判斷是字母,數字,還是特殊字元 include include define n 100 main 擴充套件資料 根據ascii碼值判斷即可。由於數字...

C語言程式設計 輸入字元後,按各字元的ASCII碼從小到大的

ascii碼從小到 大的順序輸出這三個字元的源 如下 include stdio.h void main 擴充套件資料找出並列印ascii碼最大的字元的源 如下 include void main include stdio h main chara,b,c,d inti scanf d i get...