2005-09-24, 11:25 PM | #1 |
註冊會員
|
請教一題C的問題,更正程式的錯誤(我不知道改的對不對)
這題是更正程式的錯誤,但是我想了很久一直想不出來怎麼改
#include stdio.h main() { int num; char ch; float value; printf("Enter two number:"); scanf("%i",num); scanf("%c",ch); value= num/ch; printf("%-6.2f); } 這是我改的,雖然可以執行,但是我不知道程式的原意是什麼, 所以也不知道對不對 #include <stdio.h> #include <stdlib.h> main() { int num; char ch; float value; printf("Enter two number:"); scanf("%i",&num); scanf("%c",&ch); value=num/ch; printf("%-6.2f",value); system("PAUSE"); return 0; } |
送花文章: 4,
|
2005-09-24, 11:40 PM | #2 (permalink) | |
長老會員
|
引用:
另外數字應該用%d才對scanf("%d",&num); 當使用scanf要求使用者輸入時必須傳的是變數的位址,所以必須使用# <參考> |
|
__________________ 地獄變現記 [人身得來不易,願大家能尊重生命--勿傷胎命][好淫者請好自為之吧--割鳥] 南泉禪師道: 「道不屬知,不屬不知。知是妄覺,不知是無記。若真達不疑之道,猶如太虛,廓然蕩豁,豈可強是非邪?」 德山宣鑒禪師: 「如果明白無事,則勿妄求,妄求而得,亦非得也。汝但無事於心,無心於事,則虛而靈,空而妙。若毛端許,言之本末者,皆為自欺。何故?毫氂繫念,三塗業因。瞥爾情生,萬劫羈鎖。聖名凡號,盡是虛聲。殊相劣形,皆是幻色。汝欲求之,得無累乎?」 |
||
送花文章: 5469,
|
2005-09-25, 01:05 AM | #3 (permalink) | |
註冊會員
|
引用:
這題要輸入兩個值,是不是輸入完第一個值後按空白鍵輸入第二個值 不過我覺得好像有點怪怪的,正確要怎麼輸入 我把中間的部份改了一下 printf("input number:"); scanf("%i",&num); printf("input ch:"); scanf("%c",&ch); 可是我在輸入完第一個值後按ENTER之後就直接執行到最後了 是不是哪裡改錯了 |
|
送花文章: 4,
|
2005-09-25, 03:25 AM | #4 (permalink) |
註冊會員
|
#include <stdio.h> //加入<>載入標頭檔預設路徑
#include <stdlib.h> //有些函數存於此標頭檔 main() { int num; int ch; //改成int float value; printf("Enter number:"); scanf("%d",&num); //改成%d 加&運算子 將輸入存入變數num printf("Enter number:"); scanf("%d",&ch); //改成%d 加&運算子 將輸入存入變數num value= (float)num/ch; //型態轉換 printf("%-6.2f",value); //-是靠左對齊 6是輸出字元個數 2是小數點所佔各述 } |
送花文章: 623,
|
2005-09-25, 02:25 PM | #6 (permalink) |
註冊會員
|
我已經寫完了,麻煩大大幫我看一下(還有其他的幾題^^)
http://homelf.kimo.com.tw/dragon_gink_i740/tttt.txt |
送花文章: 4,
|
2005-09-26, 03:15 PM | #7 (permalink) | |
註冊會員
|
引用:
|
|
送花文章: 623,
|
2005-09-26, 09:58 PM | #8 (permalink) |
註冊會員
|
我直接貼出來好了
#include <stdio.h> #include <stdlib.h> main() { char ch; int num; float value; printf("Enter two number:"); scanf("%d\n",&num); scanf("%c",&ch); value=(float)num/ch; printf("%-6.2f",value); system("PAUSE"); return 0; } 輸入一個小寫字母,將其轉變成大寫後印出 #include<stdio.h> #include<stdlib.h> #include<ctype.h> main() { char a; toupper(a); printf("input :"); scanf("%c",&a); printf("input :%c",a=toupper(a)); system("PAUSE"); return 0; } 由鍵盤輸入浮點數 2.5 及整數 3,印出兩者相乘與相除的結果。 #include <stdio.h> #include <stdlib.h> main() { float a,c; int b; printf("input a:"); scanf("%f",&a); printf("input b:"); scanf("%d",&b); printf("a*b=%f\n",a*b); printf("a/b=%f\n",a/b); system("PAUSE"); return 0; } snoopy大大,那個網站是您做的喔,之前在上課時在找資料時看到, 對我受益無窮說,可惜後來回家就找部到了,不過沒想到在這裡找到,真好運^^ 另外怎麼我用Firefox瀏覽時怎麼內容的部份會出現無法連結的問題?? 我用IE看就沒問題,我都是用Firefox在上網說 |
送花文章: 4,
|
2005-09-26, 10:49 PM | #9 (permalink) |
註冊會員
|
第二看執行好像沒錯
#include <stdio.h> #include <stdlib.h> main() { int num1; int num2; float value; printf("Enter two number:"); scanf("%d",&num1); printf("Enter two number:"); scanf("%d",&num2); value=(float)num1/num2; printf("%-6.2f",value); system("PAUSE"); return 0; } #include <stdio.h> #include <stdlib.h> main() { float a,b; printf("input a:"); scanf("%f",&a); printf("input b:"); scanf("%f",&b); printf("a*b=%f\n",a*b); printf("a/b=%f\n",a/b); system("PAUSE"); return 0; } |
送花文章: 623,
|
2005-09-27, 07:09 PM | #10 (permalink) | |
註冊會員
|
引用:
那題我後來想了一下,題目的原義應該是輸入一個整數跟一個字元 再把整數跟字元轉成的ASCII碼相除,不過有個問題,就是一般要是要連續輸入兩個數值時中間不是需要按空白鍵後才輸入第二個值嗎,但是他這題會把空白鍵當作你要輸入的字元,後來我無意間在 scanf("%d",&num);裡加了\n發現就解決了,不過我覺得這好像不太是正確的方法,不知道正確的寫法是如何? |
|
送花文章: 4,
|
2005-09-27, 10:12 PM | #11 (permalink) | |
註冊會員
|
引用:
這樣不知道福不符合你的題意 |
|
送花文章: 623,
|
2005-09-28, 07:04 PM | #12 (permalink) | |
註冊會員
|
引用:
不過我試了一下,最後結果有點怪, 像我輸入100跟字元2(ASCII碼是50)答案應該是2才對 可是答案是22408068.00怪怪的,不知道是什麼問題?? 所以我把%f改成%d答案就比較正常,不過有幾個算出來答案也怪怪的 像32.5跟A(ASCII碼是65)答案是0.7但是應該是0.5 10.5跟字元2(ASCII碼是50)答案是0.22,但是應該是0.21才對 不知道是為什麼? |
|
送花文章: 4,
|
2005-09-28, 10:22 PM | #13 (permalink) | |
註冊會員
|
引用:
因為你輸入的num變數type是整數int 可是你輸入32.5是浮點數 型態不同 資料會遺失 |
|
送花文章: 623,
|
2005-09-29, 02:14 PM | #15 (permalink) |
管理版主
|
scanf 會跟據指定的型態來轉換建盤輸入的資料,所以會出現錯誤的情況
在輸入前最好自行清空變數 要不然在宣告時就應一併填入初始值 看了一下前面 value=(float)num1/num2; 這個應該改成 value=(float)num1/(float)num2; //等於 2.14 否則 當輸入 15 及 7 時 就會被捨去小數點 之後再轉成浮點也沒用 = 2.00 至於您一開始的題目是改正 可以這麼寫 #include <iostream> #include <stdlib.h> using namespace std; int main(int argc, char *argv[]) { float num; int ch; float value; printf("Enter two number:"); scanf("%f %i",&num, &ch); value=num/(float)ch; printf("\n相除等於 %-6.2f",value); system("PAUSE"); return 0; } |
送花文章: 2027,
|