C语言教程全套 第1章_第1页
C语言教程全套 第1章_第2页
C语言教程全套 第1章_第3页
C语言教程全套 第1章_第4页
C语言教程全套 第1章_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计基础篇2022年6月24日C C语言的发展及特点语言的发展及特点 。C C程序的基本结构和书写风格程序的基本结构和书写风格 。简单的简单的C C程序设计程序设计 。C C程序的上机步骤和程序的上机步骤和Visual C+ 6.0Visual C+ 6.0的的 基本用法基本用法 。C语言程序设计基础篇2022年6月24日1.1 C1.1 C语言的发展及特点语言的发展及特点 1.1.1 C1.1.1 C语言的发展语言的发展使用计算机,必须与计算机进行沟通、交流。使用计算机,必须与计算机进行沟通、交流。计算机语言是人们定的一套与计算机沟通的规则。计算机语言是人们定的一套与计算机沟通的规

2、则。计算机语言分低级语言和高级语言计算机语言分低级语言和高级语言 n机器语言:由数字机器语言:由数字0 0、1 1组合而成。组合而成。n汇编语言:用助记符描述的指令系统。汇编语言:用助记符描述的指令系统。n高级语言:面向过程的语言或称算法语言。高级语言:面向过程的语言或称算法语言。如:如:FortranFortran,BasicBasic,PascalPascal,C C 等等。等等。C语言程序设计基础篇2022年6月24日1.1.C C语言是在语言是在19721972年至年至19731973年间由美国的贝尔实验室的年间由美国的贝尔实验室的M.D.RitchieM.D.Ritchie和和K.T

3、hompsonK.Thompson以及英国剑桥大学的以及英国剑桥大学的M.RichardsM.Richards等为描述和实现等为描述和实现UNIXUNIX操作系统而设计的。操作系统而设计的。 2.2.经进一步改进,至经进一步改进,至19771977年出现了与具体机器无关的年出现了与具体机器无关的C C编编译文本,从而使译文本,从而使C C语言广泛应用,各种机器皆可使用。语言广泛应用,各种机器皆可使用。3.3. 1983 1983年,美国标准化协会年,美国标准化协会(ANSI) (ANSI) 制定了制定了ANSI CANSI C。以以ANSI C ANSI C 为基础:为基础:不同机器有不同版本

4、,尤其是函数均应参考相应的不同机器有不同版本,尤其是函数均应参考相应的机器。机器。 C C语言的编译环境有多种,如:语言的编译环境有多种,如:DOS/WindowsDOS/Windows平台:平台:Borland/Turbo C, Microsoft C Borland/Turbo C, Microsoft C 等等Unix/LinuxUnix/Linux平台:平台:GNU CGNU CC C语言的诞生语言的诞生C语言程序设计基础篇2022年6月24日19871987年,年,ANSI CANSI C公布了新标准公布了新标准87 87 ANSI C ANSI C 5.5.19901990年,国际

