C 练习题答案

发布 2021-05-09 10:29:28 阅读 2235

一.基本概念与基础知识自测题。

3.1 程序阅读题。

3.1.1 设有说明:

int a=3, b=100;

下面的循环语句执行 (1) 次,执行后a、b的值分别为 (2) 、3) 。

while(b/a>5)

假定a=10,b=4,c=5,下列语句的执行结果分别是 (1) 和 (2) 。

1) cout<答案:

4.1.7下列程序的输出结果分别为 (1) 和 (2) 。

#include<>

int a,b;

void f(int j)

void main()

答案:1)i=2 j=3 m=3 n=6

i=3 j=3 m=4 n=9

a=3 b=2

#include<>

float sqr(float a)

float p(float x,int n)

答案:2)in-process:x=2 n=13

in-process:x=2 n=6

in-process:x=2 n=3

in-process:x=2 n=1

in-process:x=2 n=0

**递归,共五层,f是回归时产生:

xn f4.2 简答题。

4.2.1 函数的实参和形参怎样对应?实参和形参数目必须一致吗?什么情况下可以不同?

答:实参和形参的个数和排列顺序应一一对应,并且对应参数应类型匹配(赋值兼容),当有缺省参数时可以不同。

4.2.2 函数和内联函数的执行机制有何不同?定义内联函数有何意义?又有何要求?

答:内联函数的调用机制与一般函数不同,编译器在编译过程中遇到inline时,为该函数建立一段**,而后在每次调用时直接将该段**嵌入到调用函数中,从而将函数调用方式变为顺序执行方式,这一过程称为内联函数的扩展或内联。内联函数的实质是牺牲空间来换取时间。

因inline指示符对编译器而言只是一个建议,编译器也可以选择忽略该建议,内联函数只适用于功能简单,**短小而又被重复使用的函数。函数体中包含复杂结构控制语句,如switch、复杂if嵌套、while语句等,以及无法内联展开的递归函数,都不能定义为内联函数,即使定义,系统也将作为一般函数处理。

4.2.3 全局变量和全局静态变量的区别在**?为什么提倡尽量使用局部变量?

答:有static修饰的全局变量只能在定义它的文件中可见,在其他文件中不可见,而非静态的全局变量则可以被其他程序文件访问,但使用前必须用extern说明。

局部变量具有局部作用域使得程序在不同块中可以使用同名变量。这些同名变量各自在自己的作用域中可见,在其它地方不可见。所以提倡尽量使用局部变量。

4.2.4 函数重载的作用是什么?满足什么条件的函数才可以成为重载函数?重载函数在调用时是怎样进行对应的?

答:函数重载可以定义几个功能相似,而参数类型不同使用相同的函数名的函数,以适应不同情况下自动选用不同函数进行操作。函数重载的好处在于,可以用相同的函数名来定义一组功能相同或类似的函数,程序的可读性增强。

在定义重载函数时必须保证参数类型不同,仅仅返回值类型不同是不行的。

当某个函数中调用到重载函数时,编译器会根据实参的类型去对应地调用相应的函数。匹配过程按如下步骤进行:

1)如果有严格匹配的函数,就调用该函数;

2)参数内部转换后如果匹配,调用该函数;

3)通过用户定义的转换寻求匹配。

第二章 c++基础知识习题。

2.1 判断下列标识符的合法性。

sin book 5arry _name example2.1 main

1 class_cpp a3 x*y my name

答:合法的:sin book _name main class_cpp a3

非法的:5arry example2.1 $1 x*y my name

2.2 假定有下列变量:

int a=3,b=5,c=0;

float x=2.5,y=8.2,z=1.4;

char ch1=’a’,ch2=’5’,ch3=’0’,ch4;

求下列表达式的值,以及运算后表达式所涉及的各变量的值。

x+(int)y%ax=z*b++,b=b*x,bch4=ch3-ch2+ch1

int(y/z)+(int)y/(int)z !(a>b)&&c&&(x*=y)&&b++

ch3||(b+=a*c)||c++ z=(a<<2)/(b>>1)

答:x+(int)y%a 值为:4.5

x=z*b++,b=b*x,b++ 值为:42,x为7,b为43

ch4=ch3-ch2+ch1 值为:’\

int(y/z)+(int)y/(int)z 值为:13

(a>b)&&c&&(x*=y)&&b++ 值为:0,b为5 注:只要出现一个false右边的不再做。

ch3||(b+=a*c)||c++ 值为:1,c为0 注:只要出现一个true,右边不再做。

z=(a<<2)/(b>>1) 值为:6

2.3 判断下列哪些是常量,哪些是变量。

china" const int n=10; int m=5; 'a' char ch='a'

C练习题 答案

一 填空。1 c语言规定,在一个源程序中main函数的位置可以任意 2 c语言中的标识符只能由三种字符组成,它们是数字 字母和下划线 3 表达式18 4 sqrt 4.0 8值的数据类型为双精度 4 当a 3,b 2,c 1时,表达式f a b c的值是 0 5 在c语言中,char型数据在内存中的...

C 练习题答案

c 练习题。一 填空题。1 在c 中,函数的参数有两种传递方式,它们是值传递和地址或指针或引用传递 2 在公有继承的情况下,基类数据成员在派生类中的访问权限保持不变 3 描述命题 a小于b或小于c 的表达式为 ac b c 的值是 0 6 面向对象的程序设计有四大特征,它们是抽象 封装 继承 多态 ...

C 高级编程练习题

1.函数声明和函数定义有什么区别?答 1 函数声明是函数的原型,强调函数如何被使用,不包含函数的实现 2 函数定义给出函数的实现 2.const char p1 char const p2 的区别。答 1 const位于星号的左侧,const用来修饰指针所指向的变量,即指针指向为常量 2 const...