技能竞赛C试题

Similar documents
《C语言程序设计》教材习题参考答案

网C试题(08上).doc

技能竞赛C试题

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

技能竞赛C试题

Microsoft Word - 综合试题2.doc

《C语言程序设计》教材习题参考答案

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

<4D F736F F D C4EA39D4C23137C8D5B6FEBCB643D3EFD1D4B1CACAD4CAD4BEEDBCB0B4F0B0B85FB1EAD7BCB0E65F2E646F63>

2015年计算机二级(C语言)模拟试题及答案(三)

期中考试试题讲解

chap07.key

全国计算机等级考试笔试模拟试卷(1)

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p

<4D F736F F D20D7DBBACFCAD4CCE231B2CEBFBCB4F0B0B82E646F63>

《计算概论》课程 第十九讲 C 程序设计语言应用

C++ 程式設計

2015年计算机二级(C语言)模拟试题及答案(四)

Microsoft PowerPoint - C语言课件-9-结构体.pptx

一 关于内存 数据存储 变量分类 局部变量 全局变量 静态变量 请看下面代码, 分析变量类型? int pi = 3; int Area(int r, int *sum) { int b; static int c =0; b = pi * r * r; c += b; *sum = c; retu

<4D F736F F D C4EA33D4C2C8ABB9FABCC6CBE3BBFAB5C8BCB6BFBCCAD4B6FEBCB6B1CACAD4CAD4BEEDBCB0B2CEBFBCB4F0B0B82E646F63>

untitled

FY.DOC

untitled

,,,,,,,,,, ( http: \ \ www. ncre. cn,, ) 30,,,,,,,, C : C : : 19 : : : /16 : : 96 : : : ISBN 7

Book1

工 序 的 是 ( ) A. 卷 筒 切 筒 装 药 造 粒 B. 搬 运 造 粒 切 引 装 药 C. 造 粒 切 引 包 装 检 验 D. 切 引 包 装 检 验 运 输 7. 甲 公 司 将 其 实 施 工 项 目 发 包 给 乙 公 司, 乙 公 司 将 其 中 部 分 业 务 分 包 给

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

<4D F736F F D C4EA39D4C2C8ABB9FABCC6CBE3BBFAB5C8BCB6BFBCCAD4B6FEBCB6B1CACAD4CAD4BEED2E646F63>

Microsoft Word 年9月二级C真卷.doc

<4D F736F F D20D7DBBACFCAD4CCE232B2CEBFBCB4F0B0B82E646F63>

第3章.doc

该图是 A.N-S 图 B.PAD 图 C. 程序流程图 D. E-R 图 (8) 数据库管理系统是 A. 操作系统的一部分 B. 在操作系统支持下的系统软件 C. 一种编译系统 D. 一种操作系统 (9) 在 E-R 图中, 用来表示实体联系的图形是 A. 椭圆图 B. 矩形 C. 菱形 D. 三

( CIP).:,3.7 ISBN TB CIP (3) ( ) ISBN O78 : 3.

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料


立 志 于 打 造 最 贴 近 考 生 实 际 的 辅 导 书 计 算 机 考 研 之 数 据 结 构 高 分 笔 记 率 辉 编 著 周 伟 张 浩 审 核 讨 论 群 :

2008级考试试题A

C语言程序设计复习题

C 1

PowerPoint 演示文稿

c_cpp

<4D F736F F D20CBB6CABFD1D0BEBFC9FAC8EBD1A7BFBCCAD4B4F3B8D92D383835B3CCD0F2C9E8BCC62E646F63>

<4D F736F F D2043D3EFD1D4B3CCD0F2C9E8BCC6A3A8BBF9D3DA FCBBCCFEBA3A9A3A8B5DA32B0E6A3A9CECACCE2C7F3BDE2D3EBD1A7CFB0D6B8B5BC20B5DA35D5C22E646F63>

CC213

<4D F736F F D C4EA33D4C2C8ABB9FABCC6CBE3BBFAB5C8BCB6BFBCCAD4B6FEBCB643D3EFD1D4B1CACAD4D5E6CCE2D3EBB4F0B0B82E646F63>

业务经办 (定).ppt [兼容模式]


Chapter12 Derived Classes

《C语言程序设计》教材习题参考答案

第5章修改稿

<4D F736F F D C4EA34D4C2C8ABB9FABCC6CBE3BBFAB5C8BCB6BFBCCAD4B6FEBCB6B1CACAD4CAD4BEED2E646F63>

2

<4D F736F F D C4EAC8EBD1A74D4241C1AABFBCD7DBBACFB2CEBFBCB4F0B0B8BCB0CFEABDE22E646F6378>

C语言程序设计复习题

<4D F736F F D C4EA33D4C2C8ABB9FABCC6CBE3BBFAB5C8BCB6BFBCCAD4B6FEBCB643B1CACAD4CAD4BEED2E646F63>

<4D F736F F D20A1BE A1BF C4EABDADCBD5D7CFBDF0C5A9B4E5C9CCD2B5D2F8D0D0B9C9B7DDD3D0CFDEB9ABCBBEB8FAD7D9C6C0BCB6B1A8B8E6A3A8B8FAD7D A3A9>

广东省社会保险基金管理局办公室文件

<4D F736F F D20D6D0B3CFD0C5B9FABCCAD3D0B9D8B8BAD4F0C8CBBECDA1B C4EAD6D0B9FAD2F8D0D0D2B5B9ABBFAAC6C0BCB6A1B1B4F0BCC7D5DFCECA2E646F63>

A) 软件交付使用后还需要再进行维护 B) 软件工具交付使用就不需要再进行维护 C) 软件交付使用后其生命周期就结束 D) 软件维护是指修复程序中被破坏的指令 (8) 数据库设计的根本目标是要解决 ( ) A) 数据共享问题 B) 数据安全问题 C) 大量数据存储问题 D) 简化数据维护 (9) 设

