收藏 分享(赏)

p转c语言速成手册.doc

上传人:无敌 文档编号:616006 上传时间:2018-04-15 格式:DOC 页数:42 大小:131.50KB
下载 相关 举报
p转c语言速成手册.doc_第1页
第1页 / 共42页
p转c语言速成手册.doc_第2页
第2页 / 共42页
p转c语言速成手册.doc_第3页
第3页 / 共42页
p转c语言速成手册.doc_第4页
第4页 / 共42页
p转c语言速成手册.doc_第5页
第5页 / 共42页
点击查看更多>>
资源描述

1、1Pascal 转 C 及 DEV C+ GDB 编译调试介绍路中信息学资料介绍、编辑与整合 .2C 语言速成手册(一):基本数据类型、标准输出、函数 .2语句和语句块 .2注释的写法 .3常用数据类型 .3定义变量 .3定义常量 .4基本数学运算 .4关于字符类型 .5C 语言中的赋值 .5程序员面试题(1 )P35 .5类型转换与“名词动用” .7程序员面试 题(1)P40 .7标准输出 .7函数的定义、返回和调用 .9一个完整的程序代码的构成 .11C 语言速成手册(二):布尔值、条件判断、循环 .12逻辑运算符 .12C 语言的 if 语句 .12程序员面试题(2)P39 .13C 语

2、言的 bool 类型 .14C 语言的 for 循环 .15C 语言的 while 循环 .16程序员面试题(2)P39 .17switch 语句 .17goto 语句 .18C 语言速成手册(三):数组、字符串、结构 .18一维数组的定义、初始化和使用 .18C 语言中的字符串 .20多维数组的定义、初始化和使用 .21结构的定义、初始化和使用 .22C 语言速成手册(四):指针、动态内存分配、标准输入 .24指针的定义 .24取地址与引用 .24动态内存分配 .24指针与结构 .25指针与函数 .26指针与数组 .28标准输入 .30C 语言速成手册(五):其它运算符、文件操作、其它函数

3、.312条件运算符 .31自加、自减 .31其它运算符 .32各种标准输入输出函数 .32内存输入输出操作 .33文件输入输出操作 .33整型上下限 .35常用数学函数 .35常用字符串函数 .36内存操作函数 .37stdlib.h 提供的其它函数 .37利用 assert 帮助调试 .38C 语言速成手册(六):其它问题、后记 .39预处理指令 .39static 声明 .41short 类型和 int 类型的范围 .41对 64 位整型的处理 .41查漏补缺 .42后记 .42资料介绍、编辑与整合C 语言速成手册:Matrix 67(北大中文系 顶尖牛人)程序员面试宝典:孙文达(微软技术

4、顾问,全球 TOP3 讲师)C 语言速成手册(一):基本数据类型、标准输出、函数语句和语句块和 Pascal 一样,C 语言的每条语句以分号结尾。和 Pascal 一样,单词和语句间的空格、回车符对编译没有影响。C 语言的语句块用花括号标识,也就是说字符 相当于 Pascal 的 begin,字符 相当于 Pascal 的 end; 。语句块中最后一条语句末尾的分号不能省略。如果语句块里只有一条语句,语句块的标识可以省略。这就好像 Pascal 代码:for i:=1 to n do3beginwriteln(I Love You);end;里面的 begin 和 end 可以省略一样。注释的

5、写法两种情形被认为是注释。符号/ 的后面(只限一行),以及符号 /* 和 */ 之间(可以跨行)。例如:/* = THIS IS A COMMENT = */ This is a comment. 常用数据类型C | Pascal-+-short | shortintlong | longintlong long | int64unsigned short | byteunsigned int | wordunsigned long | dwordunsigned long long | qwordfloat | realdouble | doublechar | char定义变量定义变量使用

6、这样的格式:类型名 变量名 1, 变量名 2, . , 变量名 n; (,而)变量名的命名规则与 Pascal 相同:只能用大小写字母、数字或下划线,第一个字符不用数字。所不同的是,C 语言中定义的名称要区分大小写。例如,下面的两条语句定义了三个整型变量和一个字符变量。4int a,b,c;char ch;也就是说,不同函数之间的变量不能混用定义在函数外的变量将作为全局变量供后面的函数使用。定义常量为了告诉编译器某个变量不会改变,你可以在变量定义前加一个const。例如,下面的语句定义了一个常数:const int maxn=2000;基本数学运算作用 | C | Pascal-+-+-加 |

