兰州E931阳光网盟

 找回密码
 加入阳光

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: 活动 交友 discuz
查看: 11224|回复: 36

【原创】阳光强军计划-之-C语言描述

[复制链接]
发表于 2005-3-25 18:28:15 | 显示全部楼层 |阅读模式
阳光强军计划-之-C语言描述

作者:左庶

前言

    C语言并不是每一个程序员或计算机工作者必须掌握的技术,但绝对是一个计算机高手的必修课和基本功.

    今天我们学习C语言,并不能帮我们完成任何针对当今流行的工作站(例如microsoft OS)所涉及的开发任务,但是,因为C语言是一门中级语言,语法较其他高级语言(例powerscript、VBS、JPS)非常严谨苛刻,语言体系模块(循环、嵌套、类、对象等)较其他语言又很完整,这无形中,对程序设计人员的要求是非常高的,所以,学习和掌握它对每一个信息工作者是非常重要的,关键是在于学习C语言能够培养一个计算机工作者的“严谨·细心·完美”职业情操,千万不要小看这六个字,如果在我们的设计工作中缺少它,你的程序设计工作会步履艰难,就像开启一辆经常发生维修故障不能上阵的战车,战斗力是强大的,但,战斗水平却是低级的,无奈,战斗结果是失败的。学习和掌握好C语言会为我们学习其他程序设计语言扫平障碍,让我们在解决程序设计问题时游刃有余。

    在接下来,我会以我的业余时间,连编撰这部教材,谨以此书献给热情、善良的“风的色彩”和技术工作组的同事们。希望她能不断进步,朝自己的理想大胆的迈进。

声明:如果我在此书中将到任何错误的概念,请各位高手积极纠正,我在这里先谢谢你们啦。

第一章 C语言概述

1.1 我是C,我不难

例1.1

main()

{

printf("Hello,fengdesecai!Hello,Shine!\n");

}

执行这个程序,会在屏幕上输出一条信息
Hello,fengdesecai!Hello,Shine!

其中,main表示“主函数”,没一个C程序都必须有一个main函数。函数体由大括号{}括起来。本例中主函数内只有一个输出语句,printf是C语言中的输出函数。双引号内的字符串原样输出。“\n”是换行符。即在输出“Hello,fengdesecai!Hello,Shine!”后会车换行。请注意,没一条C语言后必须有一个分号。

例1.2

main()               
//这个程序是求两数之和。以后,我会经常用到“// or /*内容*/”这样的符号,在语言里,这叫作注释,计算机不会执行它,主要起说明作用,我们也可以在调试程序的时候,把暂时不用的语句前用/* …… */引起来,或者,在它前面加//即可,试试看。
{

int topic,bbs,sum;
//这时定义变量
topic=7270;bbs=44935;/*这时赋值语句*/
sum=topic+bbs;
printf("阳光总帖数为%d,其中主题%d,回贴%d\n",sum,topic,bbs);

}

    本程序的作用是求两个整数的和。在这条程序中,我多次使用拉注释,注释是用来给人看的,它对整个编译不起丝毫作用。在第3行,我们声明拉变量sum,bbs,topic都是整型(int)变量。第4行是多条赋值语句,使topic,bbs的值分别等于7270和44935,在第5行中使sum的值为topic+bbs.第6行%d使输入输出的“格式符”,表示把后面三个变量的值分别按“十进制整数”输出




因有急事外出,先写这些,待续
发表于 2005-4-7 15:36:26 | 显示全部楼层
呵呵~这么多,辛苦了啊!~

不过敬告所有的朋友:小心消化不良哦~慢慢来~:P
发表于 2005-3-25 19:25:49 | 显示全部楼层
    谢谢你,在百忙之中还不忘教我这个笨学生。

    非常感动,送花一束,以表心意!

    我会努力的!
 楼主| 发表于 2005-3-26 23:25:05 | 显示全部楼层
在执行输出时,此位置上代以一个十

进制整数值。printf函数中括弧内最左端sum是要输出的变量,现在它的值是52205(即7270+44935)。因

此屏幕上输出的信息为

阳光总帖数为52205,其中主题7270,回贴44935

例1.3

main()