Ps22Pdf

Microsoft Word 年9月二级C真卷.doc

Microsoft Word 年4月二级C真卷.doc

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

<4D F736F F D2043D3EFD1D4B3CCD0F2C9E8BCC6CAD4BEEDBCB0B4F0B0B8A3A BCB62D3031A3A92E646F6378>


第4章 栈和队列

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc

Microsoft Word 年4月二级C真卷.doc

日期

<4D F736F F D C4EA34D4C2C8ABB9FABCC6CBE3BBFAB5C8BCB6BFBCCAD4B6FEBCB643D3EFD1D4B1CACAD4CAD4CCE22E646F63>

[改訂新版]C言語による標準アルゴリズム事典

Guava学习之Resources

Microsoft Word 年4月二级C真卷.doc

Microsoft Word 年4月二级C真卷.doc

《C语言程序设计》教材习题参考答案

绝密★启用前

第2章 递归与分治策略

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/

頭 上 下 舌 齒 三 十 二 相 大 智 度 論 卷 4 ( 大 正 25,90a-91a) (22) 四 十 齒 相 (23) 齒 齊 相 (24) 牙 白 相 (26) 味 中 得 上 味 相 (27) 大 舌 相 八 十 種 好 大 般 若 經 卷 381 ( 大 正 6,968a9-969

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

第一次段考 二年級社會領域試題 郭玉華 (A)(B) (C)(D)

2008年4月全国计算机等级考试二级C语言真题(含答案)

(E). (A) (B) (C) (D) (E). (A) (B) (C) (D) (E) (A) (B) (C) (D) (E) (A) (B) (C) (D). ( ) ( ) ( ) ( ) ( ) ( ) (A) (B) (C) (D) (E). (A) (B) (C) (D) (E). (

<4D F736F F D AB4FA5C0A448ADFBA4FEAFC5C0B3C0CBB8EAAEC6B2C4A447B3A1A5F E646F63>

列 出 所 有 的 非 負 整 數 解, 係 數 越 大 者 越 先 決 定, 故 先 決 定 z, 再 決 定 y, 最 後 決 定 x, 故 有 = 8 ( 種 ) x y z

epub 33-8

发 债 主 体 供 销 集 团 成 立 于 2010 年 1 月 18 日, 是 经 国 务 院 批 准 设 立 国 家 工 商 总 局 核 准 注 册 成 立 的 中 华 全 国 供 销 合 作 总 社 ( 以 下 简 称 供 销 总 社 ) 直 属 核 心 全 资 企 业 截 至 2015 年

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式]

. (A) (B) (C) A (D) (E). (A)(B)(C)(D)(E) A

PowerPoint 演示文稿

校园之星

<4D F736F F D20C6C0BCB6B1A8B8E6B7E2C3E6A3A8E4AFD1F4CFD6B4FAA3A9>

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

<4D F736F F D20C4CFCDA8B9FAD3D0D7CAB2FAB9ABCBBEB6A8B8E55F A3A8B5A3B1A3B7BDA3A E646F63>

Transcription:

C 语言程序设计单元测验六 ( 指针 ) 一 单项选择题 ( 每题 1 分, 共 54 分 ) 1 有以下程序 void fun(char *a, char *b) { a=b; (*a)++; { char c1='a',c2='a',*p1,*p2; p1=&c1; p2=&c2; fun(p1,p2); printf("%c%c\n",c1,c2); A Ab B aa C Aa D Bb 2 下列选项中正确的语句组是 ( ) A char s[8]; s={"beijing"; C char s[8]; s="beijing"; 3 已定义以下函数 fun(int *p) { return *p; 该函数的返回值是 ( ) B char *s; s={"beijing"; D char *s; s="beijing"; A 不确定的值 B 形参 p 中存放的值 C 形参 p 所指存储单元中的值 D 形参 p 的地址值 4 若有定义 :int *p[3];, 则以下叙述中正确的是 ( ) A 定义了一个类型为 int 的指针变量 p, 该变量具有三个指针 B 定义了一个指针数组 p, 该数组含有三个元素, 每个元素都是基类型为 int 的指针 C 定义了一个名为 *p 的整型数组, 该数组含有三个 int 类型元素 D 定义了一个可指向一维数组的指针变量 p, 所指一维数组应具有三个 int 类型元素 5 已定义以下函数 fun(char *p2, char *p1) { while((*p2=*p1)!='\0'){ p1++;p2++; 函数的功能是 ( ) A 将 p1 所指字符串复制到 p2 所指内存空间 C 对 p1 和 p2 两个指针所指字符串进行比较 6 有以下程序 : { int p[7]={11,13,14,15,16,17,18,i=0,k=0; while(i<7&&*(p+i)%2) {k=k+*(p+i); i++; printf("%d\n",k); 执行后输出的结果是 ( ) A 58 B 56 C 45 D 24 B 将 p1 所指字符串的地址赋给指针 p2 D 检查 p1 和 p2 两个指针所指字符串中是否有 '\0' 7 若有如下定义 char a[10],*p=a, 则对 a 数组中元素的不正确的引用是 ( ) A *&a[5] B a+2 C *(p+5) D *(a+5) 8 有以下程序 int *f(int *x,int *y) { if(*x<*y) return x; else 单元测验六第 1 页共 12 页

return y; { int a=7,b=8,*p,*q,*r; p=&a; q=&b; r=f(p,q); printf("%d,%d,%d\n",*p,*q,*r); 执行后输出结果是 ( ) A 7,8,8 B 7,8,7 C 8,7,7 D 8,7,8 9 有以下程序 { char *s[]={"one","two","three",*p; p=s[1]; printf("%c,%s\n",*(p+1),s[0]); 执行后输出结果是 ( ) A n,two B t,one C w,one D o,two 10 有以下程序 { int x[8]={8,7,6,5,0,0, *s; s=x+3; printf("%d\n",s[2]); 执行后输出结果是 ( ) A 随机值 B 0 C 5 D 6 11 以下函数的功能是 : 通过键盘输入数据, 为数组中的所有元素赋值 #define N 10 void arrin(int x[n]) { int i=0; while(i<n) scanf("%d", ); 在下划线处应填入的是 ( ) A x+i B &x[i+1] C x+(i++) D &x[++i] 12 有以下程序 { char *s="\n123\\"; printf("%d,%d\n",strlen(s),sizeof(s)); 执行后输出结果是 ( ) A 5,4 B 5,6 C 6,7 D 7,8 13 阅读以下函数 fun(char *sl,char *s2) { int i=0; while( sl[i]==s2[i] && s2[i]!='\0') i++; return( sl[i]=='\0' && s2[i]=='\0' ); 单元测验六第 2 页共 12 页

此函数的功能是 ( ) A 将 s2 所指字符串赋给 s1 B 比较 s1 和 s2 所指字符串的大小, 若 s1 比 s2 的大, 函数值为 1, 否则函数值为 0 C 比较 s1 和 s2 所指字符串是否相等, 若相等, 函数值为 1, 否则函数值为 0 D 比较 s1 和 s2 所指字符串的长度, 若 s1 比 s2 的长, 函数值为 1, 否则函数值为 0 14 有以下程序 { char str[ ]="xyz",*ps=str; while(*ps) ps++; for(ps--;ps-str>=0;ps--) puts(ps); 执行后输出结果是 ( ) A yz B z C z D x xyz yz yz xy xyz xyz 15 有以下程序 void fun(int *a,int i,int j) { int t; if (i<j) { t=a[i];a[i]=a[j];a[j]=t; fun(a,++i,--j); { int a[]={1,2,3,4,5,6,i; fun(a,0,5); for(i=0;i<6;i++) printf("%d",a[i]); 执行后输出结果是 ( ) A 6 5 4 3 2 1 B 4 3 2 1 5 6 C 4 5 6 1 2 3 D 1 2 3 4 5 6 16 下列程序的输出结果是 ( ) { char a[10]={9,8,7,6,5,4,3,2,1,0,*p=a+5; printf("%d",*--p); A 非法 B a[4] 的地址 C 5 D 3 17 下列程序的运行结果是 ( ) void fun(int *a, int *b) { int *k; k=a; a=b; b=k; { int a=3, b=6, *x=&a, *y=&b; fun(x,y); printf("%d %d", a, b); A 6 3 B 3 6 C 0 0 D 编译出错 单元测验六第 3 页共 12 页

18 下面程序的输出结果是 ( ) { int a[ ]={1,2,3,4,5,6,7,8,9,0,,*p; p=a; printf("%d\n",*p+9); A 0 B 1 C 10 D 9 19 以下程序的输出结果是 ( ) { int i, x[3][3]={1,2,3,4,5,6,7,8,9; for(i=0;i<3;i++) printf("%d,",x[i][2-i]); A 1,5,9 B 1,4,7 C 3,5,7 D 3,6,9 20 以下程序的输出结果是 ( ) { int a[3][3]={ {1,2,{3,4,{5,6,i,j,s=0; for(i=1;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; printf("%d\n",s); A 18 B 19 C 20 D 21 21 若有说明 :int i, j=2,*p=&i;, 则能完成 i=j 赋值功能的语句是 ( ) A i = *p; B *p = *&j; C i = &j; D i = **p; 22 以下定义语句中, 错误的是 ( ) A int a[]={1,2; B char *a[3]; C char s[10]="test"; D int n=5,a[n]; 23 以下程序的输出结果是 ( ) char cchar(char ch) { if(ch>='a'&&ch<='z') ch=ch-'a'+'a'; return ch; { char s[]="abc+abc=defdef",*p=s; while(*p) { *p=cchar(*p); p++; printf("%s\n",s); A abc+abc=defdef B abc+abc=defdef C abcaabcdefdef D abcabcdefdef 24 以下程序段的输出结果是 ( ) char s[]="\\141\141abc\t"; printf ("%d\n",strlen(s)); A 8 B 9 C 12 D 13 单元测验六第 4 页共 12 页

25 以下程序调用 findmax 函数返回数组中的最大值 findmax(int *a,int n) { int *p,*s; for(p=a,s=a; p-a<n; p++) if ( ) s=p; return(*s); { int x[5]={12,21,13,6,18; printf("%d\n",findmax(x,5)); 在下划线处应填入的是 ( ) A p>s B *p>*s C a[p]>a[s] D p-a>p-s 26 以下程序的输出结果是 ( ) { char cf[3][5]={"aaaa","bbb","cc"; printf("\"%s\"\n",ch[1]); A "AAAA" B "BBB" C "BBBCC" D "CC" 27 以下不能正确进行字符串赋初值的语句是 ( ) A char str[5]="good!"; C char *str="good!"; 28 以下程序的输出结果是 ( ) f(int *b, int m, int n) { int i,s=0; for(i=m;i<n;i=i+2) s=s+*(b+i); return s; { int x,a[]={1,2,3,4,5,6,7,8,9; x=f(a,3,7); printf("%d\n",x); A 10 B 18 C 8 D 15 29 以下程序的输出结果是 ( ) #include <string.h> { char b1[8]="abcdefg",b2[8],*pb=b1+3; while (--pb>=b1) strcpy(b2,pb); printf("%d\n",strlen(b2)); A 8 B 3 C 1 D 7 B char str[]="good!"; D char str[5]={'g','o','o','d'; 30 若有说明 :int n=2,*p=&n,*q=p;, 则以下非法的赋值语句是 ( ) A p=q; B *p=*q; C n=*q; D p=n; 31 有以下程序 单元测验六第 5 页共 12 页

void fun(char *c,intd) { *c=*c+1;d=d+1; printf("%c,%c,",*c,d); { char a='a',b='a'; fun(&b,a); printf("%c,%c\n",a,b); A B,a,B,a B a,b,a,b C A,b,A,b D b,b,a,b 32 以下程序中函数 sort 的功能是对 a 所指数组中的数据进行由大到小的排序, void sort(int a[],int n) { int i,j,t; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(a[i]<a[j]) { t=a[i];a[i]=a[j];a[j]=t; { int aa[10]={1,2,3,4,5,6,7,8,9,10,i; sort(&aa[3],5); for(i=0;i<10;i++) printf("%d,",aa[i]); printf("\n"); A 1,2,3,4,5,6,7,8,9,10, B 10,9,8,7,6,5,4,3,2,1, C 1,2,3,8,7,6,5,4,9,10, D 1,2,10,9,8,7,6,5,4,3, 33 有以下程序 { char a[]={'a','b','c','d','e','f','g','h','\0'; int i,j; i=sizeof(a); j=strlen(a); printf("%d,%d\n",i,j); A 9,9 B 8,9 C 1,8 D 9,8 34 以下程序中的函数 reverse 的功能是将 a 所指数组中的内容进行逆置 void reverse(int a[],int n) { int i,t; for(i=0;i<n/2;i++) { t=a[i];a[i]=a[n-1-i];a[n-1-i]=t; { int b[10]={1,2,3,4,5,6,7,8,9,10; int i,s=0; reverse(b,8); for(i=6;i<10;i++) s+=b[i]; printf("%d\n",s); 单元测验六第 6 页共 12 页

A 22 B 10 C 34 D 30 35 有以下程序 { int aa[4][4]={{1,2,3,4,{5,6,7,8,{3,9,10,2,{4,2,9,6; int i,s=0; for(i=0;i<4;i++) s+=aa[i][1]; printf("%d\n",s); A 11 B 19 C 13 D 20 36 有以下程序 #include <string.h> { char *p="abcde\0fghjik\0"; printf("%d\n",strlen(p)); A 12 B 15 C 6 D 5 37 有以下程序 void ss(char *s,char t) { while(*s) { if(*s==t) *s=t-'a'+'a'; s++; { char str1[100]="abcddfefdbd",c='d'; ss(str1, c); printf("%s\n",str1); A ABCDDEFEDBD B abcddfefdbd C abcaafefaba D Abcddfefdbd 38. 变量的指针, 其含义是指该变量的 ( ) A 值 B 地址 C 名 D 一个标志 39. 若有语句 int *point,a=4; 和 point=&a; 下面均代表地址的一组选项是 ( ) A a,point,*&a C *&point,*point,&a B &*a,&a,*point D &a,&*point,point 40. 若有说明 ;int *p,m=5,n; 以下正确的程序段的是 ( ) A p=&n; B p=&n; C scanf("%d",&n); D p=&n; scanf("%d",&p); scanf("%d",*p); *p=n; *p=m; 41. 下面程序段的运行结果是 ( ) char *s="abcde"; s+=2;printf("%d",s); A cde B 字符 'c' C 字符 'c' 的地址 D 无确定的输出结果 42. 设 p1 和 p2 是指向同一个字符串的指针变量,c 为字符变量, 则以下不能正确 单元测验六第 7 页共 12 页

执行的赋值语句是 ( ) A c=*p1+*p2; B p2=c C p1=p2 D c=*p1*(*p2); 43. 以下正确的程序段是 ( ) A char str[20]; B char *p; C char str[20]; D char str[20],*p=str; scanf("%s", str); scanf("%s",p); scanf("%s",&str[2]); scanf("%s",p[2]); 44. 若有说明语句 char a[]="it is mine"; char *p="it is mine"; 则以下不正确的叙述是 ( ) A a+1 表示的是字符 t 的地址 B p 指向另外的字符串时, 字符串的长度不受限制 C p 变量中存放的地址值可以改变 D a 中只能存放 10 个字符 45. 下面程序的运行结果是 ( ) #include <string.h> { char *s1="abdeg"; char *s2="abdeg"; s1+=2;s2+=2; printf("%d\n",strcmp(s1,s2)); A 正数 B 负数 C 零 D 不确定的值 46. 下面程序的运行结果是 ( ) #include <string.h> fun(char *w,int n) {char t,*s1,*s2; s1=w;s2=w+n-1; while(s1<s2){t=*s1++;*s1=*s2--;*s2=t; {char *p; p="1234567"; fun(p,strlen(p)); puts(p); A 7654321 B 1714171 C 1711717 D 7177171 47. 若有以下定义, 则对 a 数组元素的正确引用是 ( ) int a[5],*p=a; A *&a[5] B a+2 C *(p+5) D *(a+2) 48. 若有定义 :int a[2][3], 则对 a 数组的第 i 行 j 列元素地址的正确引用为 ( ) A *(a[i]+j) B (a+i) C *(a+j) D a[i]+j 49. 若有以下定义, 则 p+5 表示 ( ) int a[10],*p=a; 单元测验六第 8 页共 12 页

A 元素 a[5] 的地址 B 元素 a[5] 的值 C 元素 a[6] 的地址 D 元素 a[6] 的值 50. 以下程序的输出结果是 ( ) void fun(int x); { int x = 3; fun(x); printf( x = %d\n, x); void fun(int x){ x = 5; A 3 B 5 C 8 D 2 51. 以下程序的输出结果是 ( ) void fun(int *p); { int x = 3; fun(&x); printf( x = %d\n, x); void fun(int *p){ *p = 5; A 3 B 5 C 8 D 2 52. 下列程序的输出结果是 ( ) {int **k,*a,b=100;a=&b; k=&a;printf( %d\n,**k); A 运行出错 B 100 C a 的地址 D b 的地址 53. 下列程序的输出结果是 ( ) fun(int *a,int *b) {int *w;*a=*a+*a;*w=*a; *a=*b; *b=*w; {int x=9,y=5,*px=&x,*py=&y;fun(px,py);printf( %d, %d\n,x,y); A 出错 B 18, 5 C 5, 9 D 5, 18 54. 若定义了以下函数 : void f( ) { p=(double *)malloc(10*sizeof(double)); p 是该函数的形参, 要求通过 p 把动态分配存储单元的地址传回主调函数, 则形参 p 的正确定义应当 是 ( ) A double *p B float **p C double **p D float *p 二 判断题 ( 正确的在括号内打, 错误的在括号内打, 每题 1 分, 共 35 分 ) 单元测验六第 9 页共 12 页

( )1. 指针变量里存放的是地址值, 因此指针变量只能是 int 型的 ( )2. 在 C 语言中, 所谓指针型数据, 即指该数据是一个地址 ( )3. 有一个一维数组 a[10], 那么 a 与 &a[0] 等价 ( )4. 如有说明 :int b[10], *p = b; 表明在使用时 b 与 p 就完全等价了 ( )5. 数组中的每一个元素相当于一个变量 若要让一个指针变量指向它, 必须用 & 数组元素 的方法向该指针变量赋值 ( )6. 有如下程序段 :int i, j = 2, k, *p = &i;k = *p + j; 这里出现的两个 * 号, 含义是一样的 ( )7. 在 C 语言中, 每一个变量在内存里占用的单元数都是相同的 ( )8. 通过指针变量, 就能间接地得到它所指向的变量的内容 ( )9. 说明语句 :int *p, p1, p2; 只说明了一个能指向 int 型变量的指针 ( )10. 有说明 :int *p; 且 p 指向地址为 1500 的内存单元, 那么经过操作 p++; 后,p 将指向 1501 的内存单元 ( )11. 数组元素可以是不同数据类型的 ( )12. 如果初值表中的初值个数少于数组长度, 那么 C 语言编译程序会自动把剩余的元素初始化为初值表中的最后一个值 ( )13. 主调函数把单个数组元素传递给修改该元素值的被调函数时, 主调函数就能够得到修改后的值 ( )14. 设 p 是指向数组 a 的指针变量, 则 a[i] 和 p[i] 等价 ( )15. 一个变量的指针就是该变量的地址 ( )16. 若定义 int **p; 则程序中调用 *p 时, 它代表的是 p 的地址 ( )17. 若指针占用的内存大小为 2Byte, 则指向它的二重指针占用内存大小为 4Byte. ( )18. 带参 main 函数中的形参的值可以在程序中得到 ( )19.main(argc,argv) 中的参数 argv 的定义格式为 char argv[] ( )20.int **p; 表示定义一个 *p 指针变量 ( )21. 在 C 语言中允许将一个整数赋给指针变量 ( )22. 一个指针变量加 1 表示将该指针变量的原值 ( 地址 ) 加 1 ( )23.int *p(); 表示定义一个指向函数的指针变量 p ( )24. 当函数实参中使用指针变量时, 形参变量也必须使用指针变量 ( )25.*p++ 等价于 (*p)++ 单元测验六第 10 页共 12 页

( )26. 使用指针技术, 可以通过修改形参变量的值达到修改实参变量的值的目的 ( )27. 因为用字符数组和字符指针变量都能实现字符串的存储和运算, 因此它们二者是完全等价 的 ( )28. 对指向函数的指针变量, 像 p+n p++ p- - 等运算是无意义的 ( )29.main(int argc,char *argv[]) 中的参数 argc 表示命令行只参数的个数 ( )30. 在 int a[3][4]; 中 a+i 和 *(a+i) 的含义是不一样的 ( )31.char *p[10]; 定义了一个指向字符数组的指针变量 ( )32. 将指向函数的指针作为函数的参数, 虽然可以提高效率, 但是容易造成混乱, 所以不符合 结构化程序设计的原则 ( )33. 数组名实际上是此数组的首地址, 所以数组名相当于一个指针变量 ( )34. 若定义数组 a[2][3], 则 a+1 和 *(a+1) 完全等价 ( )35. 函数的形参为一个数组, 则调用此函数时将数组名作为对应的实参 四 程序填空题 ( 每题 2 分, 共 6 分 ) 1. 以下 count 函数的功能是统计 substr 在母串 str 中出现的次数 int count(char *str,char *substr) { int i,j,k,num=0; for(i=0; {for( ;i++) if(substr[ ]== \0 ) {num++;break; return num;,k=0;substr[k]==str[j];k++,j++) 2. 以下 Delblank 函数的功能是删除字符串 s 中的所有空格 ( 包括 Tab 回车符和换行符 ) void Delblank(char *s) { int i,t; char c[80]; for(i=0,t=0; if(!isspace( c[t]= \0 ; strcpy(s,c); ;i++) ))c[t++]=s[i]; 3. 以下 conj 函数的功能是将两个字符串 s 和 t 连接起来 char *conj(char *s,char *t) { char *p=s; while(*s) ; while(*t) {*s= *s= \0 ; ;s++;t++; 单元测验六第 11 页共 12 页

; 五 (5 分 ) 编写函数 void fun(float x,float y,float *result1, float *result2), 其功能为 : 计算两个浮点数 x 和 y 的平方和 平方差, 其计算结果分别通过指针变量 result1 和 result2 返回 单元测验六第 12 页共 12 页