史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2005-09-24, 11:25 PM   #1
天上天下
註冊會員
 
天上天下 的頭像
榮譽勳章

勳章總數
UID - 3073
在線等級: 級別:1 | 在線時長:8小時 | 升級還需:4小時
註冊日期: 2002-12-06
VIP期限: 2005-12
文章: 89
精華: 0
現金: 1 金幣
資產: 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, 收花文章: 1 篇, 收花: 1 次
回覆時引用此帖
舊 2005-09-24, 11:40 PM   #2 (permalink)
長老會員
榮譽勳章
UID - 548
在線等級: 級別:59 | 在線時長:3787小時 | 升級還需:53小時級別:59 | 在線時長:3787小時 | 升級還需:53小時級別:59 | 在線時長:3787小時 | 升級還需:53小時級別:59 | 在線時長:3787小時 | 升級還需:53小時級別:59 | 在線時長:3787小時 | 升級還需:53小時級別:59 | 在線時長:3787小時 | 升級還需:53小時級別:59 | 在線時長:3787小時 | 升級還需:53小時級別:59 | 在線時長:3787小時 | 升級還需:53小時級別:59 | 在線時長:3787小時 | 升級還需:53小時
註冊日期: 2002-12-06
住址: 桃園
文章: 8606
現金: 1491 金幣
資產: 1183995 金幣
預設

引用:
作者: 天上天下
這題是更正程式的錯誤,但是我想了很久一直想不出來怎麼改
#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;
}
'&'的意思表示傳址(位址),而不是傳值(數值)
另外數字應該用%d才對scanf("%d",&num);

當使用scanf要求使用者輸入時必須傳的是變數的位址,所以必須使用&num;

<參考>
__________________
地獄變現記
[人身得來不易,願大家能尊重生命--勿傷胎命][好淫者請好自為之吧--割鳥]
南泉禪師道:
道不屬知,不屬不知。知是妄覺,不知是無記。若真達不疑之道,猶如太虛,廓然蕩豁,豈可強是非邪?」
德山宣鑒禪師:
「如果明白無事,則勿妄求,妄求而得,亦非得也。汝但無事於心,無心於事,則虛而靈,空而妙。若毛端許,言之本末者,皆為自欺。何故?毫氂繫念,三塗業因。瞥爾情生,萬劫羈鎖。聖名凡號,盡是虛聲。殊相劣形,皆是幻色。汝欲求之,得無累乎?」
不知道 目前離線  
送花文章: 5469, 收花文章: 5341 篇, 收花: 24549 次
回覆時引用此帖
舊 2005-09-25, 01:05 AM   #3 (permalink)
註冊會員
 
天上天下 的頭像
榮譽勳章

勳章總數
UID - 3073
在線等級: 級別:1 | 在線時長:8小時 | 升級還需:4小時
註冊日期: 2002-12-06
VIP期限: 2005-12
文章: 89
精華: 0
現金: 1 金幣
資產: 1 金幣
預設

引用:
作者: 不知道
'&'的意思表示傳址(位址),而不是傳值(數值)
另外數字應該用%d才對scanf("%d",&num);

當使用scanf要求使用者輸入時必須傳的是變數的位址,所以必須使用&num;

<參考>
那%i是不是要改成%d

這題要輸入兩個值,是不是輸入完第一個值後按空白鍵輸入第二個值
不過我覺得好像有點怪怪的,正確要怎麼輸入

我把中間的部份改了一下
printf("input number:");
scanf("%i",&num);
printf("input ch:");
scanf("%c",&ch);
可是我在輸入完第一個值後按ENTER之後就直接執行到最後了
是不是哪裡改錯了
天上天下 目前離線  
送花文章: 4, 收花文章: 1 篇, 收花: 1 次
回覆時引用此帖
舊 2005-09-25, 03:25 AM   #4 (permalink)
註冊會員
 
snoopy 的頭像
榮譽勳章
UID - 33737
在線等級: 級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時
註冊日期: 2003-02-02
VIP期限: 2011-06
住址: 台南共和國
文章: 1831
精華: 0
現金: 12744 金幣
資產: 12834 金幣
預設

