C程序设计语言 1 导言.doc_第1页
C程序设计语言 1 导言.doc_第2页
C程序设计语言 1 导言.doc_第3页
C程序设计语言 1 导言.doc_第4页
C程序设计语言 1 导言.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

导言:主要是通过实际的程序概要的介绍C语言。1.1入门-#include main()printf(hello, worldn);-n 表示换行符,printf函数中, 只能用 n 表示换行符。如果用程序的换行代替 n,例如:printf(hello, world);C编译器将会产中错误信息。注:如果 后的字符不在 转义字符中, 则其行为是未定义的。1.2 变量与算术表达式使用公式 = (5/9)(-32)打印下列华氏与摄氏温度对照表:0-1720-640460158026100371204814060160711808220093220104240115260126280137300148-#include main()int fahr, celsius;int lower, upper, step;lower = 0;upper = 300;step = 20;fahr = lower;while(fahr = upper)celsius = 5 * (fahr-32) / 9;printf(%dt%dn, fahr, celsius);fahr = fahr + step;-风格:建议每行只写一条语句, 并在运算符两边各加上一个空格字符。注意:表达式先写乘5在除以9,原因是整形除法的舍位操作, 5/9经截取所得为0;问题:1、输出的数不是右对齐, 结果不美观;2、 整型算术运算, 结果不太精确;1.3 for语句for语句比较适合初始化和增加步长都是单条语句并且逻辑相关的情形。1.4 符号常量将“幻数”改为符号常量表达, 增加可读性, 便于修改。-#include #define LOWER 0#define UPPER 300#define STEP 20main()float fahr;for(fahr = LOWER; fahr = UPPER; fahr = fahr + STEP)printf(%3.0ft%6.1fn, fahr, (fahr-32)*(5.0/9.0);-1.5 字符输入/输出标准库提供了一次读/写一个字符的函数,其中最简单的是getchar和putchar两个函数;借助于getchar和putchar两个函数, 可以在不了解其他输入/输出知识的情况下编写出数量惊人的有用代码;许多程序只不过是这里所讨论程序原型的扩充版本。1.5.1 文件复制-#include main()int c;while(EOF != (c = getchar() )putchar(c);-为什么c 是 int型:定义函数int getchar(void);函数说明getchar()用来从标准输入设备中读取一个字符。然后将该字符从unsigned char转换成int后返回。在声明变量c的时候, 必须让它大到足以存放getchar函数返回的任何值。C除了要能存储任何可能的字符外 还要能存储文件结束符EOF,所以声明为int。EOF具体值是什么并不重要, 只要它与任何char类型不同即可。1.5.2 字符统计-#include main()long nc;nc = 0;while(getchar() != EOF)+nc;printf(n%ldn, nc);-1.5.3 行计数-#include main()int c, nl;nl = 0;while(c=getchar() != EOF)if(c = n)+nl;printf(%dn, nl);-1.5.4 单词计数用于统计行数、单词数与字符数;这里对单词的定义比较宽松, 是任何不包含空格、制表符或换行符的字符序列。-#include #define IN 1 /in word#define OUT 0 /out of wordmain()int c, nl, nw, nc, state;state = OUT;nl = nw = nc = 0;while(c = getchar() != EOF)+nc;if(c = n)+nl;if(c = | c = t | c = n)if(state = IN)putchar(n);state = OUT;else if(state = OUT)state = IN;+nw;putchar(c);printf(%d %d %dn, nl, nw, nc);-1.6 数组统计各个数字、空白符及其他字符出现的次数-#include main()int c, i, nwhite, nother;int ndigit10;nwhite = nother = 0;for(i = 0; i = 0 & c = 9)+ndigitc-0;else if(c = | c = t | c = n)+nwhite;else+nother;printf(digit =);for(i = 0; i 10; +i)printf( %d, ndigiti);printf(, white space = %d, other = %dn,nwhite, nother);-1.7 函数 & 1.8 参数-传值调用-#include int power(int, int);main()int i;for(i=0; i0; -n)p = p * base;return p;-在C语言中, 所有函数参数都是“通过值”传递的。也就是说, 传递给被调用函数的参数值存放在临时变量中, 而不是存放在原来的变量中。传值调用的利大于弊。在被调用的函数中, 参数可以看做是便于初始化的局部变量, 因此额外的使用变量更少, 这样程序可以更紧凑简洁。1.9 字符数组程序:读入一组文本行, 并把最长的文本行打印出来。算法的基本框架:While(还有未处理的行)If(该行比已处理的最长行还要长)保存该行保存该行长度打印最长的行-#include #define MAXLINE 1000intgetline(char line, int maxline);voidcopy(char to, char from);main()int len = 0;/ 当前行长度int max = 0;/ 目前为止发现的最长行的长度char lineMAXLINE;/ 当前输入行char longestMAXLINE;/ 用于保存最长的行while(len = getline(line, MAXLINE) != 0)if(len max)max = len;copy(longest, line);if(max 0)printf(nmaxlen = %d, maxline = %sn, max, longest);return 0;intgetline(char line, int maxline)int c, i;i = 0;while(c = getchar() != EOF &c != n & i maxline-1)linei+ = c;if(c = n)linei+ = c;linei = 0;return i;voidcopy(char to, char from)int i;for(i=0; (toi=fromi) != 0; +i);-1.10 外部变量与作用域-外部变量在程序执行期间一直存在, 而不是在函数调用时产生、在函数执行完毕时消失。voidcopy() 与 void copy(void)的区别:为了与老版本的C语言程序兼容,ANSI C语言把空参数看成老版本C语言的声明方式, 并对参数表不再进行任何检查。 在ANSI C中,如果要声明空参数表,则必须使用关键字void进行显示声明。定义(define) 与 声明(declaration)的区别:“定义”表示创建变量或分配存储单元,而“声明”指的是说明变量的性质, 但并不分配存储单元。外部变量尽少使用, 使函数失去通用性。-本章小结:已经对C语言的传统核心部分进行了介绍。借助于这些少量的语言元素,已经可以编写出相当规模的有用的程序。附:1、char、int、float的内存分配(eclipse)-#include #include int main(void)char ch = A;int ia = 33333;float fa = 14.5;printf(0x%x, %cn, &ch, ch);printf(0x%x, %dn, &ia, ia);printf(0x%x, %3.1fn, &fa, fa);return EXIT_SUCCESS;-ch: 十进制:65十六进制:0x41字符:A地址: BFFFE480 :3 ia: 十进制:33333十六进制:0x8235地址: BFFFE470 :C-F fa: 十进制:14.5十六进制:0xe地址: BFFFE470 :8-B Address 0 - 3 4 - 7 8 - B C - F BFFFE470 25BE1300 2CE5FFBF 00006841 35820000 BFFFE480 00B66141 A0E4FFBF F8E4FFBF 9C5E1200 BFFFE490 A07C6200 20840408 F8E4FFBF 9C5E1200 BFFFE4A0 01000000 24E5FFBF 2CE5FFBF 10886200 BFFFE4B0 00000000 01000000 01000000 00000000 BFFFE4C0 F41F2500 A07C6200 00000000 F8E4FFBF BFFFE4D0 7C7211FB BDC8FC44 00000000 00000000 BFFFE4E0 00000000 F0046200 CD5D1200 C07F6200 发现:ia的内存分布,起始地址为35 小端字节序;Fa:14.5(浮点分布) 内存分布为 00006841;32位浮点数的格式为:从最高位开始,数符S(1位), 阶码E(8位), 尾数M(23位)。S 0-正、1-负;E = e+127, e为真值;(14.5)B = (1110.1)D = (1.1101 * 2)D数符S = 0;阶码E = e + 127 = 3 + 127 = (1000 0010)B ;尾数M = 1101 .;32位 空间 : 0 10000010 1101.即 0x4168

温馨提示

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

评论

0/150

提交评论