中央电大《C语言程序设计》形考册(3)

时间:2024-04-30 09:31:21 5A范文网 浏览: 平时作业 我要投稿

一、选择题

1.       在下面的( C )函数声明语句存在语法错误。

A.AA(int a,int b);     B.AA(int ,int)     C.AA(int a;int b)       D.AA(int a,int)

2.在下面的( C )不能作为函数的返回类型。

A.void      B.int     C.new      D.long

3.下面正确的函数原型语句是( B )。

A.int Function(void a);     B.void Function(int);

C.int Function(a);         D.void int(double a);

4.函数调用func((exp1,exp2),exp3*exp4-exp5)中所含实参的个数为( B )个。

A.1     B.2     C.4       D.5

5.下面的标识符中,( C )是文件级作用域。

A.函数形参     B.语句标号     C.外部静态类标识符    D.自动类标识符

6.下面的标识符中,( B )具有全局级作用域。

A.函数形参     B.全局变量     C.内部静态类标识符    D.自动变量符

7.假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址大( C )字节。

A.1     B.2     C.4       D.8

8.假定a为一个字符数组名,则a[8]的地址比该数组的首地址大( B )个字节。

A.4     B.8     C.16       D.32

9.假定a为一个数组名,则下面的( B )表示有错误。

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

10.用calloc函数创建具有10个整型元素的一维数组的正确语句是( C  )。

A.int *p=calloc(10,2);         B.int *p=callo(10;

C.int *p=calloc(10,4);         D.int *p=malloc(10);

11.假定变量m定义为“int m=7;”,则定义p的正确语句为( B )。

A.int p=&m;     B.int *p=&m;     C.int &p=*m;       D.int *p=m;

12.假定k是一个double类型的变量,则定义变量p的正确语句为( B  )。

A.double p=&k;        B.double *p=&k;    

C.double &p=*k;       D.char  *p=”Thank you!”;

13.假定一条定义语句为“int a[10],x,*pa=a;”,若要把数组a中下标为3的元素赋值给x,则不正确的语句为(  D  )。

A.x=pa[3];     B.x=*(a+3);     C.x=a[3];       D.x=*pa+3;

14.假定有定义“int b[10];int *pb;”,则不正确的赋值语句为(  D  )。

A.pb=b;     B.pb=&b[0];     C.pb=b+2;       D.pb=b[5];

15.假定指针变量p定义为“int *p=new int(100);”,要释放p所指向的动态内存,应使用语句( A  )。

A.delete p;     B.delete *p;     C.delete &p;       D.delete []p;

16.假定指针变量p定义为“int *p=calloc(30,sizeof(int));”,要释放p所指向的动态内存,应使用语句( D  )。

A.delete[p];     B.delete(p);     C.free[]p;       D.free(p);

 

二、填空题

1.在C语言中,一个函数由函数头和___函数体_______组成。

2.在函数外定义的变量称为全局变量,若没有被初始化则系统隐含对它所赋的初值为___0______。

3.如果一个函数只允许同一程序文件中的函数调用,则应在访函数定义前加上的C保留字为为___static______。

4.如果一个函数直接或间接地调用自身,这样的调用被称为__递归_____调用。

5.调用系统函数时,要先使用#include命令包含该函数的原型语句所在__头___文件。

6.函数形参的作用域是该函数的__内部___。

7.假定p所指对象的值为25,p+1所指对象的值为46,则*p++的值为__25______。

8.假定p所指对象的值为25,p+1所指对象的值为46,则*++p的值为__46______。

9.假定p所指对象的值为25,p+1所指对象的值为46,则执行“*(p++);”语句后,p所指对象的值为__46______。

10.假定a是一个指针数组,则a+1所指对象的地址比a地址大__4___字节。

11.若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为___(char*)p______。

12.假定一个数据对象为int*类型,则指向该对象的指针类型为__int**______。

13.假定p是一个指向整数对象的指针,则用___&p___表示指针变量p的地址。

14.若p指向x,则___*p___与x的等价的。

15.NULL是一个符号常量,通常作为空指针值,它值为__ 0___。

 

三、写出下列每个程序运行后的输出结果

1. #include<stdio.h>

void SB(char ch){

switch (ch){

case 'A':case 'a':

printf("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");

}

输出结果为:

GGPPBBWW

Press any key to continue

 

 

 

2. #include<stdio.h>

#include<stdlib.h>

double 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;

case '/':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,'/'));

}

输出结果为:

12.00 160.00 2.50

Press any key to continue

 

3. #include<stdio.h>

void WF(int x,int y){

x=x+y;

y=x+y;

printf("subs:x,y=%d,%d/n",x,y);

}

void main(){

int x=18,y=23;

printf("main:x,y=%d,%d/n",x,y);

WF(x,y);

x=2*x;

printf("main:x,y=%d,%d/n",x,y);

}

输出结果为:

main:x,y=18,23