5、标准化组织(年,国际标准化组织(International International Standardization OrganizationStandardization Organization,ISOISO)接受了接受了87 87 ANSI CANSI C为为ISO CISO C的标准(的标准(ISO 9899ISO 989919901990)。)。进入二十世纪八九十年代,计算机语言从面向过程转进入二十世纪八九十年代,计算机语言从面向过程转化为面向对象程序设计,可视化多媒体程序设计模化为面向对象程序设计,可视化多媒体程序设计模式的概念得到了推广、普及。式的概念得到了推广、普及。C C语

6、言在发展的同时,语言在发展的同时,也朝着支持面向对象、可视化程序设计语言方向发也朝着支持面向对象、可视化程序设计语言方向发展,如展,如Borland C+Borland C+、Visual C+Visual C+、C+ BuilderC+ Builder等先后问世。等先后问世。C C语言已经成为编写系统软件、应用语言已经成为编写系统软件、应用软件和进行程序设计、教学的重要编程语言,甚至软件和进行程序设计、教学的重要编程语言,甚至许多硬件开发系统也使用许多硬件开发系统也使用C C语言。语言。C C语言已经成为世语言已经成为世界上应用最广泛的计算机语言之一。界上应用最广泛的计算机语言之一。 C语言

7、程序设计基础篇2022年6月24日1.1.2 C1.1.2 C语言的特点语言的特点C C语言既有高级语言的优点,又在很多方面保留语言既有高级语言的优点,又在很多方面保留了低级语言的长处。了低级语言的长处。用用C C语言编写的程序非常简洁。语言编写的程序非常简洁。 C语言只有语言只有3232个关键字,个关键字,9 9种控制语句。种控制语句。autobreakcasecharconstcontinuedefaultdo double else enum extern float for goto if int long register return short signed static siz

8、of struct switch typedef union unsigned void volatilewhileC语言程序设计基础篇2022年6月24日运算符和数据结构丰富运算符和数据结构丰富( (共有共有3434种运算符种运算符) )。除了最基本的、除了最基本的、% %等运算外,还将括等运算外,还将括号、赋值、类型强制转换等均作为运算符。号、赋值、类型强制转换等均作为运算符。除基本的整型、实型、字符型类型外除基本的整型、实型、字符型类型外, , 还有指针还有指针, , 结构体、共同体等类型。结构体、共同体等类型。语法灵活,不太严格。语法灵活,不太严格。如:数据类型可相互通用:整型、字符型

9、通用。如:数据类型可相互通用:整型、字符型通用。C语言程序设计基础篇2022年6月24日允许直接访问物理内存,能实现对位的操作。允许直接访问物理内存,能实现对位的操作。直接访问内存地址,具有直接访问内存地址,具有“ 高高”、“ 低低” 级级语言的功能。语言的功能。生成目标代码质量高,执行效率高。生成目标代码质量高,执行效率高。语言简洁,可移植性好语言简洁,可移植性好可移植性优于汇编语言。可移植性优于汇编语言。C C语言是一种过程化的语言。语言是一种过程化的语言。C C语言有优秀的实现工具。语言有优秀的实现工具。微软公司的微软公司的 Microsoft Visual C+ 6.0Microsof

10、t Visual C+ 6.0(VC6.0VC6.0)和和 BorlandBorland公司的公司的Turbo CTurbo C等。等。 编程集成开发环境(编程集成开发环境(IDEIDE) 。C语言程序设计基础篇2022年6月24日1.2 C1.2 C程序的基本结构和书写风格程序的基本结构和书写风格1.2.1 1.2.1 C C程序的基本结构程序的基本结构 【例【例1.11.1】编写程序在显示器输出一行信息:】编写程序在显示器输出一行信息:Hello, World!#include / /* *文件包含文件包含* */ /main()printf(Hello, World!n); / /* *

11、显示文本显示文本Hello, World! !* */ /程序运行结果如下:程序运行结果如下:Hello World! C语言程序设计基础篇2022年6月24日1.3 1.3 简单的简单的C C程序设计程序设计 【例【例1.21.2】从键盘输入两个整数,输出它们的和。】从键盘输入两个整数,输出它们的和。 #include / /* *文件包含文件包含* */ /int sum(int a,int b) / /* *子函数及其形式参数子函数及其形式参数* */ / int c; / /* *定义局部变量定义局部变量* */ / c=a+b; / /* *计算和计算和* */ / return(c

12、); / /* *返回值返回值* */ / C语言程序设计基础篇2022年6月24日main()/ /* *主函数名主函数名* */ / /* *函数体开始函数体开始* */ /int a,b,c;/ /* *局部变量类型定义局部变量类型定义* */ /printf(输入两个整数输入两个整数:); / /* *屏幕提示信息屏幕提示信息* */ /scanf(%d%d,&a,&b);/ /* *输入两个整数输入两个整数* */ /c=sum(a,b);/ /* *调用计算求和的函数调用计算求和的函数* */ /printf(和和=%dn, c);/ /* *打印总分值打印总分值*

13、 */ / / /* *函数体结束函数体结束* */ /程序运行情况为:程序运行情况为:输入两个整数:输入两个整数:78 96和和=174 C语言程序设计基础篇2022年6月24日通过实例,初步看到通过实例,初步看到C C的程序结构的程序结构1. C程序全部由一个一个的函数构成。程序全部由一个一个的函数构成。至少有至少有且仅有一个主函数且仅有一个主函数main (),也称为主程序,也称为主程序,其内容在其后的一对花括号其内容在其后的一对花括号内,其它函数内,其它函数可被主函数调用或相互调用。其它函数可为可被主函数调用或相互调用。其它函数可为C 函数库中函数,也可为用户定义的函数。函数库中函数,

14、也可为用户定义的函数。C语言程序设计基础篇2022年6月24日2.2.一个函数有两部分组成:一个函数有两部分组成: 1)1)函数的首部,函数的首部,即函数的第一行。包括函数名、函数类即函数的第一行。包括函数名、函数类型、函数参数型、函数参数( (形参形参) )名和参数类型。名和参数类型。 例如例如: int sum(int a,int b): int sum(int a,int b) 2)2)函数体函数体,即函数首部下面的大括弧,即函数首部下面的大括弧 内的部分。内的部分。函数体一般包括:函数体一般包括:n声明部分声明部分:在这部分中定义所用到的变量,如果:在这部分中定义所用到的变量,如果需要

