标准C程序设计复习题(答案)

上传人:l**** 文档编号:42603291 上传时间:2018-06-02 格式:DOC 页数:10 大小:45.50KB
返回 下载 相关 举报
标准C程序设计复习题(答案)_第1页
第1页 / 共10页
标准C程序设计复习题(答案)_第2页
第2页 / 共10页
标准C程序设计复习题(答案)_第3页
第3页 / 共10页
标准C程序设计复习题(答案)_第4页
第4页 / 共10页
标准C程序设计复习题(答案)_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《标准C程序设计复习题(答案)》由会员分享,可在线阅读,更多相关《标准C程序设计复习题(答案)(10页珍藏版)》请在金锄头文库上搜索。

1、9.22 复习题 9.1 请判断下面语句的对错。 (a)C 函数在其函数名下只能返回一个值。错 (b)C 语言的函数至少要有一个参数。错 (c)自定义函数可以放置在 main 函数之前定义。对 (d)自定义函数可以在 main 函数内部定义。对 (e)自定义函数至少要被调用一次,否则将给出警告信息。不一定:我用 gcc -ansi 实验过, 没有警告信息。 (f)任何名称都可用作函数名。错:至少不能用保留字 (g)只有 void 类型的函数才可有 void 类型的参数。错 (h)当变量的值传递给函数时,将在内存中创建一个备份。 对 (i)不管 main 函数位于什么位置,程序的运行总是从它开始

2、。 对 (j)全局变量在程序的所有代码块和函数中都是可见的。 对 (k)函数可以调用自己。对 (1)不含 return 语句的函数是非法的。错 (m)全局变量不能声明为 auto 变量。对 (n)函数原型必须放置在调用函数之外。错 (o)默认的函数的返回值类型为 int。对 (p)函数原型中使用的变量名必须与函数定义中的相匹配。 错 (q)使用指针进行参数传递时,必须在参数中给参数加前缀符*。 对 (r)使用指针进行参数传递时,函数调用中的实参可以是变量或常量。 错:必须是变量的地 址 (s)将数组传递给函数时,函数调用必须使用不带括号的数组名。 对 (t)将字符串传递给函数时,实参必须是该字

3、符串名,后加括号,括号中为数组的大小。错 9.2 请在空白处填入适当的词。 (a)函数调用中使用的参数称为 。实参 (b)在函数中声明的变量称为 。自动变量 (c)默认地,C 函数返回值的类型为 。int (d)用指针进行参数传递时,参数的变量必须在声明时加前缀 符号。 * (e)在原型声明中,指定 为可选的。参数名 (f) 是指变量实际可用的范围。变量的作用域 (g)调用自身的函数称为 函数。迭代 (h)如果局域变量需要在函数调用之间保持其值,则必须将该变量声明为 。 静态变量 (i) 有助于编译器检查实际变量与形式变量之间的匹配情况。 函数声明 (j)默认地,声明在函数内部的变量为 存储类

4、。自动变量 9.3main 函数是一个自定义函数。它与其他自定义函数的区别是什么? main 函数是 C 语言一个特别的函数。每个程序都必须有一个 main 函数,表明程序运行的起 始点。 9.4 请描述两种给函数传递参数的方法。这两种方法分别在什么时候你更希望喜欢使用。 第一种:用一般数据类型传递:当我们仅仅想希望从函数外部获得参数值时使用; 第二种:用指针进行传递:当我们希望从函数中获得更多的返回值时使用,或者说希望通过 函数来修改某些变量的值时使用。 9.5 何谓原型?为什么说它是必要的? C 程序中的所有函数在使用之前都必须声明,函数声明又被称为函数原形。如果没有函数原形,C 假设函数

5、的返回类型为整形,参数的类型与形式定义相匹配。如果这 些假设有误,那么链接程序将失败。 9.6 请区分以下两者之间的不同。 (a)实参与形参。形参列表声明变量,以接收从调用函数发送来的数据,它们属于函数的内 部变量;实参列表是函数调用时被传递给函数的参数,它们并不属于函数。 (b)全局变量与局部变量。 全局变量的使用范围是从该变量的声明位置开始到程序的末尾为止;局部变量的作用范围是 从该变量的声明位置开始,直到生命他的代码块或函数末尾为止。 (c)自动变量与静态变量。 自动变量是当调用该函数时创建变量,函数退出时自动销毁;静态变量值在程序编译时初始 化一次,以后再也不进行初始化了。 (d)变量