#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是小數點所佔各述
}
snoopy 目前離線  
送花文章: 623, 收花文章: 392 篇, 收花: 1288 次
回覆時引用此帖
舊 2005-09-25, 03:26 AM   #5 (permalink)
註冊會員
 
snoopy 的頭像
榮譽勳章
UID - 33737
在線等級: 級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時
註冊日期: 2003-02-02
VIP期限: 2011-06
住址: 台南共和國
文章: 1831
精華: 0
現金: 12744 金幣
資產: 12834 金幣
預設

這程式只是考你語法熟不熟吧
snoopy 目前離線  
送花文章: 623, 收花文章: 392 篇, 收花: 1288 次
回覆時引用此帖
舊 2005-09-25, 02:25 PM   #6 (permalink)
註冊會員
 
天上天下 的頭像
榮譽勳章

勳章總數
UID - 3073
在線等級: 級別:1 | 在線時長:8小時 | 升級還需:4小時
註冊日期: 2002-12-06
VIP期限: 2005-12
文章: 89
精華: 0
現金: 1 金幣
資產: 1 金幣
預設

我已經寫完了,麻煩大大幫我看一下(還有其他的幾題^^)
http://homelf.kimo.com.tw/dragon_gink_i740/tttt.txt
天上天下 目前離線  
送花文章: 4, 收花文章: 1 篇, 收花: 1 次
回覆時引用此帖
舊 2005-09-26, 03:15 PM   #7 (permalink)
註冊會員
 
snoopy 的頭像
榮譽勳章
UID - 33737
在線等級: 級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時
註冊日期: 2003-02-02
VIP期限: 2011-06
住址: 台南共和國
文章: 1831
精華: 0
現金: 12744 金幣
資產: 12834 金幣
預設

引用:
作者: 天上天下
我已經寫完了,麻煩大大幫我看一下(還有其他的幾題^^)
http://homelf.kimo.com.tw/dragon_gink_i740/tttt.txt
網頁無法連結
snoopy 目前離線  
送花文章: 623, 收花文章: 392 篇, 收花: 1288 次
回覆時引用此帖
舊 2005-09-26, 09:58 PM   #8 (permalink)
註冊會員
 
天上天下 的頭像
榮譽勳章

勳章總數
UID - 3073
在線等級: 級別:1 | 在線時長:8小時 | 升級還需:4小時
註冊日期: 2002-12-06
VIP期限: 2005-12
文章: 89
精華: 0
現金: 1 金幣
資產: 1 金幣
預設

我直接貼出來好了


#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, 收花文章: 1 篇, 收花: 1 次
回覆時引用此帖
舊 2005-09-26, 10:49 PM   #9 (permalink)
註冊會員
 
snoopy 的頭像
榮譽勳章
UID - 33737
在線等級: 級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時
註冊日期: 2003-02-02
VIP期限: 2011-06
住址: 台南共和國
文章: 1831
精華: 0
現金: 12744 金幣
資產: 12834 金幣
預設

第二看執行好像沒錯

#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;
}
snoopy 目前離線  
送花文章: 623, 收花文章: 392 篇, 收花: 1288 次
回覆時引用此帖
舊 2005-09-27, 07:09 PM   #10 (permalink)
註冊會員
 
天上天下 的頭像
榮譽勳章

勳章總數
UID - 3073
在線等級: 級別:1 | 在線時長:8小時 | 升級還需:4小時
註冊日期: 2002-12-06
VIP期限: 2005-12
文章: 89
精華: 0
現金: 1 金幣
資產: 1 金幣
預設

引用:
作者: snoopy
第二看執行好像沒錯

#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;
}
大大你第一個是幫我改的嗎?
那題我後來想了一下,題目的原義應該是輸入一個整數跟一個字元
再把整數跟字元轉成的ASCII碼相除,不過有個問題,就是一般要是要連續輸入兩個數值時中間不是需要按空白鍵後才輸入第二個值嗎,但是他這題會把空白鍵當作你要輸入的字元,後來我無意間在
scanf("%d",&num);裡加了\n發現就解決了,不過我覺得這好像不太是正確的方法,不知道正確的寫法是如何?
天上天下 目前離線  
送花文章: 4, 收花文章: 1 篇, 收花: 1 次
回覆時引用此帖
舊 2005-09-27, 10:12 PM   #11 (permalink)
註冊會員
 
