c語言判斷輸入的是否是數字不止一位

2021-03-10 22:02:49 字數 6131 閱讀 5578

1樓:南瓜蘋果

寫出一個巨集定義,用於判斷輸入的一個字元是否是數字,若是得1,否則得0。

**如下:

#include

#define p(x) x>『0』&&x<『9』? 1:0

void main()

擴充套件資料

巨集定義的優點:

方便程式的修改

使用簡單巨集定義可用巨集代替一個在程式中經常使用的常量,這樣在將該常量改變時,不用對整個程式進行修改,只修改巨集定義的字串即可,而且當常量比較長時, 我們可以用較短的有意義的識別符號來寫程式,這樣更方便一些。

相對於==全域性變數==兩者的區別如下:

1、巨集定義在編譯期間即會使用並替換,而全域性變數要到執行時才可以。

2、巨集定義的只是一段字元,在編譯的時候被替換到引用的位置。在執行中是沒有巨集定義的概念的。而變數在執行時要為其分配記憶體。

3、巨集定義不可以被賦值,即其值一旦定義不可修改,而變數在執行過程中可以被修改。

4、巨集定義只有在定義所在檔案,或引用所在檔案的其它檔案中使用。 而全域性變數可以在工程所有檔案中使用,只要再使用前加一個宣告就可以了。換句話說,巨集定義不需要extern。

2樓:非常可愛

#include

intmain()

擴充套件資料輸入一個字元判斷其是字母字元還是數字字元

#include

int  main()

3樓:匿名使用者

1、使用自 if(scanf("%d",&h)!=1) 來判斷printf("it's not a number!\n");

因為scanf是從快取中讀取輸入的資料如果輸入的不是數字,就會返回0,如果是數字就會返回1;一般人不知道scanf還有返回值,就可以看看標頭檔案中scanf的定義了。

2、例程:

#include

int main()

}//其中fflush(stdin)是清理快取,就像我上面說的scanf是從快取取數的,

4樓:匿名使用者

不能這麼做的,你輸入了不是數字的東西,輸入就已經錯誤了.

應該用字串判斷

#include

bool ok(char s)

return true;//都是是數字返回真}int getval(char s)

return ret;

}void main()

else

printf("input error!please input again!\n") ;

}for(i = 0 ; i < 10 ; i++)printf("%d\n",a[i]) ;}

5樓:

r = scanf("%d", &a[i]) ;

if(r==1) //啥意思嗎??

用isdigit()函式,

isdigit()函式包含在ctype.h標頭檔案中,原型: int isdigit(char c);

用法:#include

功能:判斷字內符c是否容為數字;

具體網上搜一下.

6樓:匿名使用者

#include

#include "string.h"

#include

#include

int main()

}while(!(a>=1&&a<=100));

if(a>b)

printf("too big!\n");

if(a==b)

if(a樓主幫你改了一下容你試試

7樓:

#include

void main()

}for(i = 0 ; i < 10 ; i++)printf("%d\n",a[i]) ;}

8樓:匿名使用者

for(i = 0 ; i < 10 ; )else

printf("input error!please input again!\n") ;

這句話,就死迴圈了,

9樓:匿名使用者

別用scanf,用getch,或者getline

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

10樓:非常可愛

可以使用**進行判斷:

#include

intmain()

return0;

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

intdigit;

printf("pleaseinputainteger\n");

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

if(0==ret)

11樓:四舍**入

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

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

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

12樓:匿名使用者

1 通過getchar讀入一個字元。

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

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

**:int main()

13樓:匿名使用者

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

14樓:匿名使用者

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是控制字元,其他....

15樓:匿名使用者

這個看著簡單的問題,其實涉及的東西不少。由於種種原因, 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

16樓:匿名使用者

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

比如int a = 0;

scanf("%d", &a);

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

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

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

17樓:獅子

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

18樓:匿名使用者

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

19樓:李莞朋順

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

if(g=='c')

滿足這個便是c

注意大小寫

20樓:龍鶴旗柔婉

#include

intmain()

21樓:幻翼高達

需要準備的材料分別有:電腦、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、最後,輸入字母,此時成功判斷了輸入內容為字母。

22樓:鈔潤桓鴻暉

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

intisalpha(int

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

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

c語言中如何判斷輸入是否是數字(並非0到9)

23樓:匿名使用者

這個程式不難寫,我告訴你思路和演算法,你根據這個編寫**就可以了。1.由於你輸入的這一串資料可能都為數字,也可能包含其它字元,所以首先用一字元陣列存放這個字串。

2.用strlen函式計算這個字串的長度,在此基礎上藉助for迴圈或while迴圈實現陣列元素的遍歷。3.

遍歷每一個元素的同時用if語句判斷這個元素的ascii碼所在的範圍是否在48~57之間,如果不在則中止迴圈,輸出判斷結果(即不是數字)。4.如果最後一個元素仍然是數字,則整個字串則為一個大數。

24樓:匿名使用者

利用ascii碼判斷 試試看

25樓:辛思若佟禮

0的ascii

碼好像是48,所以可以利用這個來判斷是否為數字,如果一個字元與48的差不在0到9就不是數字

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

26樓:幻翼高達

需要準備的材料分別有:電腦、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、最後,輸入字母,此時成功判斷了輸入內容為字母。

c語言輸入字元判斷是字母數字還是特殊字元

include include define n 100 main 擴充套件資料 根據ascii碼值判斷即可。由於數字,大小寫字母均分別為連續儲存,所以只需要與對應的最大最小值比較即可確定字元型別。可以根據以下 進行判斷 include int main return 0 判斷輸入字元的方式 由於每...

c語言判斷輸入得數子是幾位數,C語言 判斷一個輸入得數子是幾位數

判斷一個輸入得數子是幾位數的源 如下 includevoid main void count printf 請輸入一串字元,數字 字母皆可 n count void count char c 32 int n 0 while c n getchar n n printf 輸入字元總數為 d n n ...

用c語言編寫程式判斷輸入的正數是否為迴文數

include stdio.h include conio.h int main void while m 0 k for i 0 izhi是否為迴文數 if digit i digit k break 不相等dao 則不是內迴文數,容推出迴圈 if i else printf ld is a hu...