6、的使用范围与可见性。 使用范围确定了程序的哪些区域可以使用该变量;可见性指的是内存变量的可访问性。 (e) 语法错误。 (b)double fun (void) 语法错误:缺少分号。 (c)float fun(x,y,n); 缺少形参的类型声明。 (d) void fun(void,void) 语法错误:缺少分号。 (e)int fun(int a,b); 形参 b 缺少形参的类型声明。 (f)fun(int,float,char); 可能正确:如果 fun 返回的是 int 类型的数据,但编译时也会出 现警告信息。 (g) void fun(int a,int 错误: 正确 (b)doubl

7、e power (double a,int n-l) 错误:1、没有分号;2、函数参数形式错误 int n-l (c) int product(int m ,10) 错误:1、没有分号;2、不能将常量 10 作为形参 (d)double minimum (double x;double y;) 错误:1、没有分号;2、不能使用分号分隔参 数列表 (e)int mul(int x , y) 错误:1、没有分号;2、形参 y 没有定义类型(f)exchange (int*a , int *b) 错误:没有分号 (g)void sum (int a , int b, int .return (c);

8、 错误:函数的类型应该与返回值类型相同,函数的类型应为 int。(b) void abc(int a;int b). 错误:不能使用分号分隔参数列表。(c)void abc(int a, int b)double c =a +b; return(c); 错误:函数的类型应该与返回值类型相同,函数的类型应为 double。(d)void abc(void).return; 正确。(e)int abc(void).return ; 没有语法错误。但因为函数的类型为 int,所以应该返回一个 int 类型的返回值比较好。 9.11 请指出下面函数调用中的错误。 (a)void xyz(); 函数调用

9、时不需写函数类型。 (b)xyz(void); 无参数的函数在调用时不需写 void。 (c)xyz(int x, int y); 函数在调用时不需写参数类型。 (d)xyz(); 正确。 (e)xyz ()+xyz (); 正确。 9.12 如下的函数用于两个浮点数的除法运算。divide (float x ,float y) return (x/y); 下面函数调用的值是什么?(a)divide(10,2) 5 (b)divide(9,2) 4 (c)divide(4.5,1.5) 3 (e)divide(2.0,3.0) 0 9.13 在上面习题中,如果把函数进行如下修改,那么函数调用的

10、结果将是什么? (a) int divide(int , int y) 缺少参数 x,将无法编译通过。若写为 int divide(int x, int y),运行结果为 5, 4, 4, 0。 (b) double divide(float x, float y) 0, 0, 0, 1431655765。 9.14 请指出下面程序的输出结果。int prod (int m, int n); main() int x=10; int y=20 ; int p, q; p=prod(x,y); q=prod(p,prod(x,z ); /z 没有定义,应该为印刷错误,将 z 改为 y。print

11、f(“%d %dn“,p ,q); int prod (int a, int b) return (a*b); 修改后的运行结果为 200 40000 9.15 请指出下面程序的输出结果。void test(int *a); main() int x=50; test( printf(“%dn“, x); void test (int *a) *a=*+50; /应该有印刷错误,可能为*a=*a+50; 修改后的运行结果为 100。 9.16 函数 test 的代码编写如下:int test (int number) int m, n =0; while (number) m = number

12、 % 10; if (m % 2) n = n +1; number = number /10;return (n); 当运行下面语句时,x 和 y 的值为多少?int.x=test (135); 3 int y=test (246); 0 10.16 复习题 10.1 请判断下面语句的对错。 (a)struct 类型在 C 语言中是一种内置的数据类型。错 (b)结构的标记名是可选的。对 (c)结构可以只包含某种数据类型的成员。对 (d)结构变量用于声明含有多个域的数据类型。对 (e)把一个结构变量的内容复制给另一相同类型的结构变量是合法的。对 (f)结构总是通过指针来传递给函数的。错 (g)

13、指针可用来访问结构变量的成员。对 (h)如果结构变量只含有数字类型的成员,可以进行算术操作。错 (i)关键字可 typedef 用于定义一种新的数据类型。错:并不能定义新类型,而仅仅是定义 一个表示已有的数据类型的标识符。 (j)在使用指针 p 访问结构成员时,下面两种表示是等价的:(*p).member_name 和 p-member_name 对 (k)联合的初始化方法可以与结构的相同。错 (l)一个联合可以是另一个联合的成员。对 (m)联合不能作为结构的一个成员。对 (n)数组不能作为结构的一个成员。错 (o)结构中的某个成员本身也可以是一个结构。对 10.2 请在空白处填入适当的词。

14、(a) 可以用来创建己定义数据类型的别名。typedef (b) 就是在某个名字下面的数据项集,其中的每个项共享相同的存储空间。联合 (c)结构名可以看作是 。某种数据类型名 (d)成员选择运算符需要使用一个 来访问结构的成员。. (e)在结构定义中声明的变量称为结构的 。标记符名 10.3 下面语句使用结构标记名 abc 来声明并初始化 struct abc 类型的结构变量。请问哪一 个是正确的?为什么?假设结构 abc 有 3 个成员,分别为 int、float 和 char 类型。 (a)stuct a,b,c; 错 (b)stuct abc a,b,c 错:没有分号 (c)abc x,

15、y,z; 错,没有 stuct 关键字 (d)struct abc a ; 对:定义了一个指向结构 abc 的指针。 (e)struct abc a=; 对 (f)struct abc=b,1+2,3.0, “xyz“ 错 (g)struct abc c=4,5,6; 对(h)struct abc a =4,5.0,“xyz“; 错:少了大括号 10.4 给定下面声明语句:struct abc a ,b,c; 下面哪些语句是合法的? (a)scanf(“%d“, 合法 (b)printf(“%d“, b); 合法 (c)a =b; 合法 (d)a =b+c; 非法(e)if(ab).非法 故合

16、法的语句为 a, b, c。10.5 给定下面声明语句:struct item_bank int number ;double cost ; ; 下面声明 struct item_bank 类型的一维结构数组的语句,哪个是正确?d(a) int item_bank items10; (b) struct items10 item_bank; (c) struct item_bank items(10); (d) struct item_bank items10; (e) struct items item_bank10; 10.6 给定下面声明语句:typedef struct abc char x ;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号