{

int a,b,c;
//声明部分,定义变量
scanf("%d,%d",&a,&b);
//输入变量a和b的值
c=max(a,b);
//调用max函数,将得到的支赋给c
printf("max=%d",c);
//输出c的值

}

int max(int x,int y)
//定义max函数,函数值为整型,形式参数x,y为整型
{

int z;
//max函数中的声明部分,定义本函数中得到的变量z为整型
if (x>y) z=x;
else z=y;
return(z);
//将z的值返回,通过max带回调用处
}

本程序包括两个函数:主函数main和被调用函数max.max函数的作用是将x和y中较大者的值赋给变量

z.return语句将z的值返回给主调函数main.返回值是通过函数名max带回到main函数的调用处。main函数

中的scanf是“输入函数”的名字(scanf和printf都是C语言提供的标准输入输出函数)。程序中scanf的

作用是输入a和b的值。&a和&B中的“&”的含义是“取地址”,关于这些函数的具体使用,我们以后再说



    main函数中第4行为调用max函数,在调用时将实际参数a和b的值分别传送给max函数中的形式参数x和

y。经过执行max函数得到一个返回值(即函数中的z),此时,z的值就是函数的值,函数的值就是c的值。

然后输出c的值。运行程序,屏幕上会得到以下结果

7270,44935回车
max=44935

在这一部分,我们会发现如下几点(重要的):

1、c程序是由函数构成的。一个 c程序至少包含一个main函数。所以,函数是c程序的基本单位。程序的

所有工作都是由函数完成的。
2、在程序中的=叫作“赋值”,而不是“等于”,请用心理解他们的差别。
3、函数的基本组成:
函数的首部,即函数的第一行。包括函数名、函数类型、函数属性、函数参数(形参)名、参数类型。

例如1、3中的例子max函数的首部为
int         max       (int             x,          int             y)
函数类型、函数名、函数参数类型、函数参数名、函数参数类型、函数参数名

函数参数可以没有,如main()
{}中的内容称为函数体。
函数一般包括“声明部分”和“执行部分”
4、每个语句结尾必须有分号;
例如:sum=a+b;
5、可以使用注释
/*……*/
//

FAQ:
1、c语言的构成是什么?
2、c语言的基本单位是什么?
3、参照本部分,编写程序,输出以下信息
*************************
      阳光万岁
*************************
4、编写程序,输入you、i、he,3个值,输出其中最大者。


第二章 程序的灵魂-算法

略,太简单拉,简而言之,就是最有效的程序设计方案,在程序设计之前,我们要先构思一个算法,好的算法,编码量小,使用效率高,不好的算法,费时费工,得不偿失。

第三章                数据类型、运算符、表达式

啊~~人困心乏,改日戏说,待续
发表于 2005-3-27 02:00:06 | 显示全部楼层
爱死你了。。。。

一次别写太多了。。。。

我希望看到少而精的。。。嘿嘿。。。。

谢谢死。。。。。
发表于 2005-3-27 09:39:14 | 显示全部楼层
    是,老师,我会完成好您布置的每一项作业。
发表于 2005-3-27 22:49:13 | 显示全部楼层
晕啊,我简直就是C语盲...想学...可又不懂...晕死啊.....
 楼主| 发表于 2005-3-28 18:08:49 | 显示全部楼层

3、1        c语言的数据类型

c语言的数据结构是以数据类型形式出现的。c的数据类型:

数据类型包括基本类型、构造类型、指针类型、空类型。

基本类型包括整型、字符型、实型(浮点型),其中实型分为单精度型、双精度型。

构造类型包括数组类型、结构体类型、共用体类型。


c语言中数据常有常量和变量之分。它们分别属于以上这些类型。

程序中用到的所有数据必须指定其数据类型。


3.2        常量、变量

3.2.1 常量和符号常量

常量,即在程序中永远不会发生改变的值。

例3.1        符号常量的使用

#define EVERYDTOPIC 50

main()

{

int sumtopic,time;

time = 365;

sumtopic = EVERYDTOPIC * time;

printf("sumtopic=%d",sumtopic);

}

程序中用#define 命令行定义EVERYDTOPIC 代表常量50,此后,在程序中的所有地方出现的EVERYDTOPIC

都代表50,不会发生任何改变。

试着自己推理一下程序的结果。