15、,也要对所调用的函数进行声明。需要,也要对所调用的函数进行声明。n执行部分执行部分:有若干个语句组成。:有若干个语句组成。 在某些情况下也可以没有声明部分,甚至可以既在某些情况下也可以没有声明部分,甚至可以既无声明部分,也无执行部分。如:无声明部分,也无执行部分。如:dump()dump() C语言程序设计基础篇2022年6月24日3.3.一个一个C C程序总是从程序总是从mainmain函数开始执行的,函数开始执行的,而不论而不论mainmain函数在整个程序中的位置如何函数在整个程序中的位置如何(main(main函数可以函数可以放在程序最前头,也可以放在程序的最后面,或放在程序最前头,也

16、可以放在程序的最后面,或在一些函数之前,在另一些函数之后在一些函数之前,在另一些函数之后) )。4.4.函数由语句构成,函数由语句构成,语句由基本单词组成语句由基本单词组成 。5.5.C C程序书写格式自由,程序书写格式自由,一行也可以写几个语句,一一行也可以写几个语句,一个语句可以写在多行上。但为了程序的阅读和理个语句可以写在多行上。但为了程序的阅读和理解,解,C C程序书写需按照某些书写规则,稍后将介绍。程序书写需按照某些书写规则,稍后将介绍。C语言程序设计基础篇2022年6月24日每个语句和数据定义的最后必须有一个分号。每个语句和数据定义的最后必须有一个分号。7.7. C语言本身没有输入

17、、输出语句。输入和输出语言本身没有输入、输出语句。输入和输出的操作是由库函数的操作是由库函数scanf和和printf等函数来完成。等函数来完成。 8.8. 可以用可以用“/* */”对对C程序中的任何部分程序中的任何部分作注释;也可用作注释;也可用“/ ” 对对C程序中的一程序中的一行作注释。行作注释。C语言程序设计基础篇2022年6月24日1.2.2 1.2.2 C C程序的书写风格程序的书写风格 1.1. 每一对每一对 上下对齐;上下对齐;2.2. 每一对每一对 都对应于段首和段尾;都对应于段首和段尾;3.3. 每一行只写一条语句;每一行只写一条语句;4.4. 每一对每一对内的语句左对齐

