C语言程序设计 第3版 第8章 函数
- 格式:pptx
- 大小:1.62 MB
- 文档页数:39


第8章 函数习题
A卷
1. 单项选择题
(1)C 语言总是从 函数开始执行。 A
A. main B. 处于最前的 C.处于最后的 D. 随机选一个
(2)函数在定义时,省略函数类型说明符,则该函数值的类型为 。A
A. int B. float C. long D. double
(2)以下 函数,真正地没有返回值。 B
A. int a(){int a=2;return (a);} B. void b(){printf("c");}
C. int a(){int a=2;return a;} D. 以上都是
(3)在 C 语言中,有关函数的说法,以下正确的是 。 A
A. 函数可嵌套定义,也可嵌套调用 B. 函数可嵌套定义,但不可嵌套调用
C. 函数不可嵌套定义,但可嵌套调用 D. 函数不可嵌套定义,也不可嵌套调用
(4)以下函数调用语句中,含有实参的个数为 。C
fun((2,3),(4,5+6,7));
A. 1 B. 2 C. 5 D. 6
(5)函数调用可以在 。 D
A. 函数表达式中 B. 函数语句中 C. 函数参数中 D. 以上都是
(6)被调函数返回给主调函数的值称为 。C
A. 形参 B. 实参 C. 返回值 D. 参数
(7) ,可以不进行函数类型说明。 D
A. 被调函数的返回值是整型或字符型时 B. 被调函数的定义在主调函数定义之前时
C. 在所有函数定义前,已在函数外预先说明了被调函数类型 D. 以上都是
(8)被调函数通过 语句,将值返回给主调函数。 D
A. if B. for C. while D. return
第8章 指针
【练习8-1】如果有定义”int m, n = 5, *p = &m;”与m = n等价的语句就是
B 。
A.m = *p; B、 *p = *&n; C、 m = &n; D、 m = **p;
解答:
A:p就是指向m的指针变量,所以*p等价于m。即m=m。
B:&n就是n的地址,*&n就是n的值,即把n的值赋给p指向的值m。即m=n。
C:&n就是n的地址。即把n的地址赋给m。
D:**p就是指p指向的指针所指向的值,在此无意义。
故选B。
【练习8-2】调用函数求两个数的与与差:计算输入的两个数的与与差,要求自定义一个函数sum_diff(float op1,float op2, float *psum, float *pdiff),其中op1与op2就是输入的两个数,*psum 与*pdiff 就是计算得出的与与差。
解答:
#include
void sum_diff(float op1,float op2,float *psum,float *pdiff);
int main(void)
{
float op1,op2,sum,diff;
printf("Input op1 and op2: ");
scanf("%f%f",&op1,&op2);
sum_diff(op1,op2,&sum,&diff);
printf("%f+%f=%f;%f-%f=%f \n",op1,op2,sum,op1,op2,diff);
return 0;
}
void sum_diff(float op1,float op2,float *psum,float *pdiff)
{
*psum=op1+op2;
*pdiff=op1-op2;
1 第9章 网络通信
【1】java提供了哪几种网络通信模式?
[解答]:基于TCP/IP协议的面向连接的通信模式,基于UDP协议的面向无连接的通信模式。
【2】java的套接字网络通信方式分为哪几种?
[解答]:
基于TCP/IP协议:客户端套接字,服务器端套接字。
基于UDP协议:用户数据报套接字,广播数据报套接字。
【3】什么是socket,怎样建立socket连接?建立连接时,客户端和服务器端有什么不同?
[解答]:
Socket就是套接字,是IP地址和端口号的组合。
当两个网络程序需要通信时,它们可以通过使用Socket类建立套接字连接。
服务器端建立Socket以后,要执行一个等待的方法,以方便客户端来连接。
客户端建立Socket以后即与服务器端进行连接,成功握手以后,双方产生同样的Socket对象。
【4】请列举常用的协议及其端口号。
[解答]:
ftp 21/tcp
telnet 23/tcp
smtp 25/tcp
http 80/tcp
pop3 110/tcp
snmp 161/udp
https 443/tcp
https 443/udp
pop3 110/tcp
【5】试描述用Socket建立连接的基本程序框架。
[解答]:
(1) 客户端建立套接字对象,指定服务器IP和端口号。
(2) 服务器端建立套接字,并指定端口号。
(3) 服务器端监听本机的端口的状态:执行accept()方法。
(4) 客户端程序在对象产生以后以及,服务器端的程序监听到有连接以后都会产生一个Socket类的实例。
(5) 对这两个实例中对应的输入流和输出流进行操作,即完成通信过程。
第8章 指针
【练习8-1】如果有定义”int m, n = 5, *p = &m;”与m = n等价的语句是
B 。
A.m = *p; B. *p = *&n; C. m = &n; D. m = **p;
解答:
A:p是指向m的指针变量,所以*p等价于m。即m=m。
B:&n是n的地址,*&n是n的值,即把n的值赋给p指向的值m。即m=n。
C:&n是n的地址。即把n的地址赋给m。
D:**p是指p指向的指针所指向的值,在此无意义。
故选B。
【练习8-2】调用函数求两个数的和与差:计算输入的两个数的和与差,要求自定义一个函数sum_diff(float op1,float op2, float *psum, float *pdiff),其中op1和op2是输入的两个数,*psum 和*pdiff 是计算得出的和与差。
解答:
#include
void sum_diff(float op1,float op2,float *psum,float *pdiff);
int main(void)
{
float op1,op2,sum,diff;
printf("Input op1 and op2: ");
scanf("%f%f",&op1,&op2);
sum_diff(op1,op2,&sum,&diff);
printf("%f+%f=%f;%f-%f=%f \n",op1,op2,sum,op1,op2,diff);
return 0;
}
void sum_diff(float op1,float op2,float *psum,float *pdiff)
{
*psum=op1+op2;
*pdiff=op1-op2;