吉林大学C语言习题2.docx

上传人:b****0 文档编号:9804550 上传时间:2023-05-21 格式:DOCX 页数:35 大小:32.75KB
下载 相关 举报
吉林大学C语言习题2.docx_第1页
第1页 / 共35页
吉林大学C语言习题2.docx_第2页
第2页 / 共35页
吉林大学C语言习题2.docx_第3页
第3页 / 共35页
吉林大学C语言习题2.docx_第4页
第4页 / 共35页
吉林大学C语言习题2.docx_第5页
第5页 / 共35页
吉林大学C语言习题2.docx_第6页
第6页 / 共35页
吉林大学C语言习题2.docx_第7页
第7页 / 共35页
吉林大学C语言习题2.docx_第8页
第8页 / 共35页
吉林大学C语言习题2.docx_第9页
第9页 / 共35页
吉林大学C语言习题2.docx_第10页
第10页 / 共35页
吉林大学C语言习题2.docx_第11页
第11页 / 共35页
吉林大学C语言习题2.docx_第12页
第12页 / 共35页
吉林大学C语言习题2.docx_第13页
第13页 / 共35页
吉林大学C语言习题2.docx_第14页
第14页 / 共35页
吉林大学C语言习题2.docx_第15页
第15页 / 共35页
吉林大学C语言习题2.docx_第16页
第16页 / 共35页
吉林大学C语言习题2.docx_第17页
第17页 / 共35页
吉林大学C语言习题2.docx_第18页
第18页 / 共35页
吉林大学C语言习题2.docx_第19页
第19页 / 共35页
吉林大学C语言习题2.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

吉林大学C语言习题2.docx

《吉林大学C语言习题2.docx》由会员分享,可在线阅读,更多相关《吉林大学C语言习题2.docx(35页珍藏版)》请在冰点文库上搜索。

吉林大学C语言习题2.docx

吉林大学C语言习题2

 

《C语言程序设计》

习题

李玲张海蓉黄玉兰孙大洋赵晓京温泉厉茜

 

吉林大学通信工程学院

第6章

练习6-1答案

一、选择题

1.已知函数abc的定义为:

voidabc()

{……}

则函数定义中void的含义是(A)。

A.执行函数abc后,函数没有返回值B.执行函数abc后,函数不再返回

C.执行函数abc后,可以返回任意类型D.以上三个答案全是错误的

2.已知:

intp();,p是(C)。

A.int型变量

B.函数p的调用

C.一个函数声明,该函数的返回值是int型的值

D.强制类型转换表达式中的变量

3.以下正确的函数形式是(D)。

A.doublefun(intx,inty)B.fun(intx,y)

{z=x+y;returnz;}{intz;returnz;}

C.fun(x,y)D.doublefun(intx,inty)

{intx,y;doublez;z=x+y;returnz;}{doublez;z=x+y;returnz;}

4.以下说法正确的是(C).

A.定义函数时,形参的类型说明可以放在函数体内

B.return后边的值不能为表达式

C.如果函数值的类型与返回值表达式的类型不一致,以函数值类型为准

D.如果形参与实参的类型不一致,以实参类型为准

5.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是(B).

A.float型B.int型C.long型D.double型

6.下面函数调用语句含有实参的个数为(B).

func((exp1,exp2),(exp3,exp4,exp5));

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

7.以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z—y)的值,请选择填空.

#include

#include〈math.h>

floatf(float,float);

main()