18、;内的语句左对齐;5.5. 不同的语句段采用缩进格式以示区别;不同的语句段采用缩进格式以示区别;6.6. 关键语句要有注释。关键语句要有注释。 C C程序的书写格式完全自由,为便于阅读,程序的书写格式完全自由,为便于阅读,养成良好的程序书写风格。养成良好的程序书写风格。C语言程序设计基础篇2022年6月24日1.3 1.3 简单的简单的C C程序设计程序设计 【例【例1.31.3】求长方形的周长和面积。】求长方形的周长和面积。 n数据数据n输入数据:长、宽输入数据:长、宽n输出数据:周长、面积输出数据:周长、面积n算法算法n周长周长 = (长(长+宽)宽)x 2n面积面积 = 长长 x 宽宽C

19、语言程序设计基础篇2022年6月24日n常量:计算周长算法中的常量:计算周长算法中的“2”n变量:长、宽、周长和面积变量:长、宽、周长和面积n变量需要有名称变量需要有名称n变量名由字母、数字和下划线构成变量名由字母、数字和下划线构成n变量名的第一个字符不能是数字变量名的第一个字符不能是数字n变量需要有类型变量需要有类型n整型变量,用整型变量,用 int 表示表示C语言程序设计基础篇2022年6月24日n长、宽两个变量的名称用长、宽两个变量的名称用a和和bint a;每行定义一个变量每行定义一个变量int b;n周长和面积两个变量的名称用周长和面积两个变量的名称用l和和sint l, s;一一行

20、定义两个变量行定义两个变量C语言程序设计基础篇2022年6月24日n周长计算:周长计算:l = (a+b)*2n面积计算:面积计算:s = a*bn由变量、常量、运算符和括号构成由变量、常量、运算符和括号构成n算术运算符:算术运算符:n加加+ 减减 乘乘 * 除除 /n运算符的优先级:先乘除后加减运算符的优先级:先乘除后加减n等号用于赋值,把右边表达式的值赋给左边的变量等号用于赋值,把右边表达式的值赋给左边的变量C语言程序设计基础篇2022年6月24日int main()/* 定义定义main函数函数 */int a;/* 定义矩形的长度变量定义矩形的长度变量 a*/int b; /* 定义矩

21、形的宽度变量定义矩形的宽度变量 b*/int l, s;/* 定义矩形的周长、面积变量定义矩形的周长、面积变量l和和s */a = 12;/* 给长度赋值给长度赋值12 */b = 8;/* 给宽度赋值给宽度赋值8 */l = (a+b)*2;/* 计算矩形周长计算矩形周长 */s = a*b;/* 计算矩形面积计算矩形面积 */return(0);/* main函数返回函数返回 */代码如下:代码如下:C语言程序设计基础篇2022年6月24日程序中存在的问题程序中存在的问题n变量变量l和和s中得到了计算结果,但是没有输出它们的值中得到了计算结果,但是没有输出它们的值n在程序中增加输出语句在程

22、序中增加输出语句printf(l=%d s=%dn, l, s);nprintf是是C语言的库函数,它的功能是把程序中变量的语言的库函数,它的功能是把程序中变量的值输出到计算机的屏幕上。值输出到计算机的屏幕上。n使用使用printf前,需要在程序头部加入下面的语句前,需要在程序头部加入下面的语句#include C语言程序设计基础篇2022年6月24日#include int main()/* 定义定义main函数函数 */int a;/* 定义矩形的长度变量定义矩形的长度变量 a*/int b; /* 定义矩形的宽度变量定义矩形的宽度变量 b*/int l, s;/* 定义矩形的周长、面积变