7、 + | +减 | - | -乘 | * | *取余 | % | mod关于字符类型C 语言中的字符用一对单引号 标注。例如,A表示字符 A。无法打印或可能产生冲突的字符用反斜杠加一个字符来表示,这叫做转义符。常用转义符如下:n 换行t Taba 响铃“ 双引号 单引号5? 问号 反斜杠因此,表示一个单引号,虽然它看上去像是两个字符。C 语言中的赋值声明变量时后面可以跟一个等号赋初始值。这一点还是不错的。下面的语句都是合法的:int a=3, b=106, c=a+b, d;char ch = c - 0;d = a * b;另:复合赋值 如:i=i+2 i+=2 两者间是等价的。程序员面试题

8、(1)P35面试题 1:What does the following program print?(中国台湾某著名计算机硬件公司 12 月份面试题)P35 页int x=2,y,z;x*=(y=z=5); printf(“%4d“,x);z=3;x=(y=z); printf(“%4d“,x);x=(y=z); printf(“%4d“,x);x=(y printf(“%4d“,x);x=(y printf(“%4d“,x);y=4; x=(y|z); printf(“%4d“,x);x=(y|z); printf(“%4d“,x);面试题 2:What will be the output

9、 of the following code (assume the necessary include files are present)?(下面程序的结果是什么?)中国台湾某著名杀毒软件公司 10 月份面试题 P37int i=3,j=4;i?i+:+j;printf(“%d %dn“,i,j);面试题 3:P37int i=1,j=2;6int k=i+j;printf(“%dn“,k);面试题 4:P38x=x+1, x+=1, x+, 哪个效率最高?为什么?面试题 5:中国台湾某著名 CPU 生产公司 10 月份面试题#define product(x) (x*x)int main

10、(int argc, char *argv)int i=3,j,k;j=product(i+);k=product(+i);printf(“j=%d,k=%dn“,j,k);system(“PAUSE“);return 0;面试题 6:P39int a=5, b=3;!aprintf(“a=%d,b=%dn“,a,b);类型转换与“名词动用”C 语言中,不同类型的变量可以相互赋值,程序将自动转换类型(即使是数字与字符之间)。C 语言中也存在“使动”用法(类似于 Pascal 中使用 int64(a)扩展变量长度的用法)。假如 a 是整型,(double)a 表示“实数版的 a”;假如 ch 是

11、一个字符,(int)ch 就相当于 Pascal 中的 ord(ch)。考虑下面的代码:int a;int b;char c;double d,e;a = z;b = 20.736;(类型转换与提升时,要注意方向,所谓方向是说从 A 种类型可以提升为 B 种类型,反过来却不一定可行)d = a / b;e = (double) a / b;7这段代码中,a 最终被赋值为 122,b 得到的值是 20,而 c 的值则为字符0;d 获得的值为 6.0,而 e 的值是 6.1 。程序员面试题(1)P40下面程序的结果是什么?中国台湾某著名 CPU 公司 10 月份面试题char foo(void)u

12、nsigned int a=6;int b=-20;char c;(a+b6)?(c=1): (c=0);return c;标准输出输出使用 printf 函数。printf 函数的使用方法如下:printf (字符串, 待输出表达式 1, 待输出表达式 2, . , 待输出表达式 n ); C 语言的字符串用一对双引号“ “注明,里面允许有转义符。printf 将把字符串输出到屏幕上。字符串中可以有若干个标识,这些标识帮后面待输出的内容“占一个位置”。常用的标识格式为(c|d|f|e|g),其中 x 表示输出占的宽度,y 表示保留位数;c,d,e,f 四个字母表示输出类型,你需要选择一个。c

13、 表示输出字符,d(也可以用 i )表示输出整数,以 10 进制显示;%5d ,%-5d;此外,%i 还可以读入 8 进制 0、10 进制、16 进制 0xf 表示输出小数,e 用科学计数法表示小数。%10.3eg %-10gu ?printf 后面的参数依次“填入”这些标识。注意 d 和 e,f 不能混用,也就是说,你不能把一个小数输出成整数格式,或把整数输出成小数格式(除非事先转了类型)。8特别地,%表示输出一个百分号。,此种方式可以输出许多其它符号。观察下列代码片段printf (“Welcome to M n“);printf ( “4 + 5 = %dnand 4 - 5 = %dn

14、n“, 4 + 5 , 4 - 5 );int a = 102;printf ( “2 * a = %.5dn“ , 2 * a );printf ( “2 * a = %fn“, (double) 2 * a );printf ( “2 * a = %8dn“ , 2 * a );printf ( “2 * a = %8.5dn“, 2 * a );printf ( “a = %cnn“, a );double b = 7;printf ( “a / b = %fn“, a / b );printf ( “a / b = %en“, a / b );printf ( “a / b = %.9

15、fn“, a / b );printf ( “a / b = %.3fn“, a / b );printf ( “a / b = %8.3fn“, a / b );printf ( “b / a = %.3f%nn“, b / a * 100 );char c = A;printf ( “c = %cn“, c );printf ( “c = %3cn“, c );printf ( “c = %dn“, c );printf ( “%c%c%c%c%c%c%n“,c+12,c+32,c+51,c+49,c+40,c+55,a-35);程序输出的结果为:Welcome to M4 + 5 = 9

16、and 4 - 5 = -12 * a = 002042 * a = 204.0000002 * a = 2042 * a = 00204a = fa / b = 14.571429a / b = 1.457143e+001a / b = 14.571428571a / b = 14.571a / b = 14.571b / a = 6.863%9c = Ac = Ac = 65M函数的定义、返回和调用定义一个函数的格式如下:函数返回类型 函数名( 参数类型 1 参数名 1, 参数类型 2 参数名 2, . , 参数类型 n 参数名 n )函数内容Pascal 中可以 function fun

17、c1(a,b:integer;c:longint):longint; C 中必须 long func1(int a,int b,long c);2.stdbool.h 中的 bool 型不能像 P 一样直接输出,我自己还猜了个 %b.3.随机数讲得很不清楚,但确实比 P 的 randomize 复杂一些。C 中没有过程这一说法,如果某个函数不返回任何数据(相当于 Pascal 中的“过程”),函数返回类型要写成 void。当然你有权保持沉默,不写返回类型,则函数默认返回类型为 int。如果某个函数不带任何参数,参数表一般留空(也可以用一个 void 代替)。为了强调某个参数在整个函数中始终不变

18、,类型前可以标明 const。这一点 C 中特色,常见于指针类型。函数的返回使用下面的语句:return 表达式;执行这条语句将立即终止该函数的运行。下面定义的一个函数可以返回三个数的平均值:double average (double a , double b , double c)double sum=a+b+c;return sum/3;10C 语言也支持函数的内联,方法是在函数返回类型前加 inline。例如:inline double average (double a , double b , double c)double sum=a+b+c;return sum/3;函数的调用

19、方法和 Pascal 一样。如果调用函数所带的参数类型和定义的不一样,程序会自动转换类型。下面的语句合法地调用了刚才定义的函数:num = average( 2, 6.5, 4.23 );有一点不同的是,当所调用的函数不带参数时仍然要写括号,例如:void writeMessage()printf(“Welcome to M“);void output()writeMessage();C 语言同样支持递归调用。由于 C 语言也只能调用前面定义过的函数,因此 C 同样需要类似于向前引用的方法。具体方法是把需要提前引用的函数的第一行复制一份提到前面去。下面的两种做法都是正确的,其中第一种方法允许在

20、 output 函数里调用后面的 average,第二种则允许在这句话后面的所有函数中调用它。void output()double average (double a , double b , double c);printf( “%f“,average( 2, 6.5, 4.23 ) );double average (double a , double b , double c)double sum=a+b+c;return sum/3;double average (double a , double b , double c);void output()printf( “%f“,average( 2, 6.5, 4.23 ) );double average (double a , double b , double c)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 产品手册

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报