C语言期末复习及答案_第1页
C语言期末复习及答案_第2页
C语言期末复习及答案_第3页
C语言期末复习及答案_第4页
C语言期末复习及答案_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

第一、二章C语言概述、基本知识

*2.6下面四个选项中,均是合法整型常量的选项是组。

A)160B)-0xcdf0-01D)-0x48a

-OxffffOla986,0122e5

OilOxe0668

*2.9下面四个选项中,均是合法的浮点数的选项是Bo

A)+le+lB)-.6OC)123eD)-e3

5e-9.4l2e-4l.2e-.4.8e-4

03e2-8e5+2e-l5.e-0

*2.10下面四个选项中.均是合法转义符的选项是A。

A),VB),VC)'\018'D)'\M『

•\v'\oi7''\ior

'\n'V'xab''xlf

*2.11下面四个选项中.均是不合法的转义符的选项是B。

A)VB)'\IOirC)'\0ll'D)'\abc'

'\v'V*\**f'\ior

'\xf'\a''\}''xlf

*2.13下面四个选项中.均是不正确的八进制或十六进制数的选项是D。

A)016B)0abcC)010D)0al2

Ox8f017-0x117ff

018Oxa0x16-123

*3.4已有如下定义和输入语句,若要求al,a2,cl,c2的值分别为10,20,A和B,当从第一列开始输入

数据时,正确的数据输入方式是Ao

intal,a2;charcl,c2;

scanf("%d%c%d%c",&al,&cl,&a2,&c2);

A)10AD20B<CR>B)IOnAn2OaB<CR>

C)10aA20B<CR>D)10A20B<CR>

**3.5已有如下定义和输入语句,若要求al,a2,cl,c2的值分别为10,20,A和B,当从第一列开始输入

数据时,正确的数据输入方式是Do

intai,a2;charcl,c2;

scanf("%d%d",&al,&a2);

scanf("%c%c",&cl,&c2);

1

A)1020AB<CR>B)10a20<CR>AB<CR>

C)10nn20ncAB<CR>D)10n20AB<CR>

*4.5执行以下语句后,a,b,c的值分别为—

inta,b,c;

a=b=c=I;

++a||++b&&++c;

A)1,1,1B)2JJC)2,2,lD)2,2,2

*4.22设有intx-l.v-0:则以下发达式的值为10°

x->(y+x)?10:12.5>y++?,A':'Z'

4.3编程题

4.23编制程序,要求输入整数a和b,若a?+b2大于100,则输出a?+b2百位以上的数字,否则输出两数

之和。

4.24试编程判断输入的正整数是否既是5又是7的整数倍,若是输出yes,否则输出no。

4.25请编程序,根据以下函数关系,对输入的每个x值,计算出相应的y值。

Xy

x<00

0<x<10X

10<x<2010

20<x<40-O.5x+2O

4.26将以下程序段改用非嵌套的if语句实现。

int

t=(int)(s/10);

switch(t)

{case10:m=5;break;

case9:m=4;brcak;

case8:m=3;break;

case7:m=2;break;

case6:m=l;break;

2

default:m=0;

4.27用switch编程实现:

-1(x<0)

y=<0(x=0)

1(x>0)

第五章循环控制

5.1选择题

5.1语句while(!E);中的!E等价于。

A)E==0B)E!=IC)E!=0D)E==1

*5.2下面程序的功能是计算正整数2345的各位数字平方和。

#include"stdio.h"

voidmain()

{intn,suni=0;

n=2345:

do{sum=sum+[l];

3

#include<math.h>

#inckide<stdio.h>

voidmain()

{longi=l;

HJpi=0;

while(i*i>=le6)

{pi=[2];i++;}

pi=sqrl(6.0*pi);

printf("pi=%10.6f\n';pi);

)

5.7有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?请分

析程序填空。

#includc<stdio.h>

voidmain()

{intday,xI,x2;

day=O;xl=IO2O;

while([1]){x2=[2】;xl=x2;day++;}

primf("day=%d\n",day);

)

5.8下面程序的功能是用“辗转相除法”求两个正整数的最大公约数。请分析程序填空。

#include<stdio.h>

voidmain。

{intr,in,n;

scanf(',%d%d",&m,&n);

if(m<n)

r=m%n;

while(r){m=n;n=r;r=[2];}

printf("%d\n';n);

)

5.9下面程序的运行结果是o

#include<stdio.h>

voidmain()

{inta,s,n,count;

a=2;s=0;n=1;count=1;

while(count<=7){n=n*a;s=s+n;++count;}

printf("s=%d\n",s);

5

*5.10下血程序的运行结果是。

#include<stdio.h>

voidmain()

{inti.t,sum=0;

for(t=i=l;i<=10;)

{sum+=t;++i;

if(i%3=0)t=-i;

elset=i;

)

printf("sum=%d",sum);

}

5.3编程题

5.11每个苹果0.8元,第一天买2个苹果,第二天开始买前一天的2倍,直至购买的苹果个数达到不超

过100的最大值。编写程序求每天平均花多少钱。

5.12编写程序,求一个整数任意次方的最后三位数。即求妙值的最后三位数,要求x,y从键盘输入。

5.13编写程序,从键盘输入6名学生的五门成绩,分别统计出每个学生的平均成绩。

第六章数组

6.1选择题

6.1若二维数组a有m歹U,则计算任一元索在数组中位置的公式为(假设⑼位于数组的第一

个位置上)。

A)i*m+jB)j*m+iC)i*m+j-lD)i*m+j+l

6.2若有说明:inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是。

A)2B)3C)4D)无法确定

6.3定义如卜变量和数组:intk,a[3n3]={123,4,5,6,7,8,9};则下面语句的输出结果是。

for(k=0;k<3;k++)printf(u%dM,a[k][2-k]);

A)357B)369QI59D)l47

*6.4下面是对s的初始化,其中不正确的是o

A)chars[5J={"abc"};B)chars[5]={,a'/b'/c,);

C)chars[5]=,,,r;D)chars[5]="abcde";

*6.5下面程序段的运行结果是o

charc[5]={'aVb':\0,;cV\0,};

printf("%s",c);

A)'a"b'B)abC)abcD)aM(誉示空格)

6

*6,6对两个数组a和b进行如下初始化

chara[]="ABCDEF";charb[]={,A,:B,;C,;D,;E,;F};

则以下叙述正确的是0

A)a与b数组完全相同B)a与b数组长度相同

C)a和b中都存放字符串D)a数组比b数组长度长

*6.7下面程序段的运行结果是o

chara[7]="abcdef,b[4]="ABC";

strcpy(a,b);printf("%c",a[4]);

A),B)\0C)cD)ef

*6.8下面程序段的运行结果是o

charc[]="\t\v\\\Owill\nH;printf("%d",strlcn(c));

A)3B)6C)9D)14

6.9下面程序段输出两个字符自中对应相等的字符。请分析程序填空。

charxl]="programming,';chary[]=,'Fortran";

inii=0;

while(x[i]!='\0,&&y[i]!='\0')

if(x[i]==y[i])printf("%c",);

elsei++;

A)x[i++1B)y[++ilC)x[ilD)yfi]

***6.10下面程序的功能是将字符串s中所有的字符e删除。

/include"stdio.h"

voidmain()

{chars[80];inii,j;

gets(s);

,*

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

if(s[i]!="c');

puts(s);}

A)s|j++]=s[i]B)s[++j]=s[i]C)s[j]=s[i];j++D)s[j]=s[i]

*6.11下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。请分析

程序填空。

#include<stdio.h>

voidmain()

{chars[80],cl,c2-

inti=0,num=0;

7

gets(s);

while(s[i]!='\O')

{cl=s[i];

if()num++;

i++;

c2=c1;

}

printf("Thereare%dwords.\n",num);)

A)cl==''&&c2=='18)01!=',&&c2=="

C)cl==''&&c2!="D)cl!=',&&c2!=,'

6.12当运行以下程序时,从铤盘输入:aabb<CR>ccdd<CR>则下面程序的运行结果是

#include<stdio.h>

voidmain()

{charal[5],a2[5],a3[5],a4[5];

scanf(',%s%s,,,a1,a2);

gets(a3);gets(a4);

puts(a1);puts(a2);puts(a3);puts(a4);

A)aaB)aaC)aaD)aabb

bbbbbbcc

ccccdddd

ccddddcc

6.13当运行以下程序时,从键盘输入ab<CR>c〈CR>defvCR>,则下面程序的运行结果是

#include<stdio.h>

#dcfineN6

voidmain()

{charc[NJ;inti=0;

for(;i<N;cliJ=gctchar(),i++);

for(i=0;i<N;i++)putchar(c[ij);

)

A)abcdefB)abC)aD)ab

ccc

defdd

6.2填空题

6.14下面程序的运行结果是o

#include<stdio.h>

voidmain()

8

{inta[5][5],ij,n=l;

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

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

a[i]lj]=n++;

printf("Theresultis:\n");

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

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

printf("%4d",a[i][j]);

prinlf("\n");

I

}

6.15下面程序可求出矩阵a的主对角线上的元素之和。请分析程序填空。

#include<stdio.h>

voidmain()

{inta[31[3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;

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

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

if(111)sum+=【2】;

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

)

6.16下面程序的功能是生成并打印某数列的前20项,该数列第1,2项分别为。和1,以后每个奇数编号的

项是前两项之和、偶数编号的项是前两项差的绝对值。生成的20个数存在一维数组x中.并按每行4项的

形式输出。

#inckide<stdio.h>

voidmain()

{intx[21],i,j;

x[0]=0;x[2]=l;i=3;

do

fx|i|=[i];

x|i+li=[2];

i=[3];

}while(i<=20);

for(i=l;i<=20;i++)

{printf(,'%5d';x[i]);

if(i%4==0)

printf("\nu);

)

9

6.17下面程序的功能是输入5个整数,找出最大数和最小数所在的位置,

并把二者对调,然后输出调整后的5个数。

#includc<stdio.h>

voidinain()

{inta[5],max,min,i,j,k;

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

scanf("%d:,&a[ij;

min=a|0];

for(i=l;i<5;i++)

if(a[i]<min){min=a[il;[I];}k=i

max=a[0];

for(i=l;i<5;i++)

ifa[i]>max){max=a[ij;[2];}j=i

【3];a[k]=max

[4];a[j]=min

printf("\iiThepositionofminis:%3d\n",k);

printf("\iiThepositionofmaxis:%3d\n".j);

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

printf("%5d",a[i]);

}

6.18下面程序的运行结果是_____o

#inchide<stdio.h>

voidmain()

{int

f[O]=f[l]=l;

for(i=2;i<10;i++)

f[i]=f[i-2]+f[i-l];

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

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

prinlf("%3d';f[i]);

}

)

**6.19下面程序的功能是输出以下n*n阶(最大为9阶)方阵,请分析程序填空。(以下例子是6阶方阵)

1II1I1

122221

123321

10

123321

122221

I11111

#include<stdio.h>

voidmain()

{inta[9][91,n,i,j,m;

scanf("%d",&n);

m=(n+1)/2;

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

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

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

a[il[[2]]=i+l;

)

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

{for(j=0;j<n;j++)

printf("%3d\a[i][j]);

printf("\n");

)

)

*6.20下面程序的功能是统计年龄在16-31岁之间的学生人数。请分析程序填空。

#include<stdio.h>

voidinain()

{intal!6],n,age,i;

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

prinif("Enlertheageofeachstudent(toendwith-l):\n");

scanf("%d",&age);

\vhile(age>-l)

I[I];if()

scanf("%d",&age);

)

printf("Theresultis:\n");

for([2];i++)

pnntf("%3d%6d\n",i,a[i-161);

)

6.21下面程序段的运行结果是。

11

charch[]=M600M;

inta,s=O;

for(a=0;ch[a]>='0,&&ch[a]<='9';a+4-)

s=10*s+ch[a]-'0';

printf("%d';s);

6.22下面程序的功能是在三个字符串中找出最小的。请分析程序填空。

#include<stdio.h>

#include〈string.h>

voidmain()

{chars[20],str[3][20];

inti;

fbr(i=O;i<3;i++)gets(str[i]);

strcpy(s,

if(slrcmp(str[2],s)<0)strcpy(s,str[2]);

printf("%s\n",[2]);}

*6.23下面程序的运行结果是o

#include<stdio.h>

#defineLEN4

voidmain()

{intj,c;

charn[2][LEN+1]={n8980","9198"};

for(j=LEN-lJ>=OJ—)

{c=n[O][j]+nH皿-2*0;

n[0]U]=c%10+'0';

}

for(j=0;j<=l;j++)puts(n[j]);

)

*6.24下面程序的运行结果是o

#incli)de<stdio.h>

voidmain()

{inti=5;

charc[6]="abcdH;

do{c[i]=c[i-l];}while(--i>0);

puts(c);

)

6.3编程题

6.25从键盘输入若干个整数,其值在。至4范围内,用/作为输入结束的标志。统计每个整数的个数。

12

6.26若有说明:inta[2J[3]={{1,2,3},{4,5,6}};现要将a的行和列的元素互换后存到另一个二维数组b中。

请编写程序并输出a和b数组中的元素。

6.27通过赋初值按行顺序为一个2x3的二维数组赋予2、4、6、...等偶数,然后按列的顺序输出该数组。

试编程。

6.28通过循环按行顺序为一个5x5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角。

试编程。

第七章函数

7.1选择题

*7.1以下正确的函数形式是,

A)doublcfun(intx,inty){z=x+y;rcturnz;}

B)doublcfun(intx,y){intz:rcturnz;}

C)fun(x,y){intx,y;doublez;z=x+y;returnz;}

D)doublefun(intx,inty){doublez;z=x+y;returnz;}

7.2C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是

A)地址传递B)单向值传递

C)由实参传给形参,再由形参传回实参D)由用户指定传递方式

7.3C语言允许函数值类型缺省定义,此时该函数值隐含的类型是o

A)float型B)int型C)long型D)doublc型

7.4C语言规定,函数返回值的类型是由所决定。

A)return语句中的表达式类型

B)调用该函数时的主调函数类型

C)调用该函数是系统临时指定

D)在定义该函数时所指定的函数类型

*7.5下面函数调用语句含有实参的个数为0

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

A)IB)2C)4D)5

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

#inckidc<stdio.h>

#include<math.h>

floatf(float,float);

voidmain()

{floatx,y,z,sum;

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

sum=f([1])+f([2]);

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

)

floatf(floata,floatb)

{floatvalue;

falue=a/b;

re(um(value);

)

[1]A)x-y,x+yB)x+y,x-yC)z+y,z-yD)z-y,z+y

[2]A)x-y,x+yB)x+y,x-yC)z+y,z-yD)z-y,z+y

7.7以下正确的描述是o

A)函数的定义可以嵌套,但函数的调用不可以嵌套

B)函数的定义不可以嵌套,但函数的调用可以嵌套

C)函数的定义和函数的调用均不可嵌套

D)函数的定义和函数的调用均可以嵌套

7.8若用数组名作为函数调用的实参,传递给形参的是o

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

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

7.9如果在一个复合语句中定义了一个变量,则有关该变量正确的说法是

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

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

*7.10以下程序的正确运行结果是。

#include<sldio.h>

voidnum()

{externintx,y;

inta=15,b=10;

x=a-b;

y=a+b;

)

intx,y;

voidmain()

{inta=7,b=5;

x=a+b;

y=a-b;

nurn();

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

14

A)12,2B)12,25C)5,25D)5,2

*7.11以下程序的正确运行结果是

#include<stdio.h>

voidmain()

{inta=2,i;

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

)

inif(inta)

{intb=0;

staticintc=3;

b++;c++;

retum(a+b+c);

)

A)777B)71013

C)7911D)789

*7.12以下程序的正确运行结果是

#include<stdio.h>

voidmain()

{intk=4,m=l,p:

p=func(k,m);printf("%d.",p);

p=func(k.m);printf("%d"\n".p):

}

func(inta,intb)

{staticintm=0J=2;

i+=m+l;

m=i+a+b;

rcturn(in);

)

A)8,17B)8,I6C)8,2OD)8,8

7.2填空题

7.13下面add函数的功能是求两个参数的和,并将和值返回调用函数。函数中错误的部分是【1】;改

正后为[2L

voidadd(floatajloatb)

{floatc;

c=a+b;

returnc;

7.14以下程序的运行结果是。

#includc<stdio.h>

voidmain()

{inti=2,x=5,j=7;

fun(j,6);

printf("i=%d;j=%d;x=%d'.n",i,j,x);

)

fun(inti,intj)

{intx=7;

prinlf("i=%d;j=%d;x=%d'<n",i,j,x);

)

7.15若输入一个整数10,以下程序的运行结果是。

#include<stdio.h>

intsub(inla)

{intc;

c=a%2;

returnc;

}

voidmain()

{inta,e(10],c,i=0;

printf("Inputanumber:");

scanf("%d",&a);

vvhile(a!=0)

{c=sub(a);

a=a/2;

e[i]=c;

i++;

)

for(;i>0;i-)printf("%d",e[i-l]);

)

7.16以下程序的功能是计算下面函数的值。请填空。

/⑴=sin(x)sin(y)sin(z)

sin(x-y)*sin(x-z)sin(y-z)*sin(>-x)sin(z-x)*sin(z-y)

#include<stdio.h>

#include<math.h>

floatf(noat,float,lloa();

16

voidinain()

{printf("inputx,y,z:\n");

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

sum=[I];

printf("sum=%An'\suin);

I

floatf(floata,floatb,floatc)

{floatvalue;

value=sin(a)/sin(a-b)/sin(a-c);

[2];

I

7.17以下程序的运行结果是,

/include<stdio.h>

voidmain()

{intx=2,y=3.z=0;

printf("(1)x=%dy=%dz=%d\n",x,y,z);

add(x,y,z);

printf("(3)x=%dy=%dz=%d\n",x,y,z);

}

add(intxjntyjntz)

{z=x+y;x=x*x;y=y*y;

printf(',(2)x=%dy=%dz=%d\n",x,y,z);

)

7.18以下程序的运行结果是o

#includc<stdio.h>

voidmain()

{printf("FACT(5):%d\n,\fact(5));

printf("FACT(1):%d\n",fact(1));

fact(-5);

)

fact(intvalue)

{if(value<0){prinlf("FACT(<0):Error!\n");return(-1);}

elseif(value==l||value==O)return(1);

elseretum(value*facl(value-1));

1

7.19以下程序的运行结果是0

#include<stdio.h>

17

f(inta[])

{inti=0;

whilc(a|i]<=10)

{printf("%3d”,a[i]);

i++;

)

)

voidmain()

{inta[]={1,5,10,9,11,7);

f(a+l);

}

7.20以下程序的运行结果是。

#include<stdio.h>

voidmain()

{inta[31[3]={1,3,5,7,9,11,13,15,17},sum;

sum=func(a);

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

}

func(inta[][3])

{intiJ,sum=0;

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

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

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

return(sum);

)

7.21以下程序可计算10名学生1门课成绩的平均分,请填空。

include<stdio.h>

floatavcragc(floatarrayIj)

{inti;floataver,sum=array[OJ;

for(i=l;[1];i++)i<)0

sum+=[2];array[i]

aver=sum/10;

returnaver;

)

voidmain()

{floatscore[10],aver;

inti;

18

printf("\ninput10scores:");

for(i=0;i<10;i++)scanf("%f',&score[i]);

avcr=【3】;avcragc(scorc)

prinlf("\navcragcscoreis%5.2An”,aver);

)

7.22以下程序的运行结果是。

#include<stdio.h>

voidmain()

{inti;

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

{funx();

funy();

)

)

funx()

{intx=0;

printf("x=%d\t",++x);

I

funy()

{staticinty=0;

printf(,,y=%d\n",++y);

)

7.3编程题

7.23已有变量定义和函数调用语句doublea=5.0;intn=5;和函数调用语句mypow(a,n);用来求a的n次方。

请编写mypow函数。

第八章指针

火I选择题

8.1以下程序的运行结果是o

include<stdio.h>

voidsub(intx,inty,int*z)

{*z=y-x;)

voidmain()

{inta,b,c;

sub(IO,5,&a);a=-5

sub(7,a,&b);-5-7b=-12

19

sub(a,b,&c);-12+5c=-7

printf("%4d,%4d,%4d",a,b,c);

)

A)5,2,3B)-5,-12,-7

C)-5,-12,-17D)5,-2,-7

8.2执行以下程序后,a的值为【1】,b的值为[2L

#include<stdio.h>

voidmain()

{inta,b,k=4,m=6,*p1=&k,*p2=&m;

a=pl==&m;

b=(-*pl)/(*p2)+7;

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

)

[I]A)-1B)1C)0D)4

[2]A)5B)6C)7D)10

*8.3有四组对指针变量进行操作的语句,以下判断正确的选项是。

(l)int*p,*q;q=p:

inta,*p,*q;p=q=&a;

(2)inta,*p,*q;q=&a;p=*q;

inta=20,*p;*p=a;

(3)inta=b=0,*p;p=&a;b=*p;

inta=20.*p.*q=&a:*p=*q;

(4)inta=20,*p,*q=&a;p=q;

intp,*q;q=&p;

A)正确:⑴不正确:(2),(3),(4)

B)正确:(1),(4)不正确:(2),(3)

C)正确:⑶不正确:⑴。),(4)

D)以上结论都不正确

X.4有如下语句inta=IO,h=2O;*p1==&h;如果让两个指针变量均指向h..正确的I!我值方式

是o

A)*pl=*p2;B)pl=p2;C)pl=*p2;D)*pl=*p2;

8.5变量的指针,其含义是指变量的。

A)值B)地址C)名D)一个标志

8.6若已定义inta;下面对(1)(2)两个语句的正确解释是。

(l)int*p=&a;(2)*p=a;

A)语句(1)和(2)中的*p含义相同,都表不给指针变量p赋值

20

B)(l)和(2)语句的执行结果,都是把变量a的地址赋给指针变量p

C)(1)在对p进行说明的同时进行初始化,使p指向a

(2)将变量a的值赋给指针变量p

D)(l)在对p进行说明的同时进行初始化,使p指向a

(2)将变量a的值赋给*p

8.7若有语句inta=4,*p=&a;下面均代表地址的一组选项是。

A)a,p,*&aB)*&a,&a,*pC)*&p,*p,&aD)&a,&*p,p

8.8已有说明floatf=3.14,*p;若让p指向f,则正确的赋值语匀是。

A)p=f;B)p=&f;C)*p=f;D)*p=&m

8.9设有下面的程序段,则下列正确的是o

chars[]-'china";char*p;p=s;

A)s和p完全相同B)数组s中的内容和指针变量p中的内容相等

C)s数组长度和p所指向的字符串长度相等D)*p与s[0]相等

8.2填空题

8.10下面程序的运行结果是e

#inckidc<stdio.h>

voidmain()

{chara[80],b[80],*p=naAbcdDefgGH,';

inti=0,j=0;

while(*p!=r\0')

{if(*p>=,a'&&*p<='z,)

{a[i]=*p;i++;}

else

{bUl=*PU++;!

P++;

I

a[i]=brj]='\O';

puts(a);puts(b);

}

abedefg

ADGH

第九章指针

9.1选择题

9.1当说明一个结构体变量时系统分配给它的内存是

21

A)结构中最后一个成员所需内存量B)结构中第一个成员所需内存量

C)成员中占内存量最大者所需的容量D)各成员所需内存量的总和

9.2设有以下说明语句

typedefstruct

{intn;charch[8];

}PER;

则下面叙述中正确的是

A)PER是结构体变量名B)PER是结构体类型名

Otypedefstruct是结构体类型D)struct是结构体类型名

9.3已知有如下定义:structa{charx;doubley;}data,九;,若有t=&data,则对data中的成员的正确引用是

A)(*t).data.xB)(*t).xC)t->data.xD)t.data.x

9.4设有如下定义:

strucksk

{inta;floatb;}data;

int*p;

若要使P指向data中的a域,正确的赋值语句是

A)p=&a;B)p=data.a;C)p=&data.a;D)*p=data.a;

9.5以下对结构体类型变最的定义中,不正确的是

A)iypedefstructaaB)#defineAAstructaa

{intn;floatm;AA{intn;

}AA;floatm;

AAtdl;}tdl;

OstructD)struct

{intn;floatm;{intn;

}aa;floatm;

structaatdl;Itdl;

9.6以下程序的输出是

structst{intx;int*y;}*p;

intdt[4]={10,20,30,40);

structstaa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0]};

main()

{p=aa;

printf("%d\n",++(p->x));

22

A)10B)llC)51D)60

9.7已知学生记录描述为:

structstudent

{intno;

charname[20],sex;

struct

{intyear.month.day;

}birth;

};

structstudents;

设变量s中的“生日”是“1984年11月12日”,对“birth”正确赋值的程序段是

A)year=1984;month=l1;day=12;

B)s.year=1984;s.month=11;s.day=12;

C)birth.year=1984;birth.month=l1;birth.day=12;

D)s.birth.year=1984;s.birth.month=11;s.birth.day=12;

9.8有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结

点a之后的语句是

structnode

{chardata;

structnode*next;

)a,b,*p=&a,*q=&b;

A)a.next=q;B)p.nexl=&b;C)p->next=&b;D)(*p).next=q;

9.9有以下程序,程序运行后的输出结果是

structSTU{charnum[10];floatscore(3];);

main()

{structSTUs[31={{"20021",90,95,85},{"20022",95,80,75),

{“20023”,100,95.90},},*p=s;

inti;floatsum=0;

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

sum=sum+p->score[i];

printf("%6.2f\n",sum);

)

A)260.00B)270.00C;280.00D)285.00

23

9.10阅读加卜.程序段,则执行后程序的输出结果是

#includc<stdio.h>

main()

{structa{intx;inty;}num[2]={{20,5),(6,7));

prinlf("%d\n",num[0].x/num[0].y*num[1].y);

)

A)0B)28C)20D)5

9.1填空题

9.11以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指

向自身结构体的指针,请将定义补充完整。

structnode

{intinfo;

【1]link;

编程题

423#includc<stdio.h>

voidmain()

{inta,b;

printfC"Inputa&b:°);

scanf(',%d%d",&a,&b);

if(a*a+b*b>100)

prinif("%d\n”,(a*a+b*b)“OO);

elseprintf("%d\n",a+b);

)

424#include<stdio.h>

voidmain()

{

温馨提示

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

评论

0/150

提交评论