《C语言程序设计》问题答疑材料
一、常见问题总结
1. 判断字符串a是否大于b,应当使用?
库函数strcmp(),或者自己编写相应的函数比较,主要是字符串从左往右依次比较相应位置的字符大小。
2. 一个C程序的执行是从什么开始?什么结束?
从main函数的第一行开始,到main函数最后一行结束。因为一个程序有且只有一个main函数,其他函数都是在main函数里面调用执行的。
3. C语言中用于结构化程序设计的三种基本结构是什么?
顺序结构、选择结构、循环结构
4. 指向函数的指针是什么意思?
指向函数的指针叫“函数指针”,是一个是指针变量。C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是一致的。
5. 循环语句中的break和continue有何区别?
break 用于跳出循环,执行循环体的下一条语句,而continue 只是结束本次循环,然后还要判断条件,看看能不能继续下一次循环!
6. C语言有哪些数据类型以及这些数据类型进行混合运算时遵循什么原则?
数据类型包括:int,double,float,bool,char,struct,enum和union;混合运算时要保持类型一致,因而往往需要转换变量的数据类型,低级的数据类型要向高级类型转换!
7. 函数的嵌套调用和递归调用有什么不同?
嵌套调用的函数不能是本身,递归调用的函数是本身。
8. 传递地址和传递变量的区别?
C语言中没有“变量传递”浮点型变量float的概念,应该是“形参变量向实参变量的值传递”。
(1)、在C语言中,所有非数组形式的数据实参都是以值传递的形式调用,在值传递的过程中,被调用函数的形式参数被视为该函数的局部变量,即在内存的堆栈 中开辟空间以存放由主调函数放进来的实参的值,从而成为了实参的一个拷贝。所以被调用函数不能修改作为实参的实际变量的值,而只能修改传递给他的那份备 份。
(2)、而在地址传递过程中,被调函数的形参虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址,被调函数对 形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参 变量。
(1)、在C语言中,所有非数组形式的数据实参都是以值传递的形式调用,在值传递的过程中,被调用函数的形式参数被视为该函数的局部变量,即在内存的堆栈 中开辟空间以存放由主调函数放进来的实参的值,从而成为了实参的一个拷贝。所以被调用函数不能修改作为实参的实际变量的值,而只能修改传递给他的那份备 份。
(2)、而在地址传递过程中,被调函数的形参虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址,被调函数对 形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参 变量。
9. C语言中输入输出是通过函数完成的?
C提供的标准输入输出函数!
10. 如何才能更好地掌握C语言程序设计?
学习C语言程序设计是一个积累的过程,从书的开头对最简单的函数的介绍开始了解C语言,
然后进一步深入变量的声明、数据类型等等,看的时候要思考书中的程 序运行的每一步会得到什么结果,你是否完全理解书上的程序例子,如果不懂说明相关知识你还没有掌握,同时要多上机编程练习,可以自己照着书上的程序运行, 然后再做其他练习,总之多练多思考,只看是不会学懂的!
11. 表达式18/4*sqrt(4.0)/8值的数据类型是什么?
取最长的数据类型,即为浮点型!
12. 怎样才能学好C语言?不会英语可以学习吗?
编程和英语完全是两码事,虽然表面上看上去都是用26个字母在拼写,但实际上编程的语法和英语的语法也完全没关系,命令也就是那么几个,跟英语单词比起来实在是少太多了,编程教材也都是中文的,所以英语不好也能学习编程。当然会英语编程肯定事半功倍的!
13. 整型变量int与short int 有什么区别?
short是16位,int最少是16位,32位平台上int一般是32位。
14. 若函数调用语句为f(a,b,f(a+b,a-b,b));,则函数f的参数个数是多少?
三个,只看该函数括号内逗号间隔的参数!
15. 在C语言中逗号和实点有啥区别?
句号“.”是结构体成员运算符,优先级非常高;
逗号“,”构成逗号表达式,简单说就是隔开两个表达式,优先级最低!
逗号“,”构成逗号表达式,简单说就是隔开两个表达式,优先级最低!
16. 如何实现实现自定义数据类型?想定义一个占用128位的数据类型,数据类型占用位数可以自定义,如何实现,代码怎么写?
根据C语言提供的数据类型和结构体等知识,可以自己定义一个结构体,使其内部各成员总体所占的位数为128即可,定义方法参见结构体相关知识!
17. 在C 语言中,指针类型属于构造类型对吗?
指针类型不属于构造类型,C语言提供的数据类型包括基本数据类型、 构造数据类型、指针类型和空类型。
18. 将高级语言编写的程序翻译成目标程序的程序是( )?
a、解释 b、编译 c、汇编 d、二进制
a、解释 b、编译 c、汇编 d、二进制
正确为B选项!
19. C语言规定:在一个源程序中,main函数的位置?
main的位置没有固定要求!
20. switch语句的最后一个分支可以不要break语句吗?
尽管switch语句的最后一个分支不一定需要break语句,但最好还是在switch语句的每个分支后面加上break语句,包括最后一个分支。这样 做的主要原因是:你的程序很可能要让另一个人来维护,他可能要增加一些新的分支,但没有注意到最后一个分支没有break语句,结果使原来的最后一个分支 受到其后新增分支的干扰而失效。在每个分支后面加上break语句将防止发生这种错误并增强程序的安全性。此外,目前大多数优化编译程序都会忽略最后一条 break语句,所以加入这条语句不会影响程序的性能。
21. C语言里的&&是什么意思!?
逻辑与运算操作符!
22. C语言变量的定义和声明有什么不同?
定义和声明间的最主要的区别就是变量是否被分配内存!
变量在定义时被分配内存,并且变量可以指定一个初始化的值。变量只能在这个程序中定义一次。声明在该程序中指定了变量的类型和名称。定义也是一种声明:当我们定义一个变量时,我们声明了它的名字和类型。
变量在定义时被分配内存,并且变量可以指定一个初始化的值。变量只能在这个程序中定义一次。声明在该程序中指定了变量的类型和名称。定义也是一种声明:当我们定义一个变量时,我们声明了它的名字和类型。
23. C语言程序的执行过程是怎样的呢?
1) 编辑(在相应软件下编写程序代码)
2) 编译(成目标程序文件.obj)
3) 链接(成可执行程序文件.exe)
4) 运行(可执行程序文件)
如果编译过程中出错,还需要调试(debug),然后再重复2-4步!
24. 现有流行的高级语言有哪些?汇编语言算不算高级语言呢?
流行最广泛的有C,其他还有C++,Java,PHP,JavaScript,Ruby,Python,delphi等;汇编不算高级语言!
25. C语言的主要用途是什么?它和其他高级语言有什么不同?
C语言的用途相当广泛,其应用基本上是偏底层的,对效率要求高的,需要跟操作系统大量地直接打交道的,比如网络通信,多媒体,数据采集传输,信息安全,嵌 入式,图形图像处理,模式识别等等。这实际也是应用方面C与其他高级语言之间所不同的地方。另外,语言本身的特点上,C有丰富的数据类型,尤其是指针,是 其他语言所不具备的!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论