snoopy 的頭像
榮譽勳章
UID - 33737
在線等級: 級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時
註冊日期: 2003-02-02
VIP期限: 2011-06
住址: 台南共和國
文章: 1831
精華: 0
現金: 12744 金幣
資產: 12834 金幣
預設

引用:
作者: 天上天下
大大你第一個是幫我改的嗎?
那題我後來想了一下,題目的原義應該是輸入一個整數跟一個字元
再把整數跟字元轉成的ASCII碼相除,不過有個問題,就是一般要是要連續輸入兩個數值時中間不是需要按空白鍵後才輸入第二個值嗎,但是他這題會把空白鍵當作你要輸入的字元,後來我無意間在
scanf("%d",&num);裡加了\n發現就解決了,不過我覺得這好像不太是正確的方法,不知道正確的寫法是如何?
scanf("%f %c",&a,&c);
這樣不知道福不符合你的題意
snoopy 目前離線  
送花文章: 623, 收花文章: 392 篇, 收花: 1288 次
回覆時引用此帖
舊 2005-09-28, 07:04 PM   #12 (permalink)
註冊會員
 
天上天下 的頭像
榮譽勳章

勳章總數
UID - 3073
在線等級: 級別:1 | 在線時長:8小時 | 升級還需:4小時
註冊日期: 2002-12-06
VIP期限: 2005-12
文章: 89
精華: 0
現金: 1 金幣
資產: 1 金幣
預設

引用:
作者: snoopy
scanf("%f %c",&a,&c);
這樣不知道福不符合你的題意
我怎麼沒想到可以這樣寫,而且這樣寫也比較簡略^^

不過我試了一下,最後結果有點怪,
像我輸入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, 收花文章: 1 篇, 收花: 1 次
回覆時引用此帖
舊 2005-09-28, 10:22 PM   #13 (permalink)
註冊會員
 
snoopy 的頭像
榮譽勳章
UID - 33737
在線等級: 級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時
註冊日期: 2003-02-02
VIP期限: 2011-06
住址: 台南共和國
文章: 1831
精華: 0
現金: 12744 金幣
資產: 12834 金幣
預設

引用:
作者: 天上天下
我怎麼沒想到可以這樣寫,而且這樣寫也比較簡略^^

不過我試了一下,最後結果有點怪,
像我輸入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才對
不知道是為什麼?

因為你輸入的num變數type是整數int
可是你輸入32.5是浮點數
型態不同 資料會遺失
snoopy 目前離線  
送花文章: 623, 收花文章: 392 篇, 收花: 1288 次
回覆時引用此帖
舊 2005-09-29, 01:54 PM   #14 (permalink)
註冊會員
 
天上天下 的頭像
榮譽勳章

勳章總數
UID - 3073
在線等級: 級別:1 | 在線時長:8小時 | 升級還需:4小時
註冊日期: 2002-12-06
VIP期限: 2005-12
文章: 89
精華: 0
現金: 1 金幣
資產: 1 金幣
預設

原來是這樣阿^^
謝謝^^
天上天下 目前離線  
送花文章: 4, 收花文章: 1 篇, 收花: 1 次
回覆時引用此帖
舊 2005-09-29, 02:14 PM   #15 (permalink)
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:96 | 在線時長:9669小時 | 升級還需:128小時級別:96 | 在線時長:9669小時 | 升級還需:128小時級別:96 | 在線時長:9669小時 | 升級還需:128小時級別:96 | 在線時長:9669小時 | 升級還需:128小時級別:96 | 在線時長:9669小時 | 升級還需:128小時級別:96 | 在線時長:9669小時 | 升級還需:128小時
註冊日期: 2002-12-07
文章: 13252
精華: 0
現金: 26245 金幣
資產: 3024055 金幣
預設

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;
}
mini 目前離線  
送花文章: 2000, 收花文章: 7958 篇, 收花: 26750 次
回覆時引用此帖
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 07:28 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1