当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 16 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : 同样的代码,结果完全不同(C语言)
帖子发表于 : 2008-03-20 0:54 

注册: 2005-11-16 8:39
帖子: 73
送出感谢: 0 次
接收感谢: 0 次
以下是我自己按照教程范例写的代码:
代码:
#include <stdio.h>
#include <stdlib.h>
main()/*求梯形面积*/
{
   int up,bot,h;/*定义up,bot,h为整型变量*/
   float area;/*定义area为实型单精度变量*/
    up=3;bot=5;h=3;/*分别把3,5,3赋给up,bot,h*/
   area=h*(up+bot)/2;/*右边表达式的值赋给左边的area*/
   printf("area=%f\n",area);/*输出area的值*/
}


和范例不同的地方就是原文没有注明需要调用哪个库文件,而我自己加上了
代码:
#include <stdio.h>
#include <stdlib.h>

这两个库文件

下面是教程中关于这段代码的解释,原文是建立在turbo c的基础上进行讲学的,新手入门其间,似懂非懂,,希望有朋友帮忙解惑,不胜感激!

教程原文说明:

代码:
1.2.1 一个简单的例子

main()/*求梯形面积*/
{
   int up,bot,h;/*定义up,bot,h为整型变量*/
   float area;/*定义area为实型单精度变量*/
    up=3;bot=5;h=3;/*分别把3,5,3赋给up,bot,h*/
   area=h*(up+bot)/2;/*右边表达式的值赋给左边的area*/
   printf("area=%f\n",area);/*输出area的值*/
}


这个C程序可命名为exam1_1.c存入磁盘,下面,我们逐行解释这个C程序.

(1)main()   叫做C程序的主函数.在一个完整的C程序中一定要有一个主函数main(),不惯这个函数放在什么地方,C程序总是从它开始执行.
(2)花括号{},是函数体的界限符.在降到复合语句时,将会看到,花括号可作为复合语句的界限符.
(3)/*与*/之间的内容是注释.在本例中说明这事一个求梯形面积的函数,注释可提高程序的可读性,便于理解.它不影响程序的执行,也不被编译.
(4)int up,bot,h;是变量说明语句,说明up,bot和h是整型(int)变量,它们取整数值.这个说明语句的作用是通知计算机,程序用到三个整型变量,为它们分配存储单元.
(5)float area;也也是变量说明语句,说明变量area是浮点型变量,它通知计算机,程序中用到浮点型变量area,并为其分配存储单元.整型和浮点型,均是C语言中常用的数据类型,关于数据类型,将在第2章中详细介绍.
(6)接下来的两行中出现的=,是赋值符号,也成为赋值运算符,便是把赋值运算符右边的数值或是运算结果赋给其左边的变量所指定的存储单元.习惯上,把赋值运算符左边部分称为左值,右边部分称为右值.
(7)printf()是格式输出函数.它是编译系统中预先编制好的函数,俗称库函数,随着学习的逐步深入,将会见到更多的库函数.

其中%f是转换控制符,它指示双引号外的相应参数,这里是变量area,所需的最少位数,按10进制浮点数输出,其输出位置是%f所处的位置.因此,本例执行后的输出结果是:

area=22.500000

另一个符号\n是换行符,表示碰到该符号就要换行,即在气候还要输出其他信息时,必须另起行.

(8)分号;表示语句结束.C程序中要求每个语句后面要加分号.语句是C程序的执行单位.

此外还要注意C程序书写的小写化,C语言所定义的关键字,转换控制符,控制语句,以及所有库函数用的都是小写字母,我们在用到它们时也必须小写.即C语言是区分大小写字母的.至于每一个程序行,既可只写一个语句,也可写多个语句,只要在每个语句结尾写上分号即可,比较灵活.而在{}之后是不比加任何标点符号的,不惯它是作为函数体的分界符,还是作为复合语句的分界符都一样.


如上,可悲的是我竟然得到的是12.000000,为什么会有这么大的区别呢?因为调用的库文件不对吗?

附上截图一张,盼各位大大能给予解答.


附件:
bad.jpg
bad.jpg [ 74.92 KiB | 被浏览 821 次 ]

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 同样的代码,结果完全不同(C语言)
帖子发表于 : 2008-03-20 3:55 

注册: 2006-03-10 15:10
帖子: 3182
地址: xi'an China
送出感谢: 0 次
接收感谢: 2
引用:
和范例不同的地方就是原文没有注明需要调用哪个库文件,而我自己加上了
代码:
#include <stdio.h>
#include <stdlib.h>

这两个库文件

这两个叫头文件,不叫库文件。

引用:
下面是教程中关于这段代码的解释,原文是建立在turbo c的基础上进行讲学的,新手入门其间,似懂非懂,,希望有朋友帮忙解惑,不胜感激!

这个你大概看看就行了。看不懂的话不妨找本书慢慢来。

引用:
如上,可悲的是我竟然得到的是12.000000,为什么会有这么大的区别呢?因为调用的库文件不对吗?

可悲?难道你认为 (3+5)*3/2. 不等于 12 ??
不要迷信书。


另外, main 前面加上 int
大扩号 } 前面加上一句 return 0;
可以消除编译器的警告。


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-03-20 7:36 

注册: 2005-11-16 8:39
帖子: 73
送出感谢: 0 次
接收感谢: 0 次
谢谢楼上的哥们解惑,我在继续看看~


页首
 用户资料  
 
4 楼 
 文章标题 : 哈哈
帖子发表于 : 2008-03-23 20:16 

注册: 2008-03-14 17:39
帖子: 20
送出感谢: 0 次
接收感谢: 0 次
哈哈 :roll:


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-03-23 20:23 
头像

注册: 2007-02-18 19:33
帖子: 2180
地址: lyric.im
系统: OSX
送出感谢: 0 次
接收感谢: 1
好冷


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-03-24 11:51 
头像

注册: 2006-05-19 9:54
帖子: 1822
地址: Shanghai
送出感谢: 2
接收感谢: 11
写出这个书的人太强大了


_________________
ニンニク入れますか?
x60 with gentoo


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-03-24 12:47 
头像

注册: 2007-11-07 14:41
帖子: 296
地址: 佳木斯
送出感谢: 0 次
接收感谢: 0 次
好冷
书上大错了呗
3*(3+5)/2=12


_________________
Dell 1520
------------------------
Intel Core T7500
1G*2
120G
Nvidia 8600 GT
My BLOG


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-03-31 13:43 
头像

注册: 2006-09-21 14:28
帖子: 2376
送出感谢: 0 次
接收感谢: 0 次
http://www.shuge.org/share/project/gentoo_wiki/index.php?title=%E5%9F%BA%E6%9C%AC%E5%BA%94%E7%94%A8


引用:
编译型语言 C

想入门,有三本书是必看的。
《C 程序设计语言》
《Linux 程序设计》
《Unix 环境高级编程》


_________________
http://lee.youxu.info/


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-05-23 0:24 
头像

注册: 2008-01-10 14:03
帖子: 223
送出感谢: 0 次
接收感谢: 0 次
呵呵,中国人写的这些书还是不要看了,浪费时间!


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2008-05-26 0:13 

注册: 2006-06-21 19:03
帖子: 27
送出感谢: 0 次
接收感谢: 0 次
itux 写道:
呵呵,中国人写的这些书还是不要看了,浪费时间!

深有同感,感慨于在科技方面中国人写的好书太少,市面上现在流传的好书也大概都是老教授写的,年轻的能写出真正的“书”科技类作者可以说凤毛麟角~


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2008-05-26 7:45 

注册: 2008-05-03 17:20
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
想问个弱智问题,他用的是谁么编译器阿,我的C++就只会在终端里编译,有点麻烦,KDEVELOP不会用


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2008-05-26 10:45 
头像

注册: 2007-10-20 11:30
帖子: 1132
送出感谢: 1
接收感谢: 0 次
flyinflash 写道:
http://www.shuge.org/share/project/gentoo_wiki/index.php?title=%E5%9F%BA%E6%9C%AC%E5%BA%94%E7%94%A8


引用:
编译型语言 C

想入门,有三本书是必看的。
《C 程序设计语言》
《Linux 程序设计》
《Unix 环境高级编程》


很有用!谢谢提供。


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2008-05-27 4:24 
头像

注册: 2005-09-27 18:24
帖子: 498
地址: 杭州
送出感谢: 0 次
接收感谢: 0 次
Morain 写道:
itux 写道:
呵呵,中国人写的这些书还是不要看了,浪费时间!

深有同感,感慨于在科技方面中国人写的好书太少,市面上现在流传的好书也大概都是老教授写的,年轻的能写出真正的“书”科技类作者可以说凤毛麟角~

cs方面不要迷信老教授
潭够老吧 c已经垃圾的不行.. 为了说明有书可以更垃圾 他还写了本c++


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2008-05-27 7:53 
头像

注册: 2006-06-18 21:49
帖子: 517
送出感谢: 0 次
接收感谢: 0 次
yangcheng 写道:
Morain 写道:
itux 写道:
呵呵,中国人写的这些书还是不要看了,浪费时间!

深有同感,感慨于在科技方面中国人写的好书太少,市面上现在流传的好书也大概都是老教授写的,年轻的能写出真正的“书”科技类作者可以说凤毛麟角~

cs方面不要迷信老教授
潭够老吧 c已经垃圾的不行.. 为了说明有书可以更垃圾 他还写了本c++

貌似我们老师都 强推荐谭老的书,可我没来没看过.一看那么薄,我直接飘过!


_________________
Time waits for no man!


页首
 用户资料  
 
15 楼 
 文章标题 :
帖子发表于 : 2008-05-27 8:21 
头像

注册: 2007-05-06 8:19
帖子: 7433
送出感谢: 0 次
接收感谢: 4
问题就在printf的输出格式上面(你自己可以控制的)

btw:我
//#include <stdio.h>
//#include <stdlib.h>
也是正常编译与运行


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 16 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译