吉林大学C语言习题集_第1页
吉林大学C语言习题集_第2页
吉林大学C语言习题集_第3页
吉林大学C语言习题集_第4页
吉林大学C语言习题集_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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.ini型C.long型D.double型

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

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

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

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

#include<stdio.h>

#include<math.h>

floatf(float,float);

main()

{floatx,y,z,sum;

scanf(H%f%f%f,&x,&y,&z);

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

printf(,,sum=%f\nH,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”),在屏幕上分别显示出叮hisis

YES.“与“ThisisNO.%请填空,①是(break;)、②是(getchar()或getch()或

getche())o

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case*y':

case'Y*:printf(n\nThisisYESAn");①;

case'n':

caseN:printf("\nThisisNO.\nn);

)

)

main()

{charch;

printf("\nEnterachar'y;¥or'n'JNT');

ch=②;

printf("ch:%c”,ch);

YesNo(ch);

)

9.下面函数pi的功能是:根据以下公式,返回满足精度(0.0005)要求的乃的值,请

填空,①是(t=n=l,s=O)、②是(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<math.h>

#include<stdio.h>

doublepi(doubleeps)

{doubles,t;intn;

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

{s+=t;

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

)

return(②);

main()

{doublex;

printf("\nPleaseenteraprecision:'1);

scanf(n%lf\&x);

printf(M\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\nK,a);

)

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

#include<stdio.h>

intabc(intu,intv);

main()

{inta=24,b=16,c;

c=abc(a,b);

printf(n%d\nH,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)o

inti=0;

main()

{inti=5;

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

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

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

workover(i);printf(ni=%d\nM,i);

}

workover(inti)

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

printf(ni=%d\nu,i);

return(i);

)

reset(inti)

{i=i<=2?5:0;

retum(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\n");sub1();sub3();sub2();sub3();

)

sub2()

{inta[MAX],i,max;

max=5;

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

)

sub1()

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

}

sub3()

{inti;

for(i=0;i<MAX;i++)printf(',%d';a[ij);

printf(',\nM);

1

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(n%4d",f(a));

1

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=l,p;

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

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

)

fun(inta,intb)

{staticintm=0,i=2;

i+=m+l;

m=i+a+b;

return(m);

)

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

#include<stdio.h>

intd=l;

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[l]+a[2])/2;B.a*=*a+l;C.a=(x=l,x++,x+2);D.a=Hgood";

3.:inta,*p=&a;,那么以下函数调用中错误的选项是(D)。

A.scanf("%d",&a);B.scanf(H%du,p);C.printf(,'%dH,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.设有说明其中的标识符ptr是(C)。

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

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

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

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

2.:double它的含义是(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.scharb[5],*p=b;,那么正确的赋值语句是(C5

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

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

A.charstr[7]=nFORTRANH;B.charstr[J="FORTRAN";

C.char*st尸"FORTRAN";D.charstr[]={'F,O,R,T,'R?A',N,0};

7.:chars[20]=nprogrammingM,*ps=s;,那么不能引用字母o的表达式是(A)。

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

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

A.s="compuier";B.*s="compuier";C.**s="compuier";D.*s='A';

9.:charc[8]=nbeijingn,*s=c;inti;,那么下面的输出语句中,错误的选项是(B)。

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

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

printf(,'%cn,c[i]);printf(n%cn,s[i]);

10.:char*aa[2]={nabcdn,1ABCDn);,那么以下说法正确的选项是(D)。

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

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

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

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

11.:inta[3][4],*p=&a[0][0];p+=6;,那么*p和(D)的值一样。

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

12.:inta[]={l,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[l];>那么执行语句y=(*--p)++;之后,变量y的值为

(A)。

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

15.:intb[]={l,2,3,4),y,*p=b;>那么执行语句y=*p++;之后,变量y的值为(A)。

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

16.:intx[]={l,3,5,7,9,11),*ptr=x;,那么能够正确引用数组元素的表达式是(B)。

A.xB.*(ptr-)C.x[61D.*(--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+l)

19.:inti,x[3][4];,那么不能将的值赋给变量i的语句是(C)0

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

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

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

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

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

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

二、填空题

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

#include<stdio.h>

main()

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

intm,*pir;

ptr=&al0]l0];

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

printf(,'%d\nH,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]=①;

spti-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(H%x\nn,p+9);/*输出①*/

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

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

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

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

#include<stdio.h>

nH,,Hnn,,,MHHn

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

main()

出①*/

,/

{pnntf('%c\n,***(pp+l));/*建

出②*/

printf("%c\nu,**pp⑼);

出③

/**/

printf(H%c\nu,(*(*(pp+l)+1))[4]);/

/*出④*/

Hn/*/

printf(%c\n,*(pp[l][2]+2));出

⑤*/

printf("%s\n",**(pp+l));/

三、读程序,写结果

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

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

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

□□17口口19口口21口口23)。(71::□表不空格。)

#include<stdio.h>

main()

{inta[3][4]={l,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(,'%4dn,*p);

)

)

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

#include<stdio.h>

main()

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

pp=&p;p=&a;

a++;

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

练习7・3答案

一、选择题

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

A.char*argvf]B.charargv[]nC.charargvflD.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那么它的含义是(A)。

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

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

C.函数f无返回值

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

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

确执行此功能的函数是(D)o

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;

C.func(int*x,int*y)D.fund(int*x,int*y)

{*x=*y;*y=*x;{»x=*x+*y;*y=*x-*y;*x=*x-*y;

)

6.阅读程序,下面程序的输出结果是(B)。

假设可执行文件的文件名为:PROG.EXE

运行时键入的命令行为:PROG-386NET3<回车,

#include<stdio.h>

main(intargc,char*argv[])

{inti;

for(i=0;i<argc;i++)printf(n%s\n'\argv[i]);

A.-386B.PROG.EXEC.PROG.EXED.PROG

NET3-386--386

NET3386NET3

NET3

7.下面程序的运行结果是(A)。

#include<stdio.h>

f(intx,inty)

{return(y-x);

)

main()

{inta=5,b=6,c=2;

intf();

int(*g)()=f;

c=(*g)(a,b);

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

)

A.1B.2C.3D.前面三个答案均是错误的

8•假设用数组名作为函数调用的实参,传递给形参的是(A)。

A.数组的首地址B.数组第一个元素的值

C.数组中全部元素的值D.数组元素的个数

二、填空题

9.下面的函数fun的功能是将形参x的值转换成二进制数,所得二进制数的每一位

放在一维数组中返回,二进制的最低位放在下标为0的元素中,其他依次类推,

那么①是(2)、②是(2)。

fun(intx,intb[])

{intk=O,r;

do

{r=x%①;

b[k++]=r;

x/=②;

}while(x);

)

10.函数expand(chars[],chart[])在将字符串s复制到字符串t时,将其中的换行符

和制表符转换为可见的转义字符,即用“\n”表示换行符,用\”表示制表符。那

么①是(j++)、②是(N)、③是(j++)、④是(N)、⑤是(j++)、⑥是('\0')。

expand(charsfl,chart[l)

{inti,j;

for(i=j=0;s[i]!='\0';i++)

switch(s[i])

{case*\n':t[①]=②;break;

case*\t':t[③]=④;t[j++]=,t,;break;

default:t[⑤]=s[i];break;

)

tfjl=®;

三、读程序,写结果

11.以下程序的运行结果是(10753-7)。

main()

{inta[5]={5,10,-7,3,7),i,j,t;

sort(a);

for(i=0;i<=4;i++)printf(H%d”,a[i]);

)

sort(inta[])

{int

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

for(j=0;j<4-i;j++)

if(a[j]<a[j4-l]){t=a[j];a[j]=a[j4-l];a[j+l]=t;}

)

12.以下程序的运行结果是(・13689)。

main()

{inta[5]={9,6,8,t,p;

sort(a);

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

)

sort(inta[])

{inti,j,t,p;

for(j=0;j<4;j++)

{P=j;

for(i=j;i<=4;i++)if(a[i]<a[pj)p=i;

t=a[p];a[p]=a[j];a[j]=t;

)

)

13.以下程序的运行结果是(sum=6)。

main()

{inta[3][3]={l,3,5,7,9,11,13,15,17};intsum;

sum二func(a);

printf("\nsum=%d\n",sum);

)

func(inta[][3])

{inti,j,sum=0;

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

for(j=0;j<3;j++)

{a[i][j]=i+j;

if(i==j)sum=sum+a[i][j];

return(sum);

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

(beforeswapa=5,b=10

inswapx=10,y=5

afterswapa=10,b=5)。

#include<stdio.h>

main()

{inta,b;

a=5;b=10;

printfC^beforesw叩a=%d,b=%d\n",a,b);

swap(&a,&b);

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

i

swap(int*px,int*py)

{inttemp;

temp=*px;

*px=*py;

*py=temp;

printf(ninswapx=%d,y=%d\n'\*px,*py);

)

15.下面程序的运行结果是(0123)。

#include<stdio.h>

func(intb[J)

{intj;

for(j=0;j<4;j++)b[jj=j;

)

main()

{inta[4],i;

func(a);

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

)

16.运行下面程序,如果从键盘上输入字符串"qwerty”和字符串”abed",那么程序的

运行结果是(10)。

#include<stdio.h>

strle(chara[],charb[])

{intnum=0,n=0;

while(a[num]!-\0')num++;

while(b[n])

{a[num]=b[n];num++;n++;}

return(num);

main()

{charstrl[81],st⑵81];

gets(strl);

gets(str2);

printf(,,%d\nn,strle(strl,str2));

)

17.下面程序的运行结果是(AGAAGAG)。

#include<stdio.h>

#include〈stringJ,.h>

voidfun(char*w,intm)

{chars,*pl,^p2;

pl=w;

p2=w+m-l;

while(pl<p2)

{s=*pl++;*pl=*p2—;*p2=s;}

)

main()

{staticchara[]="ABCDEFGH;

fun(a,strlen(a));

puts(a);

}

第8章

练习8答案

选择题

1.在程序中要使用语句:primf("%s\n”,STRING);输出一个长度为5个字符的提示信

息“OK!”,那么应使用宏定义语句(D)。

A.#defineSTRINGnOK!"B.#defineSTRING

C.#defineSTRING\nOK!\nD.#defineSTRING”\"OK!\"”

2.以下正确的描述为(C)。

A.每个C语言程序必须在开头用预处理命令#include<stdio.h>

B.预处理命令必须位于C源程序的首部

C.在C语言中预处理命令都以“科开头

D.C语言的预处理命令只能实现宏定义和条件编译的功能

3.C语言的编译系统中宏命令是(D)。

A.在程序运行时进展代换处理的

B.在程序连接时进展处理的

C.和源程序中其他C语句同时进展编译的

D.在对源程序中其他成分正式编译之前进展处理的

4.从以下选项中选择不会引起二义性的宏定义是(D)。

A.#definePOWER(x)x*xB.#definePOWER(x)(x)*(x)

C.#definePOWER(x)(x*x)D.#definePOWER(x)((x)*(x))

5.假设有宏定义如下:

#defineX5

#defineYX+1

#defineZY*X/2

那么执行以下printf语句后,输出结果是(D)。

inta;a=Y;

printf("%d;',Z);

printf("%d\nn,-a);

A.7,6B.12,6C.12,5D,7,5

6•假设a、b、c、d、t均为int型变量,那么执行以下程序段后结果为(C)。

#defineMAX(A,B)(A)>(B)?(A):(B)

#definePRINT(Y)printf("Y=%d\n”,Y)

a=l;b=2;c=3;d=4;

t=MAX(a+b,c+d);

PRINT(t);

A.Y=3B.存在语法错误C.Y=7D.Y=0

第9章

练习9-1答案

一、选择题

1.typedefunsignedlongLONG的作用是(D)。

A.建设了一种新的数据类型B.定义了一个整形变量

C.定义了一个长整型变量D.定义了一个新的数据类型标识符

2.下面的4个运算符中,优先级最低的是(D)。

A.()B..C.->D.++

3.:

struct

{inti;

charc;

floata;

}test;

那么sizeof(test)的值是(D)。

A.4B.5C.6D.7

4.当声明一个构造变量时系统分配给它的内存是(A)。

A.各成员所需内存量的总和B.构造中第一个成员所需内存量

C.成员中占内存量最大者所需的容量D.构造中最后一个成员所需内存量

5.以下对构造类型变量的定义中错误的选项是(D)。

A.typedefstructstudentB.structstudent

{intnum;{intnum;

floatage;floatage;

}STUDENTstdl;}stdl;

C.structD.struct

{intnum;{intnum;

floatage;floatage;

}stdl;}student;

structstudentstdl;

6.根据下面的定义,能打印出字母M的语句是(D)。

structperson

{charname[9];

intage;

);

structpersonclass[10]={nJohnM,17,'Taul'^lQ,"Mary",18,"adamH,16};

A.printf("%c\n",class[3].name);B.pnntf(n%c\nH,class[3].name[1]);

C.printf("%c\n",class[2].name[1]);D.printf(n%c\nn,class[2].name[0]);

7.以下scanf函数调用语句中对构造变量成员的错误引用是(D)。

structpupil

{charnam[20];

intage;

intsex

}pup[5],*p;

p=pup;

A.scanf("%sn,pup[l].name);B.scanf(n%d'\&pupLOJ.age);

C.scanf("%dM,&(p->sex));D.scanf(M%dn,p->age);

8.假设有以下程序段:

structdent

{intn;

int*m;

);

inta=l,b=2,c=3;

structdents[3]={{101,&a},{102,&b},{103,&c));

structdent*p=s;

那么以下表达式中值为2的是(D)o

A.(p++)->mB.*(p++)->mC.(*p).mD.*(++p)->m

二、填空题

9.:

struct

{intx,y;

}s[2]={{l,2},{3,4}},*P=s;

那么表达式++p->x的值(①2),表达式(++p)->x的值是(②3)o

10.下面的程序从终端上输入n个人的年龄、性别和姓名,然后输出。那么①是(p+n)、

②是(gets(p->name)或scanf(,'%s,',p->name))>③是(p+n)。

includeHstdio.hM

structman

{charname[20J;

unsignedage;

charsex[7J;

);

main()

{structmanperson[51;

data_in(person,5);

data_out(person,5);

)

data_in(structman*p,intn)

{structman*q=①;

for(;p<q;p++)

{printf(,'age:sex:nameH);

scanf(n%u%sn,&p->age.p->sex);

②;

)

)

data_out(structman*p,intn)

{structman*q=③;

for(;p<q;p++)

printf(u%s;%u%s\nu,p->name,p->age,p->sex);

}

三、读程序,写结果。

11.下面程序的运行结果是(Zhao)。

#include<stdio.h>

structstu

{intnum;

charnameflO];

intage

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论