| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 713 人关注过本帖
标题:想請教幾個非常基礎的問題,謝謝!
只看楼主 加入收藏
no_use
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2013-5-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:18 
想請教幾個非常基礎的問題,謝謝!
程序代码:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
    int i=2, j=3;
    double k;
    
    k = 2/3;
    printf("2/3 = %f\n", k);
    
    k = 2/3.;
    printf("2/3. = %f\n", k);
    
    system("PAUSE");
    return 0;
}

問題一:
第一條算式,由於算式是以 int 來計算,結果是 0,以 %f 的格式輸出,所以是 0.000000
第二條算式,多了一 .,結果精準度得以延伸至小數點後
請問這一 .,是否代表算式會以 float 的格式計算呢?

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

程序代码:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
    float F, C;
    
    printf("請輸入攝氏溫度:");
    scanf("%f", &C);
    
    F = 9/5 * C + 32;
    printf("你所輸入的攝氏溫度,轉為華氏溫度為:%.2f\n", F);
        
    system("PAUSE");
    return 0;
}

問題二:
以我理解,運算子在同一優先權的情況下,是由左至右計算,但「F = 9/5 * C + 32」在程式中並不是這樣計算~
例如:如我輸入 37,程式計算結果是 69;如我輸入 38,程式計算結果是 70,這顯示程式只是將「C + 32」並輸出~
如我將算式改成「F = (9/5 * C) + 32」,結果一樣~
只有將算式改成「F = C * 9/5 + 32」 ,才能計算出正確答案~
請問,是我理解有誤,還是程式有誤呢?

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

程序代码:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
    int x=10, y=20, z=30;
        
    x=y%z;
    printf("%d\n", x);
    
    system("PAUSE");
    return 0;
}

問題三:
請問,為何計算結果,x = 20 呢?
在求餘數的運算中,如 y 比 z 細,那求出的值就等於 y 的值嗎?

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

程序代码:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
    int x=13, y=5;
    printf("x/y = %f\n", x/y);
    
    system("PAUSE");
    return 0;
}

問題四:
13/5=2.6,若以 int 計算,該是 2 吧;若以 float 計算,該是 2.600000 吧~
可以計算結果是 0.000000,請問何解呢?

謝謝各位!
2013-06-10 22:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你看什麽教材沒解釋這些問題?

授人以渔,不授人以鱼。
2013-06-10 22:52
no_use
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2013-5-12
收藏
得分:0 
以下是引用TonyDeng在2013-6-10 22:52:19的发言:

你看什麽教材沒解釋這些問題?

同時在看三本書,都是台灣書來~
找不到答案,唯有上來問......

或許,有好的書籍可以推薦嗎?謝謝。
2013-06-10 22:56
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:5 
程序代码:
1.
   2/3 = 0,所有0.000000
   2/3. 不是0             注意3现在是浮点数
2.
如  3 * 5 / 73 / 7 * 5是一样?
3.    20 % 30 难道不是等于20?
4.浮点数和整数的字节数不同,如0000 xxxxx(浮点数)
                                  xxxxx(整数)
这么一对齐,后面的精确不到.所有是0


仰望星空...........不忘初心!
2013-06-10 23:00
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:0 
台湾用的繁体字?

仰望星空...........不忘初心!
2013-06-10 23:01
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
看繁体字看到好头晕的说。。。。

学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-10 23:02
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:5 
问题一:
  k = 2/3.;
    printf("2/3.0 = %f\n", k);最好改为这样!!个人觉得是!

问题二:
 F = 9.0/5 * C + 32同上!

问题三:
y比z小,除数是0;余数是20!!
问题四:int/int结果是int型,会省略小数!同上!

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-06-10 23:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
看你的文字是香港的,看臺灣書。臺灣的書解釋得更加詳細,你沒認真看吧?

C的表達式結果視運算數據的類型而定,參與運算的若全部是整型,則結果也必然是整型,若其中有一個(或以上)是浮點數,則結果也是浮點數。3和3.的區別,就是後者視爲浮點數(不強制指明類型的浮點數是double型,不是float型,除非你用3.0F指定是float)。x/y的運算,由你定義x和y變量時确定,兩個都是int,則x/y也是int。

最後,不要依賴所謂的運算優先級,你是人,用自己的明確的方式寫出所希望的運算要求——用括號!

授人以渔,不授人以鱼。
2013-06-10 23:07
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:0 
....厉害!

仰望星空...........不忘初心!
2013-06-10 23:08
no_use
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2013-5-12
收藏
得分:0 
先感謝各位對我這個超新手有這樣的耐性!
我不逐一回覆了~

對,我是來自香港的,所以才用繁體字,但又不太習慣用書面語,所以一眼就被看穿我用繁體字又不是台灣人吧......

對於求餘數的概念清楚多了~

沃恩,int/int结果是int型,会省略小数,請問為何 13/5 的答案不是 2 呢?

TonyDeng,你說的我明白了,概念上是知道的,但一到運作上就忘了,9/5,整天也以為答案是 1.8,其實在 C 中以 int 運算,答案是 1,就是一下子記了......
我亦有試過改算式改成「F = (9/5 * C) + 32」,用括號的,當然,現在明白了問題出在哪了~


到最後,問題四還是不明白,不好意思......
2013-06-10 23:26
快速回复:想請教幾個非常基礎的問題,謝謝!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028768 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved