[問題] 判斷是否輸入一正整數 整數後無任意字元
遇到的問題: (題意請描述清楚)
我想要讓USER輸入單一正整數(未限定是幾位數),
如果不是正整數,是
A狀況 浮點數 EX:5.5
B狀況 字元/字串/符號 EX:一/一二三/**
C狀況 整數後加了其他東西 EX:5*/5哀
時,就跳錯誤訊息給USER看。
目前,只能做到AB狀況達成,可是C狀況想不出來要怎麼做,
似乎應該從判斷有無溢位下手?
可是我不知道要怎麼弄QQ
PS 我最後一定要轉成數值,因為這只是我要拿來用在別的程式的一小段東西。
(死腦經堅持要USER輸入單一正整數,不是就不跑的人……)
目前的程式碼:
int main()
{
printf("2010.05.18 white 「判斷輸入值是否為正整數」\n");
int i;
float f;
if(scanf("%f",&f))//判斷是不是數值
{
if(f-(int)f==0)//判斷是不是整數
{
i=f;//丟到整數裡
if(i>=0)//因為前面沒有判斷是不是正整數,所以再加這
printf("%d是整數\n",i);
else
printf("%f不是整數\n",f);
}
else
printf("%f不是整數\n",f);
}
else
printf("%f不是整數\n",f);
printf("判斷結束");
_getch();
return 0;
}
尚未突破的問題:
如果不是正整數,是
C狀況 整數後加了其他東西 EX:5*/5哀
時,就跳錯誤訊息給USER看。
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
DEV-C++
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.124.105.30
推
05/19 20:52, , 1F
05/19 20:52, 1F
→
05/19 20:53, , 2F
05/19 20:53, 2F
→
05/19 20:53, , 3F
05/19 20:53, 3F
→
05/19 20:54, , 4F
05/19 20:54, 4F
我不懂得是"finite state machine"……
還有,後來要怎麼轉回數字資料型別?
→
05/19 20:55, , 5F
05/19 20:55, 5F
→
05/19 20:56, , 6F
05/19 20:56, 6F
推
05/19 20:59, , 7F
05/19 20:59, 7F
→
05/19 21:00, , 8F
05/19 21:00, 8F
推
05/19 21:03, , 9F
05/19 21:03, 9F
→
05/19 21:04, , 10F
05/19 21:04, 10F
→
05/19 21:04, , 11F
05/19 21:04, 11F
→
05/19 21:05, , 12F
05/19 21:05, 12F
→
05/19 21:06, , 13F
05/19 21:06, 13F
→
05/19 21:06, , 14F
05/19 21:06, 14F
※ 編輯: white9cat 來自: 120.124.105.30 (05/19 21:09)
→
05/19 21:07, , 15F
05/19 21:07, 15F
→
05/19 21:08, , 16F
05/19 21:08, 16F
→
05/19 21:09, , 17F
05/19 21:09, 17F
說不限整數位數,是指不管是1位數或是3位數,都能用。
我寫過限1~9,1位數的,方法就是用_getch讀成char再轉int,
可是那樣用不能套在2位數上……
如果是要輸入1~100,有1位數 2位數 3位數可能,就不知道怎麼寫了……
※ 編輯: white9cat 來自: 120.124.105.30 (05/19 21:14)
→
05/19 21:28, , 18F
05/19 21:28, 18F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章