C 语言程序设计第三单元单元测试答案 一 选 择 题 1.以 下 程 序 的 运 行 结 果 是 。 void sub (int x,int y,int *z) {*z=y-x;} main() {int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); printf("%4d,%4d,%4d",a,b,c); } A) 5, 2, 3 B) -5, -12, -7 C) -5, -12, -17 D) 5, -2, -7 参 考 答 案 : A 2.执 行 以 下 程 序 后 , a 的 值 为 【 1】, b 的 值 为 【 2】。 main() {int a,b,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; b=(-*p1)/(*p2)+7; printf("a=%d,b=%d\n",a,b); } 【 1】 A)- 1 B)1 C)0 D)4 【 2】 A)5 B)6 C)7 D)10 参 考 答 案 :【 1】 C 【 2】 C 3.下 面 程 序 欲 对 两 个 整 型 变 量 的 值 进 行 交 换 ,以 下 正 确 的 说 法 是 。 main() {int a=10,b=20; printf("(1)a=%d,b=%d\n",a,b); swap(&a,&b); printf("(2)a=%d,b=%d\n",a,b); } swap (int p,int q) {int t; t=p;p=q;q=t;} A) 该 程 序 完 全 正 确 B) 该 程 序 有 错 ,只 要 将 语 句 swap(&a,&b);中 的 参 数 改 为 a,b 即 可 C) 该 程 序 有 错 ,只 要 将 swap()函 数 中 的 形 参 p、q 和变 量 t 均定义为 指针即 可 D) 以 上说 法 都不正 确 参 考 答 案 : D 4.有 四组对 指针变 量 进 行 操作的 语 句 , 以 下 判断正 确 的 选 项是 。 (1)int *p,*q;q=p; int a,*p,*q;p=q=&a; (2)int a,*p,*q;q=&a;p=*q; int a=20,*p;*p=a; (3)int a=b=0,*p;p=&a;b=*p; int a=20,*p,*q=&a;*p=*q; (4)int a=20,*p,*q=&a;p=q; int p,*q;q=&p; A)正 确 : (1) 不 正 确 : (2),(3),(4) B)正 确 : (1),(4) 不 正 确 : (2),(3) C)正 确 : (3) 不 正 确 : (1),(2),(4) D)以 上 结 论 都 不 正 确 参 考 答 案 : D 参 考 分 析 : 在 四 组 操 作 中 , 完 全 正 确 的 只 有 (4), 对 各 组 操 作 中 出 现 的 错 误 分 析 如 下 。 (1)int *p,*q;q=p; p 没有 指向一个确 定的 空间 int a,*p,*q;p=q=&a; (2)int a,*p,*q;q=&a;p=*q; q 没有 指向确 定空间, 且*q 不 是地址值 int a=20,*p;*p=a; p 没有 指向...