这种一个标识符代表一个常量的,称为符号常量,即标识符形式的常量。符号常量绝不等同于变量,不能

再被赋值。

习惯上,符号常量使用大写,变量使用小写,表示区别。也体现了一个程序员的专业素质。

使用符号常量的好处:

1、含义清楚
2、在需要改变一个常量时,有移花皆木之效

3.2.2        变量

待续
发表于 2005-3-28 22:29:51 | 显示全部楼层
    明白了,不过也有一些问题,等你再次上课时,我会问你的。
 楼主| 发表于 2005-3-29 11:24:30 | 显示全部楼层
其值可以改变的量称为变量。

和其他语言一样,用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为

标识符(identifier)。

c语言规定的标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。下面

列出的是合法的标识符,也是合法的变量名:

un,advan,_topic,Japan,programer_name,FBI_1_3,LINUX,jiang_jie

下面是不合法的标识符和变量名:

Shine.S,#213,3Day,a<5

注意:c语言里,大写字母和小写字母是完全不同的两个标识符,也是完全不同的两个变量。

变量必须先定义后使用。

3.3        整形数据

3.3.1        整形常量的表示方法

整形常量即整常数。C整常数可用以下三种形式表示:

1》        十进制整数。如123,-456,0.
2》        八进制整数。以0开头的数是八进制整数,如0123则表示八进制整数123,即是十进制83。
3》        十六进制整数。以0x开头的数是16进制数。如0x123,代表16进制数123,即十进制数291。-

0x12等于十进制数-18。

3.3.2        整型变量

1.整形数据在内存中的存放形式

    数据在内存中是以二进制形式存放的。如果定义了一个整型变量bbs:
int bbs;
bbs=10;
十进制数的的二进制形式为1010,在c编译系统中,每一个整型变量在内存中占2个字节。

下面,是bbs在内存中的存放示意图:

bbs        00000000 00001010

实际上,数值是以补码(complement)表示的。一个正数的补码和其原码的形式相同。上图就是用补码形

式表示的。如果数值是负,在内存中是如何表示呢?这里我们有一个方法来解决这个问题:将该数的绝对

值的二进制形式,按位取反再加1。例如求-10的补码,

1》.取-10的绝对值10

2》.10的绝对值的二进制形式

0000000000001010

3》.取反

1111111111110101

4》.再加1得

1111111111110110

由此可知,整数的16位中,最左边的一位是表示符号的,该位为0,表示数值为正,反之,为负。

2.整型变量的分类

主要分为以下3类整型变量:

1》基本整型,以int表示
2》短整型,以short int表示,简化short
3》长整型,以long int表示,简化long

一个int的取值范围在-32768~32767间

除此以外,整型变量还分为有符号型和无符号型,为了定义它们,可以根据你的需要在变量前加signed

or unsigned,例如

signed int
unsigned int

当然,signed是可以省略的,因为,系统默认没有符号定义的数据类型,皆为有符类型,它与无符的区别

在于,有符支持正负,而无符只支持正。因为,在系统中,无符省去了内存中的用以记录符号的补码空间

,所以,无符号存储的正整数值可以更大一些,具体如下图所示
类型                  空间(bit)                 取值范围
int                        16                -32768~32767
unsigned int                16                0~65535
short                        16                -32768~32767
unsigned short                16                0~65535
long                        32                -2147483648~2147483647
unsigned long                32                0~4294967295

3.整型变量的定义及使用



4.整形数据的溢出

    一个int型的变量的最大允许值为32767,如果再加1,会出现什么情况?

例3.3        整形数据的溢出

main()
{
int a,b;
a=32767;
b=a+1;
printf("%d,%d",a,b);
}

运行结果为

32767,-32768

点精:从此可以看出,c的语法比较灵活,往往出现副作用,而系统有不给出“出错警告”,要靠程序员

的细心和经验来保证结果的正确。

试想一下解绝此问题的方法?

3.3.3        整形常量的类型

待续

您需要登录后才可以回帖 登录 | 加入阳光

本版积分规则

小黑屋|手机版|Archiver|兰州E931阳光网盟 ( 陇ICP备05001119号 )

GMT+8, 2021-3-1 19:04 , Processed in 1.123544 second(s), 18 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表