资源描述:
《13第13章编译预处理和动态存储分配13章课后习题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、选择题13.1有以下程序#include(stdio.h)#defineMIN(x,y)(x)﹤(y)?(x):(y)Main(){inti,j,k;i=10;j=15;k=10*MIN(i,j);printf(“%d”,k);}程序的运行结果是A)15B)100C)10D)15013.2有以下程序:#include(stdio.h)#defineN2#defineMN+1#defineNUM(M+1)*M/2main(){inti;For(i=1;i﹤=NUM;i++);Printf(“%d”,i);}程序
2、中的for循环执行的次数是A)5B)6C)8D)913.3有以下程序:#include(stdio.h)#defineFUDGF(y)2.84+y#definePR(a)printf(“%d”,(int)(a))#definePRINT1(a)PR(a);putchar(‘’)Main(){intx=2;PRINT1(FUDGF(5)*X);}程序的运行结果是A)11B)12C)13D)1513.4有以下程序#include(stdio.h)#include(stdlib.h)Fut(int**s,intp[2][3
3、]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;P=(int*)malloc(sizeof(int));fut(&p.a);printf(“%d”,*p);}程序的运行结果是A)1B)7C)9D)1113.5设有以下语句Double*p;P=_____malloc(sizeof(double));若要使指针p指向一个double类型的动态储存单元,在下划线处应填入的是A)DoubleB)double*C)(*double)D)(double*)13.6有以下程序
4、:#include(stdio.h)#include(stdlib.h)Voidfun(float*p1,float*p2,float*s){s=(float*)calloc(1,sizeof(float));*s=*p1+*p2++;}Main(){floata[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;fun(a,b,s);printf(“%5.2f”,*s);}程序的运行结果是A)11.10B)12.00C)21.10D)1.1013.7以下叙述正确的是A)用#include包含的头
5、文件的后缀不可以是“.a”B)若一些源文件中包含某个头文件,当该文件有错时,只需要对该文件进行修改,包含此文件的所有源程序不必重新进行编译C)宏命令行可以看做是一行C语言D)C编译中的预处理是在编译之前进行的一、填空13.8以下程序运行后的输出结果是________。#include(stdio.h)#definePR(ar)printf(“ar=%d”,ar)Main(){intj,a[]={1,3,5,7,9,11,13,15},*p=a+5;For(j=3;j;j--)Switch(j){case1:case2:P
6、R(*p++);break;case3:PR(*(--p));}}13.9以下程序的功能是:调用getone函数开辟一个动态存储单元,调用assone函数吧数据输入到此动态存储单元,调用outone函数输出此动态存储单元中的数据。请填空。#include(stdlib.h)#include(stdio.h)voidgetone(int**s){*s=(1)malloc(sizeof(int));}voidassone(int*s){scanf(“%d”,[2]);}voidoutone(int*b){printf(“%d
7、”,[3]);}main(){int*p;Getone(&p);assone(p);outone(p);}一、编程题13.10请写出一个宏定义MYALPHA(c),用以判断c是否是字母字符。若不是,得1;否则得0.13.11请写出一个宏定义SWAP(t,x,y),用以交换t类型的两个参数。提示:用复合语句的形式。13.12请编写程序,利用malloc函数开辟动态存储单元,存放输入的三个整数,然后按从小到大的顺序输出这三个数。