subs:x,y=41,64

main:x,y=36,23

Press any key to continue

 

4. #include<stdio.h>

#include<string.h>

void fun(char ss[]);

void main(){

char s[15]="567891234";

fun(s);

printf("%s/n",s);

}

void fun(char ss[]){

int i,n=strlen(ss);

for(i=0;i<n/2;i++){

char c=ss[i];

ss[i]=ss[n-1-i];

ss[n-1-i]=c;

}

}

输出结果为:

432198765

Press any key to continue

 

5. #include<stdio.h>

void InsertSort(int a[],int n)

{

int i,j,x;

for(i=1;i<n;i++){//进行n次循环

x=a[i];

for(j=i-1;j>=0;j--)//为x顺序向前寻找合适的插入位置

if(x>a[j])a[j+1]=a[j];

else break;

a[j+1]=x;

}

}

void main()

{

int i;

int a[6]={20,15,32,47,36,28};

InsertSort(a,6);

for(i=0;i<6;i++)printf("%d ",a[i]);

printf("/n");

}

输出结果为:

47 36 32 28 20 15

Press any key to continue

 

6. #include<stdio.h>

void main(){

int a[8]={3,5,7,9,11,13,15,17};

int i,*p=a;

for(i=0;i<8;i++){;

printf("%5d ",*p++);

if( (i+1)%4==0 )printf("/n");

}

}

输出结果为:

3     5     7     9

11    13    15    17

Press any key to continue

 

7. #include<stdio.h>

int LA(int *a,int n){

int i,s=0;

for(i=0;i<n;i++)

s+=a[i];

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 %d/n",b,c);

}

输出结果为:

50 60

Press any key to continue

 

8. #include<stdio.h>

int LB(int *a,int n){

int i,s=1;

for(i=0;i<n;i++)s*=*a++;

return s;

}

void main(){

int a[]={1,2,3,4,2,4,5,2};

int b=LB(a,4)+LB(&a[3],4);

printf("b=%d/n",b);

}                   输出结果为:

b=184

Press any key to continue

四、写出下列每个函数的功能

1. #include<stdio.h>

int WB(int a[],int n,int x){

for(int i=0;i<n;i++)

if(a[i]==x)return 1;

return 0;

}

函数功能为:

根据整型数组元素中是否能找到整数x,返回1或0

 

2. #include<stdio.h>

int WC(int a[],int n,int k){

int c=0;for(int i=0;i<n;i++)

if(a[i]>=k)c++;

return c;

}

函数功能为:

返回数组中前n个其值大于等于k的元素个数。

3. #include<stdio.h>

#include<stdlib.h>

#include<time.h>

const 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 main()

{

int i,a,b,c=0;

srand(time(0));    //初始化随机数系列

for(i=0;i<N;i++){

a=rand()%20+1;    //rand90函数产生0-32767之间的一个随机数

b=rand()%20+1;

c+=ff(a,b);

}

printf("得分:%d/n",c*10);

}

函数功能为:

函数ff让两个数相加,要求输入其和,判断结果是否正确。在主函数中用随机函数产生两个20以内的随机整数,通过10次调用这个函数,算对一次得10分,计算所得分

4. int fun6(int m,int n,int b=2)

{

if(m<b && n<b)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);

}

函数功能为:

此函数带有一个默认参数,若使用默认值,则通过递归调用,返回前2参数的最小公倍数;

不使用默认值时,若最后一个参数不小于前2个参数,则返回前2参数之乘积;

否则,通过递归调用,返回前2参数最小公倍数的n倍数。

5. #include<stdio.h>

#include<stdlib.h>

void LI(int n){

int * a=(int *)malloc(n*sizeof(int));

int i;

for(i=0;i<n;i++)scanf("%d",a+i);

for(i=n-1;i>=0;i--)printf("%d ",*(a+i));

printf("/n");

free(a);

}

函数功能为:

将从键盘输入的n个整数逆序输出

6. #include<stdio.h>

int LK(double a[],int n){

double s=0;int i,m=0;

for(i=0;i<n;i++)s+=a[i];

s/=n;

for(i=0;i<n;i++)if(a[i]>=s)m++;

return m;

}

函数功能为:

求不小于数组元素之平均值的元素个数。

来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。

相关文章:

电大《医药商品营销实务》形考册(4)04-30

电大《医药商品营销实务》形考册(1)04-30

2015春中南大学电大《医学免疫与微生物学》在线作业104-30

中央电大《中国特色社会主义理论体系概论》形考作业(04-30

中央电大《C语言程序设计》形考册(4)04-30

电大《艺术概论》平时作业04-30

黑龙江电大《地域文化》平时作业(三)04-30

黑龙江电大《地域文化》平时作业(四)04-30

黑龙江电大《地域文化》平时作业(一)04-30

黑龙江电大《地域文化》平时作业(二)04-30

热搜文章
最新文章