23、量定义矩形的周长、面积变量l和和s */a = 12;/* 给长度赋值给长度赋值12 */b = 8;/* 给宽度赋值给宽度赋值8 */l = (a+b)*2;/* 计算矩形周长计算矩形周长 */s = a*b;/* 计算矩形面积计算矩形面积 */printf(“l=%d s=%dn”, l, s);/* 输出结果输出结果 */return(0);/* main函数返回函数返回 */运行结果:运行结果:l=40 s=96代码如下:代码如下:C语言程序设计基础篇2022年6月24日程序中存在的不足程序中存在的不足n在程序中增加输入语句在程序中增加输入语句scanf(%d%d, &a, &

24、amp;b);nscanf是是C语言的库函数,它的功能是从键盘输入数语言的库函数,它的功能是从键盘输入数据,把数据赋给程序中变量。据,把数据赋给程序中变量。n使用使用scanf前,需要在程序头部加入下面的语句前,需要在程序头部加入下面的语句#include C语言程序设计基础篇2022年6月24日#include int main()/* 定义定义main函数函数 */int a;/* 定义矩形的长度变量定义矩形的长度变量 a*/int b; /* 定义矩形的宽度变量定义矩形的宽度变量 b*/int l, s; /* 定义矩形的周长、面积变量定义矩形的周长、面积变量l和和s */scanf(“

25、%d%d”, &a, &b); /* 从键盘输入长、宽从键盘输入长、宽 */l = (a+b)*2;/* 计算矩形周长计算矩形周长 */s = a*b;/* 计算矩形面积计算矩形面积 */printf(“l=%d s=%dn”, l, s);/* 输出结果输出结果 */return(0);/* main函数返回函数返回 */运行结果:运行结果:10 12l=44 s=120代码如下:代码如下:C语言程序设计基础篇2022年6月24日C C语言程序实例语言程序实例 Apache HTTPApache HTTP服务器源代码片段服务器源代码片段#include apr.h#inclu

26、de apr_strings.h#include apr_getopt.h#include apr_general.h#include apr_lib.h#include apr_md5.h#define APR_WANT_STDIO#define APR_WANT_STRFUNC#include apr_want.h #define CORE_PRIVATE#include ap_config.h#include httpd.h#include http_main.h#include http_log.h#include http_config.h#include http_core.h#i

27、nclude http_vhost.h#include apr_uri.h#include util_ebcdic.h#include ap_mpm.h#include mpm_common.h/* WARNING: Win32 binds http_main.c dynamically to the server. Please place * extern functions and global data in another appropriate module. * * Most significant main() global data can be found in http_

