[問題] c的定義問題

看板C_and_CPP (C/C++)作者 (綠豆)時間13年前 (2012/08/12 11:36), 編輯推噓3(3016)
留言19則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) dev-c 問題(Question): 第一次發問 麻煩了.. 我這程式是要輸入字母(反正不是純數字就是了)的時候 會吐出跟你輸入一樣的字母 而輸入數字的時候 則會顯示你之前總共輸入過幾次字母這樣 但我這邊有個問題 我程式裡面記算次數的變數k 如果定義成 int k 輸出的字母和計算都會錯 double k 字會對 計算會錯 static double k 記算會對 可是只會輸出第一個字母 我不太懂之間的關連欸 可以請版上前輩們解惑一下嗎... 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdio.h> #include <stdlib.h> #include <ctype.h> //先設計一個可以輸出輸入了什麼的函式 (當b = 0) void d( char *a, int b ) { if( b == 0 ) { printf("\noutput: %s\n", a) ; } } int main(void) { int x ; double k = 0 ; char a ; //這邊設計一個迴圈可以重複輸入 while(1) { printf("input :") ; //給定a的值 scanf("%s", &a) ; //判斷a是數字或字母 x = isdigit(a) ; //使用函數 d( &a, x) ; //跑一次回圈記1次 k++ ; //當輸入數字 ( x != 0) if ( x != 0 ) { //這次輸入不算 所以扣1 k = k - 1 ; //輸出k printf("\nloop time(s): %.0f", k) ; } printf("\n") ; } system("pause") ; return 0 ; } 補充說明(Supplement): 感謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.202.182 ※ 編輯: doratofu 來自: 140.116.202.182 (08/12 11:37) ※ 編輯: doratofu 來自: 140.116.202.182 (08/12 11:39)

08/12 11:50, , 1F
你可以試著自行解釋一下你的每一行程式在做什麼
08/12 11:50, 1F

08/12 11:50, , 2F
你這支程式是有些地方不太對勁, 但和你的問題只有間接相關
08/12 11:50, 2F

08/12 11:51, , 3F
把那些不對勁的地方改掉之後 或許問題自動就不見了...
08/12 11:51, 3F

08/12 11:51, , 4F
要你自己解釋程式是讓你更容易發現不對勁的地方在哪裡
08/12 11:51, 4F
ㄜ...請問L大是這個意思嗎 @@? ※ 編輯: doratofu 來自: 140.116.202.182 (08/12 12:03)

08/12 13:03, , 5F
對也不對, 因為我其實是在說有幾行你寫的程式所做的事
08/12 13:03, 5F

08/12 13:03, , 6F
並不完全是你現在註解裡寫說你想要做的事
08/12 13:03, 6F

08/12 13:04, , 7F
這種地方才是我所說的"不太對勁"的地方
08/12 13:04, 7F

08/12 13:09, , 8F
我要你自行解釋的意思是要你自己去發現這種不對勁
08/12 13:09, 8F

08/12 13:09, , 9F
稍微引導一下好了, 那個地方是關於變數 a 的
08/12 13:09, 9F
我是有覺得我main裡面的a 應該也要改成指標....吧? 不過因為這是我誤解了題目才出現的東西 等我這次作業寫完會在認真看一次指標的...

08/12 15:50, , 10F
32=c
08/12 15:50, 10F
sor... s大的推文對我而言實在太magic了... ※ 編輯: doratofu 來自: 140.116.202.182 (08/12 16:20)

08/12 16:40, , 11F
題外話,可以試著將名稱取個有意義的
08/12 16:40, 11F
OK 謝謝指點

08/12 19:33, , 12F
先查查 scanf 用法,你用錯了
08/12 19:33, 12F

08/12 19:34, , 13F
另外 k 如果是輸入次數的話,怎麼看都應該用整數 (int)
08/12 19:34, 13F

08/12 19:34, , 14F
甚至是無號整數(unsigned int) 怎麼會用 double?
08/12 19:34, 14F

08/12 19:36, , 15F
還有為什麼是用無窮迴圈? 你打算程式什麼時候停下來?
08/12 19:36, 15F
我問題有說 因為用int會全部都錯 所以我這邊才用double.. &然後我沒有打算要停.. 至於scan我會再去查查 感謝指點 ※ 編輯: doratofu 來自: 140.116.202.182 (08/12 20:48)

08/12 21:16, , 16F
呃... 我有看到前面那段 但我想說的是 你的問題很明顯
08/12 21:16, 16F

08/12 21:16, , 17F
不會是出在資料型態問題
08/12 21:16, 17F

08/12 21:18, , 18F
要想想是不是邏輯有問題 或是函式弄錯 不要亂猜
08/12 21:18, 18F

08/12 21:48, , 19F
08/12 21:48, 19F
ok~ 感謝您 ※ 編輯: doratofu 來自: 140.116.202.182 (08/13 00:03)
文章代碼(AID): #1G9oJRuO (C_and_CPP)
文章代碼(AID): #1G9oJRuO (C_and_CPP)