史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   請教一題C的問題,更正程式的錯誤(我不知道改的對不對) (http://forum.slime.com.tw/thread157741.html)

天上天下 2005-09-24 11:25 PM

請教一題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;
}

不知道 2005-09-24 11:40 PM

引用:

作者: 天上天下
這題是更正程式的錯誤,但是我想了很久一直想不出來怎麼改
#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;

<參考>

天上天下 2005-09-25 01:05 AM

引用:

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

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

<參考>

那%i是不是要改成%d :drtyt76h6

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

我把中間的部份改了一下
printf("input number:");
scanf("%i",&num);
printf("input ch:");
scanf("%c",&ch);
可是我在輸入完第一個值後按ENTER之後就直接執行到最後了
是不是哪裡改錯了

snoopy 2005-09-25 03:25 AM

#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 2005-09-25 03:26 AM

這程式只是考你語法熟不熟吧

天上天下 2005-09-25 02:25 PM

我已經寫完了,麻煩大大幫我看一下(還有其他的幾題^^)
http://homelf.kimo.com.tw/dragon_gink_i740/tttt.txt

snoopy 2005-09-26 03:15 PM

引用:

作者: 天上天下
我已經寫完了,麻煩大大幫我看一下(還有其他的幾題^^)
http://homelf.kimo.com.tw/dragon_gink_i740/tttt.txt

網頁無法連結

天上天下 2005-09-26 09:58 PM

我直接貼出來好了


#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在上網說 :mecry:

snoopy 2005-09-26 10:49 PM

第二看執行好像沒錯

#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;
}

天上天下 2005-09-27 07:09 PM

引用:

作者: 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發現就解決了,不過我覺得這好像不太是正確的方法,不知道正確的寫法是如何?

snoopy 2005-09-27 10:12 PM

引用:

作者: 天上天下
大大你第一個是幫我改的嗎?
那題我後來想了一下,題目的原義應該是輸入一個整數跟一個字元
再把整數跟字元轉成的ASCII碼相除,不過有個問題,就是一般要是要連續輸入兩個數值時中間不是需要按空白鍵後才輸入第二個值嗎,但是他這題會把空白鍵當作你要輸入的字元,後來我無意間在
scanf("%d",&num);裡加了\n發現就解決了,不過我覺得這好像不太是正確的方法,不知道正確的寫法是如何?

scanf("%f %c",&a,&c);
這樣不知道福不符合你的題意

天上天下 2005-09-28 07:04 PM

引用:

作者: 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才對
不知道是為什麼?

snoopy 2005-09-28 10:22 PM

引用:

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

不過我試了一下,最後結果有點怪,
像我輸入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是浮點數
型態不同 資料會遺失

天上天下 2005-09-29 01:54 PM

原來是這樣阿^^
謝謝^^ :em03:

mini 2005-09-29 02:14 PM

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;
}


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

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

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1