吉林大学C语言习题.docx
- 文档编号:10347819
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:33
- 大小:27.81KB
吉林大学C语言习题.docx
《吉林大学C语言习题.docx》由会员分享,可在线阅读,更多相关《吉林大学C语言习题.docx(33页珍藏版)》请在冰豆网上搜索。
吉林大学C语言习题
《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
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
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
#include
#include
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
fun(intp)
{inta=10;
p=a;
++p;
}
main()
{inta=5;
fun(a);
printf("%d\n",a);
}
11.下列程序的运行结果是(8)。
#include
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
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 } 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 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 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 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 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 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 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; }}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 吉林大学 语言 习题