{floatx,y,z,sum;

scanf(”%f%f%f",&x,&y,&z);

sum=f(①B)+f(②C);(注:

或者选择sum=f(①C)+f(②B))

printf("sum=%f\n”,sum);

}

floatf(floata,floatb)

{floatvalue;

value=a/b;

return(value);

}

①A.x-y,x+yB.x+y,x—yC.z+y,z-yD.z—y,z+y

②A.x—y,x+yB.x+y,x—yC.z+y,z—yD.z—y,z+y

二、填空题

8.以下程序的功能是根据输入的"y"("Y”)与”n"(”N"),在屏幕上分别显示出”ThisisYES。

”与”ThisisNO。

”。

请填空,①是(break;)、②是(getchar()或getch()或getche()).

#include

h〉

voidYesNo(charch)

{switch(ch)

{case’y':

case'Y':

printf("\nThisisYES。

\n");①;

case’n’:

case'N':

printf(”\nThisisNO.\n”);

}

main()

{charch;

printf("\nEnterachar’y’,’Y’or'n','N':

");

ch=②;

printf(”ch:

%c",ch);

YesNo(ch);

9.下面函数pi的功能是:

根据以下公式,返回满足精度(0.0005)要求的

的值,请填空,①是(t=n=1,s=0)、②是(s*2)。

/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+(1/3)*(2/5)*(3/7)*(4/9)+….

#include〈conio.h〉

#include

h>

#include〈stdio.h>

doublepi(doubleeps)

{doubles,t;intn;

for(①;t〉eps;n++)

{s+=t;

t=n*t/(2*n+1);

return(②);

}

main()

{doublex;

printf("\nPleaseenteraprecision:

”);

scanf(”%1f”,&x);

printf(”\neps=%1f,

=%1f”,x,pi(x));

三、读程序,写结果

10.下列程序的运行结果是(5)。

#include〈stdio.h>

fun(intp)

{inta=10;

p=a;

++p;

main()

{inta=5;

fun(a);

printf("%d\n",a);

}

11.下列程序的运行结果是(8)。

#include〈stdio.h>

intabc(intu,intv);

main()

{inta=24,b=16,c;

c=abc(a,b);

printf(”%d\n",c);

}

intabc(intu,intv)

{intw;

while(v)

{w=u%v;

u=v;

v=w;

returnu;

12.下列程序的运行结果是:

(beforeswapa=5,b=10

inswapx=10,y=5

afterswapa=5,b=10)。

#include〈stdio.h>

main()

{inta,b;

a=5;b=10;

printf(”beforeswapa=%d,b=%d\n",a,b);

swap(a,b);

printf("afterswapa=%d,b=%d\n”,a,b);

swap(intx,inty)

{inttemp;

temp=x;x=y;y=temp;

printf("inswapx=%d,y=%d\n”,x,y);

13.以下程序的运行结果是:

(i=5

i=2

i=2

i=0

i=2)。

inti=0;

main()

{inti=5;

reset(i/2);printf("i=%d\n",i);

reset(i=i/2);printf(”i=%d\n",i);

reset(i/2);printf(”i=%d\n",i);

workover(i);printf("i=%d\n",i);

workover(inti)

{i=(i%i)*((i*i)/(2*i)+4);

printf("i=%d\n”,i);

return(i);

}

reset(inti)

{i=i<=2?

5:

0;

return(i);

}

练习6-2答案

一、选择题

1.将一个函数说明为static后,该函数将(A)。

A.既能被同一源文件中的函数调用,也能被其他源文件中的函数调用

B.只能被同一源文件中的函数调用,不能被其他源文件中的函数调用

C.只能被其他源文件中的函数调用,不能被同一源文件中的函数调用

D.既不能被同一源文件中的函数调用,也不能被其他源文件中的函数调用

2.如果在一个函数中的复合语句中定义了一个变量,则该变量(A)。

A.只在该复合语句中有效B.在该函数中有效

C.在本程序范围内均有效D.为非法变量

3.以下不正确的说法是(D).

A.在不同函数中可以使用相同名字的变量

B.形式参数是局部变量

C.在函数内定义的变量只在本函数范围内有效

D.在函数内的复合语句中定义的变量在本函数范围内有效

4.以下程序的正确运行结果是(D)。

#defineMAX10

inta[MAX],i;

main()

{printf("\n”);sub1();sub3();sub2();sub3();

}

sub2()

{inta[MAX],i,max;

max=5;

for(i=0;i

}

sub1()

{for(i=0;i〈MAX;i++)a[i]=i+i;

sub3()

{inti;

for(i=0;i

printf(”\n");

}

A.024681012141618B.01234

01234024681012141618

C.0123456789D.024681012141618

01234024681012141618

5.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为(A)。

A.自动(auto)B.静态(static)C.外部(extern)D.寄存器(register)

6.以下程序的正确运行结果是(D)。

main()

{inta=2,i;

for(i=0;i<3;i++)printf(”%4d”,f(a));

}

f(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

A.777B.71013C.7911D.789

二、读程序,写结果

7.写出下面程序的运行结果,①是(8)、②是(17)。

#include〈stdio。

h>

main()

{intk=4,m=1,p;

p=fun(k,m);printf(”%d",p);/*①*/

p=fun(k,m);printf("%d”,p);/*②*/

fun(inta,intb)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

8.下面程序的运行结果是(84).

#include〈stdio。

h>

intd=1;

fun(intp)

{intd=5;

d+=p++;

printf(”%d",d);

}

main()

{inta=3;

fun(a);

d+=a++;

printf("%d”,d);

第7章

练习7-1答案

选择题

1.已知:

int*p,a;,则语句“p=&a;”中的运算符“&”的含义是(D).

A.位与运算B.逻辑与运算C.取指针内容D.取变量地址

2.已知:

inta,x;,则正确的赋值语句是(C)。

A.a=(a[1]+a[2])/2;B.a*=*a+1;C.a=(x=1,x++,x+2);D.a=”good";

3.已知:

inta,*p=&a;,则下列函数调用中错误的是(D)。

A.scanf(”%d”,&a);B.scanf(”%d”,p);C.printf("%d”,a);D.scanf(”%d",*p);

4.已知:

char*p,*q;,选择正确的语句(C).

A.p*=3;B.p/=q;C.p+=3;D.p+=q;

5.已知:

intx;,则下面的说明指针变量pb的语句(C)是正确的.

A.intpb=&x;B.int*pb=x;C.int*pb=&x;D.*pb=*x;

练习7—2答案

一、选择题

1.设有说明int(*ptr)[M];,其中的标识符ptr是(C).

A.M个指向整型变量的指针

B.指向M个整型变量的函数指针

C.一个指向具有M列的二维数组的一行的指针

D.具有M个指针元素的一维数组的指针

2.已知:

double*p[6];,它的含义是(C)。

A.p是指向double型变量的指针B.p是double型数组

C.p是指针数组D.p是数组指针

3.已知:

chars[10],*p=s,则在下列语句中,错误的语句是(B)。

A.p=s+5;B.s=p+s;C.s[2]=p[4];D.*p=s[0];

4.已知:

chars[100];inti;,则在下列引用数组元素的语句中,错误的表示形式是(D)。

A.s[i+10]B.*(s+i)C.*(i+s)D.*((s++)+i)

5.已知:

charb[5],*p=b;,则正确的赋值语句是(C).

A.b=”abcd";B.*b="abcd”;C.p=”abcd”;D.*p="abcd";

6.下列对字符串的定义中,错误的是(A)。

A.charstr[7]="FORTRAN”;B.charstr[]="FORTRAN";

C.char*str="FORTRAN”;D.charstr[]={’F',’O',’R','T',’R','A’,'N',0};

7.已知:

chars[20]="programming”,*ps=s;,则不能引用字母o的表达式是(A)。

A.ps+2B.s[2]C.ps[2]D.ps+=2,*ps

8.已知:

char**s;,正确的语句是(B)。

A.s="computer";B.*s="computer";C.**s="computer”;D.*s='A’;

9.已知:

charc[8]="beijing”,*s=c;inti;,则下面的输出语句中,错误的是(B)。

A.printf(”%s\n",s);B.printf(”%s\n",*s);

C.for(i=0;i<7;i++)D.for(i=0;i<7;i++)

printf(”%c”,c[i]);printf(”%c”,s[i]);

10.已知:

char*aa[2]={”abcd”,"ABCD”};,则以下说法正确的是(D)。

A.aa数组元素的值分别是”abcd"序列和”ABCD”序列

B.aa是指针变量,它指向含有两个数组元素的字符型一维数组

C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址

D.aa数组的两个元素中各自存放了字符’a'和'A’的地址

11.已知:

inta[3][4],*p=&a[0][0];p+=6;,那么*p和(D)的值相同。

A.*(a+6)B.*(&a[0]+6)C.*a[1]+2D.a[1][2]

12.已知:

inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a;,则值为3的表达式是(A)。

A.p+=2,*(p++)B.p+=2,*++pC.p+=3,*p++D.*(&a[0][0]+6)

13.已知:

int**p;,则变量p是(B).

A.指向int的指针B.指向指针的指针

C.int型变量D.以上三种说法均是错误的

14.已知:

inta[]={1,2,3,4},y,*p=&a[1];,则执行语句y=(*——p)++;之后,变量y的值为(A)。

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

15.已知:

intb[]={1,2,3,4},y,*p=b;,则执行语句y=*p++;之后,变量y的值为(A)。

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

16.已知:

intx[]={1,3,5,7,9,11},*ptr=x;,则能够正确引用数组元素的表达式是(B)。

A.xB.*(ptr--)C.x[6]D.*(--ptr)

17.已知:

intx[]={1,3,5,7,9,11},*ptr=x;,则不能够正确引用数组元素的表达式是(B)。

A.*(ptr——)B.*(--ptr)C.*(ptr++)D.*(++ptr)

18.若有以下语句且0<=k〈6,则正确表示数组元素地址的表达式是(C).

staticintx[]={1,3,5,7,9,11},*ptr=x,k;

A.x++B.&ptrC.&ptr[k]D.&(x+1)

19.已知:

inti,x[3][4];,则不能将x[1][1]的值赋给变量i的语句是(C)。

A.i=*(*(x+1)+1);B.i=x[1][1];C.i=*(*(x+1));D.i=*(x[1]+1);

20.已知:

inta[2][3]={2,4,6,8,10,12};,正确表示数组元素的地址是(A)。

A.*(a+1)B.*(a[1]+2)C.a[1]+3D.a[0][0]

21.已知:

int*p;,使用如下语句动态申请一个int型的存储单元,应当使用(D).

p=()malloc(sizeof(int));

A.intB.int*C.(*int)D.(int*)

二、填空题

22.阅读程序,下面程序的输出结果是(15).

#include

h>

main()

{staticinta[2][3]={{1,2,3},{4,5,6}};

intm,*ptr;

ptr=&a[0][0];

m=(*ptr)*(*(ptr+2))*(*(ptr+4));

printf("%d\n”,m);

}

23.下面程序的功能是:

从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串.则①是('\0’或0)、②是(++)。

main()

{charstr[81],*sptr;

inti;

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

{str[i]=getchar();

if(str[i]==’\n’)break;

}

str[i]=①;

sptr=str;

while(*sptr)putchar(*sptr②);

24.在下面的程序中若第一个printf语句的输出为ffe2,则其余语句的输出结果分别为:

①是(fff4)、②是(a)、③是(0)、④是(b)。

main()

{staticshorta[]={1,2,3,4,5,6,7,8,9,0},*p=a;

printf("%x\n”,p);/*输出结果为ffe2*/

printf("%x\n”,p+9);/*输出①*/

printf(”%x\n",*p+9);/*输出②*/

printf(”%x\n”,*(p+9));/*输出③*/

printf("%x\n",*++p+9);/*输出④*/

}

25.下面程序的输出结果,①是(m)、②是(a)、③是(w)、④是(z)、⑤是(mnopqr)。

#include

h>

char*pp[2][3]={"abc","defgh","ijkl”,"mnopqr”,"stuvw”,”xyz”};

main()

{printf(”%c\n",***(pp+1));/*输出①*/

printf(”%c\n”,**pp[0]);/*输出②*/

printf(”%c\n”,(*(*(pp+1)+1))[4]);/*输出③*/

printf(”%c\n”,*(pp[1][2]+2));/*输出④*/

printf(”%s\n”,**(pp+1));/*输出⑤*/

三、读程序,写结果

26.下面程序的运行结果是:

(□□□1□□□3□□□5□□□7

□□□9□□11□□13□□15

□□17□□19□□21□□23)。

(注:

□表示空格。

#include

h>

main()

{inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

int*p,i;

for(p=a,i=0;p<&a[0][0]+12;p++,i++)

{if(i%4==0)printf("\n");

printf(”%4d”,*p);

}

27.下面程序的运行结果是(3,3,3)。

#include〈stdio。

h〉

main()

{inta=2,*p,**pp;

pp=&p;p=&a;

a++;

printf("%d,%d,%d\n”,a,*p,**pp);}

练习7—3答案

一、选择题

1.main(argc,argv)中形式参数argv的正确说明形式应当为(A).

A.char*argv[]B.charargv[][]C.charargv[]D.char*argv

2.说明语句int(*p)();的含义是(C)。

A.p是一个指向一维数组的指针变量

B.p是指针变量,指向一个整型数据

C.p是一个指向函数的指针,该函数的返回值是一个整型

D.以上都不对

3.说明语句int*(*p)();的含义是(D)。

A.p是一个指向int型数据的指针

B.p是指针变量,它构成了指针数组

C.p是一个指向函数的指针,该函数的返回值是一个整型

D.p是一个指向函数的指针,该函数的返回值是一个指向整型的指针

4.已知函数说明语句void*f();,则它的含义是(A)。

A.函数f的返回值是一个通用型指针

B.函数f的返回值可以是任意的数据类型

C.函数f无返回值

D.指针f指向一个函数,该函数无返回值

5.函数的功能是交换变量x和y中的值,并且通过正确调用返回交换的结果.能正确执行此功能的函数是(D)。

A.funa(int*x,int*y)B.funb(intx,inty)

{int*p;{intt;

*p=x;*x=*y;*y=*p;t=x;x=y;y=t;

}}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2