《C语言程序设计A形成性考核作业三.docx》由会员分享,可在线阅读,更多相关《C语言程序设计A形成性考核作业三.docx(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言程序设计A形成性考核作业三一、 选择题1.在下面的( )函数声明语句存在语法错误。AAA(int a,int b); BAA(int ,int) CAA(int a;int b) DAA(int a,int)2在下面的( )不能作为函数的返回类型。Avoid Bint Cnew Dlong3下面正确的函数原型语句是( )。Aint Function(void a); Bvoid Function(int);Cint Function(a); Dvoid int(double a);4函数调用func(exp1,exp2),exp3*exp4-exp5)中所含实参的个数为( )个。A1 B
2、2 C4 D55下面的标识符中,( )是文件级作用域。A函数形参 B语句标号 C外部静态类标识符 D自动类标识符6下面的标识符中,( )具有全局级作用域。A函数形参 B全局变量 C内部静态类标识符 D自动变量符7假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址大( )字节。A1 B2 C4 D88假定a为一个字符数组名,则a8的地址比该数组的首地址大( )个字节。A4 B8 C16 D329假定a为一个数组名,则下面的( )表示有错误。Aai B*a+ C*a D*(a+1)10用calloc函数创建具有10个整型元素的一维数组的正确语句是( )。Aint *p
3、=calloc(10,2); Bint *p=callo(10;Cint *p=calloc(10,4); Dint *p=malloc(10);11假定变量m定义为“int m=7;”,则定义p的正确语句为( )。Aint p=&m; Bint *p=&m; Cint &p=*m; Dint *p=m;12假定k是一个double类型的变量,则定义指向k的变量p的正确语句为( )。Adouble p=&k; Bdouble *p=&k;Cdouble &p=*k; Dchar *p=”Thank you!”;13假定一条定义语句为“int a10,x,*pa=a;”,若要把数组a中下标为3的
4、元素赋值给x,则不正确的语句为( )。Ax=pa3; Bx=*(a+3); Ca=a3; Dx=*pa+3;14假定有定义“int b10;int *pb;”,则不正确的赋值语句为( )。Apb=b; Bpb=&b0; Cpb=b+2; Dpb=b5;15假定指针变量p定义为“int *p=new int(100);”,要释放p所指向的动态内存,应使用语句( )。Adeletep; Bdelete *p; Cdelete &p; Ddelete p;16假定指针变量p定义为“int *p=calloc(30,sizeof(int);”,要释放p所指向的动态内存,应使用语句( )。Adelete
5、p; Bdeldete(p); Cfreep; Dfree(p);二、填空题1在C语言中,一个函数由函数头和_组成。2在函数外定义的变量称为全局变量,若没有被初始化则系统隐含对它所赋的初值为_。3如果一个函数只允许同一程序文件中的函数调用,则应在访函数定义前加上的C保留字为为_。4如果一个函数直接或间接地调用自身,这样的调用被称为_调用。5调用系统函数时,要先使用#include命令包含该函数的原型语句所在_文件。6函数形参的作用域是该函数的_。7假定p所指对象的值为25,p+1所指对象的值为46,则*p+的值为_。8假定p所指对象的值为25,p+1所指对象的值为46,则*+p的值为_。9假定
6、p所指对象的值为25,p+1所指对象的值为46,则执行“*(p+);”语句后,p所指对象的值为_。10假定a是一个指针数组,则a+1所指对象的地址比a地址大_字节。11若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为_。12假定一个数据对象为int*类型,则指向该对象的指针类型为_。13假定p是一个指向整数对象的指针,则用_表示指针变量p的地址。14若p指向x,则_与x的等价的。15NULL是一个符号常量,通常作为空指针值,它值为_。三、写出下列每个程序运行后的输出结果1. #includevoid SB(char ch)switch (ch)case A:case a:print
7、f(WW);break;case B:case b:printf(GG);break;case C:case c:printf(PP);break;default:printf(BB);break;void main()char a1=b,a2=C,a3=f;SB(a1);SB(a2); SB(a3);SB(A);printf(n);输出结果为:2. #include#includedouble SD(int a,int b,char op)double x;switch(op)case +:x=a+b;break;case -:x=a-b;break;case *:x=a*b;break;c
8、ase /:if(b)x=(double)a/b;else exit(1);break;default:(运算符错!n);exit(1);return x;void main()int x=20,y=8;printf(%3.2lf ,SD(x,y,-);printf(%3.2lf ,SD(x,y,*);printf(%3.2lf ,SD(x,y,/); 输出结果为:3. #includevoid WF(int x,int y)x=x+y;y=x+y;printf(subs:x,y=%d,%dn,x,y);void main()int x=18,y=23;printf(main:x,y=%d,%
9、dn,x,y);WF(x,y);x=2*x;printf(main:x,y=%d,%dn,x,y); 输出结果为:4. #include#includevoid fun(char ss);void main()char s15=;fun(s);printf(%sn,s);void fun(char ss)int i,n=strlen(ss);for(i=0;in/2;i+)char c=ssi;ssi=ssn-1-i;ssn-1-i=c; 输出结果为:5. #includevoid InsertSort(int a,int n)int i,j,x;for(i=1;i=0;j-)/为x顺序向前寻
10、找合适的插入位置if(xaj)aj+1=aj;else break;aj+1=x;void main()int i;int a6=20,15,32,47,36,28;InsertSort(a,6);for(i=0;i6;i+)printf(%d ,ai);printf(n); 输出结果为:6. #includevoid main()int a8=3,5,7,9,11,13,15,17;int i,*p=a;for(i=0;i8;i+);printf(%5d ,*p+);if( (i+1)%4=0 )printf(n); 输出结果为:7. #includeint LA(int *a,int n)
11、int i,s=0;for(i=0;in;i+)s+=ai;return s;void main()int a=5,10,15,20,25,30;int b=LA(a,4);int c=LA(a+2,3);printf(%d %dn,b,c); 输出结果为:8. #includeint LB(int *a,int n)int i,s=1;for(i=0;in;i+)s*=*a+;return s;void main()int a=1,2,3,4,2,4,5,2;int b=LB(a,4)+LB(&a3,4);printf(b=%dn,b); 输出结果为:四、写出下列每个函数的功能1. #inc
12、ludeint WB(int a,int n,int x)for(int i=0;in;i+)if(ai=x)return 1;return 0; 函数功能为:2. #includeint WC(int a,int n,int k)int c=0;for(int i=0;i=k)c+;return c; 函数功能为:3. #include#include#includeconst int N=10;int ff(int x,int y)int z;printf(%d + %d = ,x,y);scanf(%d,&z);if(x+y=z)return 1;else return 0;void m
13、ain()int i,a,b,c=0;srand(time(0); /初始化随机数系列for(i=0;iN;i+)a=rand()%20+1; /rand90函数产生0-32767之间的一个随机数 b=rand()%20+1;c+=ff(a,b);printf(得分:%dn,c*10); 函数功能为:4. int fun6(int m,int n,int b=2)if(mb & nb)return m*n;else if(m%b=0 & n%b=0)return b*fun6(m/b,n/b,b);else return fun6(m,n,+b); 函数功能为:5. #include#includevoid LI(int n)int * a=(int *)malloc(n*sizeof(int);int i;for(i=0;i=0;i-)printf(%d ,*(a+i);printf(n);free(a); 函数功能为:6. #includeint LK(double a,int n)double s=0;int i,m=0;for(i=0;in;i+)s+=ai;s/=n;for(i=0;i=s)m+;return m; 函数功能为:
限制150内