28、config.c */ C语言程序设计基础篇2022年6月24日static void show_mpm_settings(void) int mpm_query_info; apr_status_t retval; printf(Server MPM: %sn, ap_show_mpm(); retval = ap_mpm_query(AP_MPMQ_IS_THREADED, &mpm_query_info); if (retval = APR_SUCCESS) printf( threaded: ); if (mpm_query_info = AP_MPMQ_DYNAMIC) pr

29、intf(yes (variable thread count)n); else if (mpm_query_info = AP_MPMQ_STATIC) printf(yes (fixed thread count)n); else printf(non); retval = ap_mpm_query(AP_MPMQ_IS_FORKED, &mpm_query_info); if (retval = APR_SUCCESS) printf( forked: ); if (mpm_query_info = AP_MPMQ_DYNAMIC) printf(yes (variable pr

30、ocess count)n); else if (mpm_query_info = AP_MPMQ_STATIC) printf(yes (fixed process count)n); else printf(non); C语言程序设计基础篇2022年6月24日int main(int argc, const char * const argv) char c; int configtestonly = 0; const char *confname = SERVER_CONFIG_FILE; const char *def_server_root = HTTPD_ROOT; const c

31、har *temp_error_log = NULL; const char *error; process_rec *process; server_rec *server_conf; apr_pool_t *pglobal; apr_pool_t *pconf; apr_pool_t *plog; /* Pool of log streams, reset _after_ each read of conf */ apr_pool_t *ptemp; /* Pool for temporary config stuff, reset often */ apr_pool_t *pcomman

32、ds; /* Pool for -D, -C and -c switches */ apr_getopt_t *opt; apr_status_t rv; module *mod; const char *optarg; APR_OPTIONAL_FN_TYPE(ap_signal_server) *signal_server; AP_MONCONTROL(0); /* turn off profiling of startup */ apr_app_initialize(&argc, &argv, NULL); process = create_process(argc, a

33、rgv); pglobal = process-pool; pconf = process-pconf; ap_server_argv0 = process-short_name;#if APR_CHARSET_EBCDIC if (ap_init_ebcdic(pglobal) != APR_SUCCESS) destroy_and_exit_process(process, 1); #endifC语言程序设计基础篇2022年6月24日 apr_pool_create(&pcommands, pglobal); apr_pool_tag(pcommands, pcommands);

34、ap_server_pre_read_config = apr_array_make(pcommands, 1, sizeof(char *); ap_server_post_read_config = apr_array_make(pcommands, 1, sizeof(char *); ap_server_config_defines = apr_array_make(pcommands, 1, sizeof(char *); error = ap_setup_prelinked_modules(process); if (error) ap_log_error(APLOG_MARK,

35、APLOG_STARTUP|APLOG_EMERG, 0, NULL, %s: %s, ap_server_argv0, error); destroy_and_exit_process(process, 1); ap_run_rewrite_args(process); /* Maintain AP_SERVER_BASEARGS list in http_main.h to allow the MPM * to safely pass on our args from its rewrite_args() handler. */ apr_getopt_init(&opt, pcom

36、mands, process-argc, process-argv); while (rv = apr_getopt(opt, AP_SERVER_BASEARGS, &c, &optarg) = APR_SUCCESS) char *new; switch (c) case c: new = (char *)apr_array_push(ap_server_post_read_config); *new = apr_pstrdup(pcommands, optarg); break; case C: new = (char *)apr_array_push(ap_server

37、_pre_read_config); *new = apr_pstrdup(pcommands, optarg); break;C语言程序设计基础篇2022年6月24日 case d: def_server_root = optarg; break; case D: new = (char *)apr_array_push(ap_server_config_defines); *new = apr_pstrdup(pcommands, optarg); /* Setting -D DUMP_VHOSTS is equivalent to setting -S */ if (strcmp(opt

38、arg, DUMP_VHOSTS) = 0) configtestonly = 1; /* Setting -D DUMP_MODULES is equivalent to setting -M */ if (strcmp(optarg, DUMP_MODULES) = 0) configtestonly = 1; break; /* bad cmdline option? then we die */ if (rv != APR_EOF | opt-ind argc) usage(process); apr_pool_create(&plog, pglobal); apr_pool_

39、tag(plog, plog); apr_pool_create(&ptemp, pconf); apr_pool_tag(ptemp, ptemp); /* Note that we preflight the config file once * before reading it _again_ in the main loop. * This allows things, log files configuration * for example, to settle down. */C语言程序设计基础篇2022年6月24日 ap_server_root = def_serve

40、r_root; if (temp_error_log) ap_replace_stderr_log(process-pool, temp_error_log); server_conf = ap_read_config(process, ptemp, confname, &ap_conftree); if (!server_conf) destroy_and_exit_process(process, 1); if (ap_run_pre_config(pconf, plog, ptemp) != OK) ap_log_error(APLOG_MARK, APLOG_STARTUP |

41、APLOG_ERR, 0, NULL, Pre-configuration failed); destroy_and_exit_process(process, 1); rv = ap_process_config_tree(server_conf, ap_conftree, process-pconf, ptemp); if (rv = OK) ap_fixup_virtual_hosts(pconf, server_conf); ap_fini_vhost_config(pconf, server_conf); apr_hook_sort_all(); if (configtestonly) ap_run_test_config(pconf, server_conf); ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, Syntax OK); destroy_and_exit_process(process, 0)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论