C语言习题集及答案

2018-11-12 21:16

return z: }

四、 编程

1. 编写一函数判断某数是否素数。 2. 编写一函数求三个整数的最大值。

3. 打印出3到1100之间的全部素数(判素数由函数实现)。 4. 写一函数,使给定的一个二维数组(3×3)转置,即行列互换。 5. 写一函数,将两个字符串连接,即编写一strcat函数。 6. 写一函数,求一字符串长度,即编写一strlen函数。

7. 写一函数将字符数组s1中的全部字符复制到字符数组s2中,不用strcpy函数。

8. 写一函数判断某数是否“水仙花数”,所谓“水仙花数”是指一个三位数, 其各位数字立方和等于该数本身。例如 153是一个水仙花数,因为 153=13?53?33 。

9. 在主函数内任意输入一个5×6矩阵,编写一函数求出每一行的和放到一个一维数组中,输出此矩阵及其每一行的和。

10. 写一主函数输入一数组,写一子函数实现对该数组的冒泡排序并输出。

11. 任意输入20个正整数,找出其中的素数,并将这些素数按由小到大排序。要求:判断一个数是否为素数用函数实现;排序用函数实现。

12. 编写计算m的n次方的递归函数。

13. 编一个程序,读入具有5个元素的整型数组,然后调用一个函数,递归计算这些元素的积。

14. 编一个程序,读入具有5个元素的实型数组,然后调用一个函数,递归地找出其中的最大元素,并指出它位置。

45

第七单元 指 针

一、选择题

1、 若有以下定义和语句,且0≤i<10则对数组元素的错误引用是 。

int a[10]={1,2,3,4,5,6,7,8,9,10},*p,i; p=a;

A. *(a+i) B. a[p-a] C. p+i

若有定义:int a[3][4]; , 不能表示数组元素

D. *(&a[i]) 2、

a[1][1]。 D. *(a+5) 3、

对如下定义,以下说法中正确的是 。 A. char *a[2]={ \B. 数组a的元素值分别为\和\

C. a是指针变量,它指向含有两个数组元素的字符型数组 D.数组a的两个元素分别存放的是含有4个字符的一维数组的首

数组a的两个元素中各自存放了字符’a’、’A’的地址 char *s=\

A. *(a[1]+1) B. *(&a[1][1]) C. (*(a+1)[1])

地址 4、

指针s所指字符串的长度为: 。

A. 说明不合法 B. 19 C. 18 D. 15

分析下面函数,以下说法正确的是 。 swap(int *p1,int *p2) { int *p;

46

5、

*p=*p1; *p1=*p2; *p2=*p; }

A. 交换*p1和*p2的值 B. 正确,但无法改变*p1和C. 交换*p1和*p2的地址 D. 可能造成系统故障,因为

设有说明int (*ptr)[M]; 其中ptr是 。

*p2的值 使用了空指针 6、 量 7、

在说明语句:int *f(); 中,标识符代表的是: 。 A. 一个用于指向整型数据的指针变量 B. 一个用于指向一维数C. 一个用于指向函数的指针变量

D. 一个返回值为指针型的

A. M个指向整型变量的指针 B. 指向M个整型变量的函数指针

C. 一个指向具有M个整型元素的一维数组的指针

D. 具有M个指针元素的一维指针数组,每个元素都只能指向整型

组的指针 函数名 8、 9、

若int x ,*pb; ,则正确的赋值表达式是 。 有如下程序段

int *p ,a=10 ,b=1 ; p=&a ; a=*p+b ;

A. pb=&x B. pb=x; C. *pb=&x; D. *pb=*x

执行该程序段后,a 的值为 。

A. 12 B. 11 C. 10 D. 编译出错

double r=99 , *p=&r ;

47

10、若有以下定义和语句:

*p=r ;

则以下正确的叙述是 。

A. 以下两处的*p 含义相同,都说明给指针变量p 赋值 B. 在\;\中,把r 的地址赋值给了p 所指的C. 语句\;\把变量r 的值赋给指针变量p D. 语句\;\取变量r 的值放回r 中

存储单元

11、要求函数的功能是交换x 和y 中的值,且通过正确调用返回交换结果.能正确执行

此功能的函数是 。

A. funa (int *x,int *y) { int *p; *p=*x; *x=*y;*y=*p; } B. fund (int x,int y) { int t; t=x;x=y;y=t; } C. func (int *x,int *y) { *x=*y;*y=*x;}

D. fund (int *x,int *y) { *x=*x+*y;*y=*x-*y;*x=*x-*y; }

12、若有说明:long *p ,a;则不能通过scanf 语句正确给输入项读入数据的程序段

是 。

A. *p=&a; scanf(\,p);

B. p=(long *)malloc(8); scanf(\,p); C. scanf(\,p=&a); D. scanf(\,&a);

A. < B. = C. + D. -

13、对于类型相同的两个指针变量之间,不能进行的运算是 。 14、若已定义:int a[9] ,*p=a;并在以后的语句中未改变p 的值,不能表示a[1] 地

址的表达式是 。

48

A. p+1 B. a+1 C. a++ D. ++p

int a[10]={1,2,3,4,5,6,7,8,9,10} ,*p=a ;

15、若有以下说明:

则数值为6 的表达式是 。

A. *p+6 B. *(p+6) C. *p+=5 D. p+5

16、设P1 和P2 是指向同一个int 型一维数组的指针变量,k 为int 型变量,则不能正

确执行的语句是 。

A. k=*P1+*P2; B. p2=k; C. P1=P2; D. k=*P1 *

(*P2);

17、若有以下的定义:

int a[ ]={1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10} , *p=a ; 则值为3 的表式是 。

A. p+=2 , *(p++) B. p+=2 ,*++p C. p+=3 , *p++ D. p+=2 ,++*p

int a[10]={1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10} ,

18、若有以下定义和语句: *p=a ;

则不能表示a 数组元素的表达式是 。

A. *p B. a[10] C. *a D. a[p-a]

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

19、有如下说明

则数值为9 的表达式是 。

A. *p+9 B. *(p+8) C. *p+=9 D. p+8 void main()

49

20、下面程序输出数组中的最大值,由s 指针指向该元素.


C语言习题集及答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:最全尔雅网络课文化地理答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: