C语言之结构体练习题Word格式文档下载.docx
《C语言之结构体练习题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言之结构体练习题Word格式文档下载.docx(18页珍藏版)》请在冰点文库上搜索。
![C语言之结构体练习题Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/766a3e49-c232-4e99-9d56-5ef10e2e95cf/766a3e49-c232-4e99-9d56-5ef10e2e95cf1.gif)
main()
staticstructs1a[]={{"
abcd"
1,a+1},{"
efgh"
2,a+2},{"
ijkl"
3,a}};
structs1*p=a;
inti=0;
%s%s%s"
a[0].s,p->
s,a[2].sip->
s);
%d%d"
i+2,--a[i].i);
%c\n"
++a[i].s[3]);
//VC下运行,出现错误
A.abcdabcdabcd20eB.abcdefghijkl20e
C.abcdabcdijkl20eD.abcdabcdabcd21e
8.下面程序的输出结果为()。
#include<
structst
intx;
int*y;
}*p;
intdt[4]={10,20,30,40};
structstaa[4]={50,&
dt[0],60,&
dt[1],70,&
dt[2],80,&
dt[3]};
p=aa;
%d\n"
++p->
x);
(++p)->
++(*p->
y));
A.10B.50C.51D.60
20606070
20212131
9.有以下程序
#include<
structSTU
charname[9];
charsex;
doublescore[2];
};
structSTUa={“Zhao”,’m’,85.0,90.0},b={“Qian”,’f’,95.0,92.0};
b=a;
printf(“%s,%c,%2.0f,%2.0f\n”,b.name,b.sex,b.score[0],b.score[1]);
程序的运行结果是:
()。
A.Qian,f,95,92B.Qian,m,85,90C.Zhao,f,95,92D.Zhao,m,85,90
10.下面结构体的定义语句中,错误的是()。
A.structordB.structord
{{
intx;
intx
;
inty;
inty
intz;
intz;
}
structorda;
structorda;
C.structordD.struct
{{
intx
}a;
}a;
11.有以下程序
#include<
string.h>
structA
{
inta;
charb[10];
doublec;
structAf(structAt);
structAa={1001,"
ZhangDa"
1098.0};
a=f(a);
printf("
%d,%s,%6.1f\n"
a.a,a.b,a.c);
structAf(structAt)
t.a=1002;
strcpy(t.b,"
ChangRong"
);
t.c=1202.0;
returnt;
程序运行后的输出结果是()。
A.1001,ZhangDa,1098.0B.1002,ZhangDa,1202.0
C.1001,ChangRong,1098.0D.1002,ChangRong,1202.0
12.下面程序的运行结果是()。
structSTU
voidf(char*name,intnum)
structSTUs[2]={{"
Sun"
2044},{"
Li"
2045}};
num=s[0].num;
strcpy(name,s[0].name);
Yang"
2041},{"
Guo"
2042}},*p;
p=&
s[1];
f(p->
name,p->
num);
%s%d\n"
p->
A.Sun2042B.Sun2044C.Guo2042D.Yang2041
13.下面程序的运行结果是()。
{
intnum;
floatscore;
voidf(structSTUp)
structSTUs[2]={{2044,550},{2045,537}};
p.num=s[1].num;
p.score=s[1].score;
structSTUs[2]={{2041,703},{2042,580}};
f(s[0]);
printf("
%d%3.0f\n"
s[0].num,s[0].score);
A.2045537B.2044550C.2042580D.2041703
14.有以下程序:
structst
{intx,y;
}data[2]={1,10,2,20};
structst*p=data;
%d"
p->
y);
其运行结果是()。
A.10,1B.20,1C.10,2D.20,2
15.有以程序
typedefstruct
charname[9];
charsex;
floatscore[2];
}STU;
voidf(STUa)
STUb={“Zhao”,’m’,85.0,90.0};
inti;
strcpy(a.name,b.name);
a.sex=b.sex;
for(i=0;
i<
2;
i++)a.score[i]=b.score[i];
}
main()
STUc={“Qian”,’f’,95.0,92.0};
f(c);
printf(“%s,%c,%2.0f,%2.0f\n”,c.name,c.sex,c.score[0],c.score[1]);
程序的运行结果是()。
A.Qian,f,95,92B.Qian,m,85,90
C.Zhao,f,95,92D.Zhao,m,85,90
16.下面程序的运行结果是()。
structord
{intx,y;
}dt[2]={1,2,3,4};
structord*p=dt;
%d,"
++p->
A.1,2B.2,3C.3,4D.4,1
以下结构体类型说明和变量定义中正确的是
A)typedefstructB)structREC;
{intn;
charc;
}REC;
{intn;
RECt1,t2;
RECt1,t2;
C)typedefstructREC;
D)struct
{intn=0;
charc=’A’;
}t1,t2;
{intn;
charc;
}RECt1,t2;
填空题
1.结构体是不同数据类型的数据集合,作为数据类型,必须先说明结构体【1】,再说明结构体变量。
2.有以下说明定义语句,可用a.day引用结构体成员day,请写出引用结构体成员a.day
的其它两种形式【1】、【2】。
structd
intday;
charmouth;
intyear;
}a,*b;
b=&
a;
6.若已有类型定义:
structdate
intyear;
intmonth;
intday;
};
写出下面程序的运行结果【1】。
voidchange(structdated)
d.year=2008;
d.month=d.day=8;
structdatedate1={0,0,0};
change(date1);
printf("
%d,%d,%d\n"
date1.year,date1.month,date1.day);
7.若已有类型定义:
voidchange(structdate*p)
(*p).year=2008;
(*p).month=(*p).day=8;
structdatedate1={0,0,0};
change(&
date1);
printf("
8.分析以下程序的输出结果是【1】。
structSTUD{
intno;
char*name;
intscore;
main(){stuctSTUDst1={1,"
Mary"
85},st2;
st2.no=2;
st2.name=(char*)malloc(sizeof(10));
strcpy(st2.name,"
Smith"
st2.score=78;
(st1.score>
st2.score?
st1.name:
st2.name));
9.以下程序中函数fun的功能是:
统计person所指结构体数组中所有性别(sex)为M的记录的个数,存入变量n中,并做为函数值返回。
请填空:
#defineN3typedefstruct{
intnum;
charnam[10];
charsex;
}SS;
intfun(SSperson[]){
inti,n=0;
for(i=0;
N;
i++)if(【1】=='
M'
)
n++;
returnn;
}main(){
SSW[N]={{1,"
AA"
'
F'
},{2,"
BB"
},{3,"
CC"
}};
intn;
n=fun(W);
n=%d\n"
n);
10.有如下定义:
struct{
inty;
}s[2]={{1,2},{3,4}},*p=s;
则表达式++p->
x的结果是【1】。
11.人员的记录由编号(id)和出生年月日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号是唯一。
下面函数fun的功能是:
找出指定编号人员的数据,作为函数值返回,由主函数输出;
若指定编号不存在,返回编号为空串的数据。
#defineN20typedefstructstudent{
charid[40];
intyear;
intmonth;
intdate;
【1】fun(STUstd[],char*id){
STUa={"
"
9999,99,99};
i++)if(strcmp(std[i].id,id)==0)returnstd[i];
returna;
}main(){
STUs[N],ps;
输入所有人员的编号和出生日期:
"
i++)scanf("
%s,%d,%d,%d"
s[i].id,&
s[i].year,&
s[i].month,&
s[i].date);
输入待查找人员的编号:
gets(id);
ps=fun(s,id);
if(strcmp(ps.id,"
)!
=0)printf("
查找结果:
%s,%d,%d,%d"
ps.id,ps.year,ps.month,ps.date);
elseprintf("
返回空串,不存在该编号"
12.下面程序通过定义学生结构体变量,存储了学生的学号、姓名和3门的成绩。
函数fun的功能是将形参a所指结构体变量中的数据赋给函数中的结构体变量b,并修改了b中的学号和姓名,最后输出修改后的数据。
例如:
a所指变量中的学号、姓名和三门课的成绩依次是:
10001、“zhangsan"
、95、80、88,则修改后的输出b中的数据应为:
10002、“lisa”、95、80、88。
structstudent{
charname[40];
foatscore[3];
voidfun(structstudenta){
structstudentb;
b=a;
b.num=10002;
strcpy(【1】,"
lisa"
改变后的信息:
%d,%s"
b.num,b.name);
3;
i++)printf("
%f"
b.score[i]);
strucntstudentaa={10001,"
zhangsan"
95、80、88};
fun(aa);
13.将形参std所指结构体数组中年龄最大者的数据作为函数值返回。
typedefstructstu{
intage;
}STD;
STDfun(STDs[],intn);
STDmax;
max=s[0];
for(i=1;
n;
i++)if(max.age<
【1】)
max=s[i];
returnmax;
STDss[5],max;
5;
i++)scanf(”%d,%s,%d"
&
ss[i].num,ss[i].name,&
ss[i].age);
max=fun(ss,5);
年龄最大者的数据信息:
%d,%s,%d"
max.num,max.name,max.age);
14.下面程序实现的是:
将形参指针所指结构体数组中的三个元素按num成员进行升序排列。
将程序补充完整。
typedefstructs{
floatscore;
}PERSON;
voidfun(PERSONstd[3]){
PERSONtemp;
if(std[0].num>
std[1].num)
temp=std[0];
std[0]=std[1];
std[1]=temp;
}if(std[0].num>
std[2].num)
{temp=std[0];
std[0]=std[2];
std[2]=temp;
}if(std[1].num>
{temp=std[1];
std[1]=std[2];
PERSONstd[]={{12,"
sunny"
89},{8,"
train"
73},{21,"
smelle"
91}};
fun(【1】);
%d,%s,%f\n"
std[i].num,std[i].name,std[i].score);
}15.下面程序的输出结果是【1】。
structks{
inta;
int*b;
structkss[4],*p;
intn=1,i;
4;
i++){
s[i].a=n;
s[i].b=&
s[i].a;
n=n+2;
}p=&
s[0];
%d,%d\n"
b),*(s+2)->
b);
17.下面程序的运行结果是【1】。
structNODE
structNODE*next;
structNODEs[3]={{1,'
\0'
},{2,'
},{3,'
}},*p,*q,*r;
intsum=0;
s[0].next=s+1;
s[1].next=s+2;
s[2].next=s;
p=s;
q=p->
next;
r=q->
sum+=q->
next->
num;
sum+=r->
sum);
18.设有定义:
structperson
intID;
charname[12];
}p;
请将scanf(“%d”,【1】);
语句补充完整,使其能够为结构体变量p的成员ID正确读入数据。
19.有以下程序:
doubles;
voidfun1(RECx)
x.num=23;
x.s=88.5;
RECa={16,90.0};
fun1(a);
a.num);
程序的运行结果是【1】。
20.下列程序的运行结果为:
【1】。
inta;
charb[10];
doublec;
voidf(structA*t);
structAa={1001,"
1098.0};
f(&
a);
a.a,a.b,a.c);
voidf(structA*t)
strcpy(t->
b,"
以下程序中函数fun的功能是:
统计person所指结构体数组中所有性别(sex)为M的
记录的个数,存入变量n中,并做为函数值返回。
#defineN3
typedefstruct
{intnum;
intfun(SSperson[])
{inti,n=0;
for(i=0;
i++)
if(【14】==’M’)n++;
returnn;
}
{SSW[N]={{1,”AA”,’F’},{2,”BB”,’M’},{3,”CC”,’M’}};
printf(“n=%d\n”,n);