结构体语句练习题
(完整版)结构体与联合体习题与参考答案

(完整版)结构体与联合体习题与参考答案第八章结构体与联合体选择题1、若程序中有以下的说明和定义:struct abc{ int x;char y; } 花括号后少了分号。
struct abc s1,s2;则会发生的情况是______。
A) 编译时错B) 程序将顺序编译、连接、执行C) 能顺序通过编译、连接、但不能执行D) 能顺序通过编译、但连接出错2、有以下程序段struct st{ int x; int *y;}*pt;int a[]={1,2};b[]={3,4};struct st c[2]={10,a,20,b};pt=c;以下选项中表达式的值为11的是A) *pt->y B) pt->x C) ++pt->x D) (pt++)->x3、有以下说明和定义语句struct student{ int age; char num[8];};struct student stu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};struct student *p=stu;以下选项中引用结构体变量成员的表达式错误的是______。
A) (p++)->num B) p->num C) (*p).num D) stu[3].age4、设有如下枚举类型定义enum language{Basic=3,Assembly=6,Ada=100,COBOL,Fortran};枚举量Fortran的值为______。
A) 4 B) 7 C) 102 D) 1035、以下叙述中错误的是_________。
A)可以通过typedef增加新的类型B)可以用typedef将已存在的类型用一个新的名字来代表C)用typedef定义新的类型名后,原有类型名仍有效D)用typedef可以为各种类型起别名,但不能为变量起别名6、有以下程序段typedef struct NODE{ int num; struct NODE *next;} OLD;以下叙述中正确的是A)以上的说明形式非法B) NODE是一个结构体类型C) OLD是一个结构体类型D) OLD是一个结构体变量7、以下选项中不能正确把cl定义成结构体变量的是______。
动态及结构体习题答案

动态及结构体习题答案1. 有以下程序#include <stdio.h>#include <stdlib.h>int fun(int n){ int *p;p=(int*)malloc(sizeof(int));*p=n; return *p;}main(){ int a;a = fun(10); printf("%d\n", a+fun(10)); }程序的运行结果是()。
CA)0 B)10 C)20 D)出错2. 有以下程序#inctude<stdio.h>#include<stdlib.h>Main(){int *a,*b,*c;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2,*c=3;a=b;printf(“%d,%d,%d\n”, *a,*b,*c);}程序运行后的输出结果是AA)3,3,3 B)2,2,3 C)1,2,3 D)1,1,33. 有以下程序段struct st{ int x; int *y;}*pt:int a[]={1,2},b[]={3,4};struct st c[2]={10,a,20,b};pt=c;以下选项中表达式的值为11的是( C )A) *pt->y B) pt->x C) ++pt->x D) (pt++)->x4. 有以下定义struct complex{ int real, unreal ;} datal={1,8},data2;则以下赋值语句中的错误的是 BA)data2=data1; B)data2=(2,6);C)data2.real=data1.real; D)data2.real=data1.unreal;5. 有以下定义和语句struct workers{int num; char name[20];char c;srruct{int day;int month;intyear;} s;};struct workers w,*pw;pw=&w能给w中year成员赋1980的语句是DA)*pw.year=1980; B)w.year=1980;C)pw->year=1980; D)w.s.year=1980;6. 设有定义:struct {char mark[12];int num1;double num2;} t1,t2;,若变量均已正确赋初值,则以下语句中错误的是CA)t1=t2; B)t2.num1=t1.num1;C)t2.mark=t1.mark; D)t2.num2=t1.num2;7.有以下程序#include <stdio.h>main(){ struct STU { char name[9]; char sex; doublescore[2]; };struct STU a={"Zhao",'m',85.0,90.0), b={"Qian",'f',95.0,92.0);b=a;printf("%s,%c,%2.0f,%2.0f\n",,b.sex,b.score[0],b.score [1]);}程序的运行结果是()。
C语言(结构体与共用体)习题与答案

{ for ( ; *s==*t; s++, t++ )
if (!*s) return 0 ;
return (*t-*s) ;
}
B.int strcmp2(char *s,char *t)
{ for ( ; *s++=*t++; )
if (!*s) return 0 ;
1、指针的含义是()。
A.名
B.一个标志
C.地址
D.值
正确答案:C
2、若已定义a为int型变量,则下面的语句中正确的是()。
A.int *p=*a;
B.int *p=&a;
C.int *p=a;
D.int p=&a;
正确答案:B
3、若有定义:int x,*p;则以下正确的赋值表达式是()。
A.*p=&x
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("%4d,%4d,%4d\n",a,b,c);
}
A.5,-2,-7
B.5,2,3
C.-5,-12,7
D.-5,-12,-7
正确答案:D
11、以下程序运行的结果是()。
#include<stdio.h>
void main()
D.char *s="china";等价于char *s; s="china" ;
正确答案:D
15、函数strcmp(char *s,char *t)功能是()。
C语言程序设计基础-结构体习题

1、把一个学生得信息(包括学号、姓名、性别、住址)放在一个结构体变量中,然后输出这个学生得信息。
#include <stdio、h>int main(){struct Student{long int num;char name[20];char sex;char addr[20];}a={10101,“Li Lin”,‘M’, “123 Beijing Road”};printf("NO、:%ld\nname:%s\n sex:%c\naddress:%s\n",a、num,a、name,a、sex,a、addr); return 0;}2、输入两个学生得学号、姓名与成绩,输出成绩较高学生得学号、姓名与成绩#include <stdio、h>int main(){ struct Student{int num;char name[20];float score;}student1,student2;scanf("%d%s%f",&student1、num,student1、name, &student1、score);scanf(“%d%s%f”,&student2、num,student2、name, &student2、score);printf("The higher score is:\n");if (student1、score>student2、score)printf("%d %s %6、2f\n",student1、num,student1、name, student1、score);else if (student1、score<student2、score)printf("%d %s %6、2f\n",student2、num,student2、name, student2、score);else{printf("%d %s %6、2f\n",student1、num,student1、name, student1、score);printf("%d %s %6、2f\n",student2、num,student2、name, student2、score);}return 0;}3、有3个候选人,每个选民只能投票选一人,要求编一个统计选票得程序,先后输入被选人得名字,最后输出各人得票结果。
结构体练习题

结构体练习题:第1 题:计算日期的差值(1)编写一函数,计算两个日期之间的时间差,并将其值返回。
日期以年、月、日表示。
“时间差”以天数表示。
注意考虑日期之间的闰年。
函数的输入参数为日期1和日期2,函数的返回值为时间差,单位为天数。
(2)编写一程序,在主函数中输入两个日期,调用上述函数计算两个日期之间的时间差,并将结果输出。
为了计算简便,假设用户输入的日期1总是早于日期2。
参考代码:#include<stdio.h>struct date{int year;int month;int day;};int isLeap(int year);int dif(struct date a, struct date b);void main(){struct date a, b;printf("请输入日期1(空格分隔,年月日):\n");scanf("%d%d%d", &a.year, &a.month, &a.day);printf("请输入日期2(空格分隔,年月日,晚于日期1):\n");scanf("%d%d%d", &b.year, &b.month, &b.day);printf("相差天数为:");printf(" %d 天\n", dif(a, b));}int isLeap(int year) //判断一个年份是否是闰年的函数{if(year%400==0 || (year%4==0 && year%100!=0))return 1;elsereturn 0;}int dif(struct date a, struct date b){int i;long day=0, day1=0, day2=0;intd[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,3 1,31,30,31,30,31}};// day变量为年份a到年份b前一年的年份总天数for(i=a.year; i<b.year; i++)if(isLeap(i))day += 366;elseday += 365;// day1变量为年份a年初到当天的年内总天数for(i=1; i<a.month; ++i)day1 += d[isLeap(a.year)][i];day1 += a.day;// day1变量为年份b年初到当天的年内总天数for(i=1; i<b.month; ++i)day2 += d[isLeap(b.year)][i];day2 += b.day;return day + day2 - day1;}参考截图:第2 题:结构体数组应用请定义一个描述学生基本信息的结构,包括姓名,学号,籍贯,身份证号,年龄,家庭住址,性别,联系方式等。
结构体及位操作习题

(36)下面结构体的定义语句中,错误的是A)struct ord {int x;int y;int z;}; struct ord a;B)struct ord {int x;int y;int z;} struct ord a;C)struct ord {int x;int y;int z;} a;D)struct {int x;int y;int z;} a;(38)有以下程序#include <stdio.h>#include<string.h>struct A{ int a; char b[10]; double c;};struct A f(struct A t);main(){ struct A a={1001,”ZhangDa”,1098.0};a=f(a);printf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);}struct A f(struct A t)( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202. 0;return t; )程序运行后的输出结果是A)1001,ZhangDa,1098.0B)1001,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1001,ChangRong,1202.0(39)若有以下程序段int r=8;printf(“%d\n”,r>>1);输出结果是A)16B)8C)4D)2(12)设有定义:struct person{ int ID;char name[12];}p;请将scanf(“%d”, 【12】);语句补充完整,使其能够为结构体变量p的成员ID正确读入数据。
(14)有以下程序#include <stdio.h>typedef struct{ int num;double s}REC;void fun1( REC x ){x.num=23;x.s=88.5;} main(){ REC a={16,90.0 };fun1(a);printf(“%d\n”,a.num);}程序运行后的输出结果是【14】。
结构体习题1

1、在说明一个结构体变量时,系统分配给它的存储空间是。
A、该结构体中第一个成员所需的存储空间B、该结构体中最后一个成员所需的存储空间C、该结构体中占用最大存储空间的成员所需的存储空间D、该结构体中所有成员所需存储空间的总和2、结构体变量在程序执行期间。
A、所有成员一直驻留在内存中B、只有一个成员驻留在内存中C、部分成员驻留在内存中D、没有成员驻留在内存中3、设有以下说明语句:typedef struct{ int n;char ch[8];}PER;则下面叙述中正确的是。
A、PER是结构体变量名B、PER是结构体类型名C、typedef struct 是结构体类型D、struct 是结构体类型名4、有如下定义:struct date{ int year;int month;int day;};struct worklist{ char name[20];char sex;struct date birthday;}person;对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是。
A、year=1958B、birthday. year=1958C、person. birthday. year=1958D、person. year=19585、若有下面的说明和定义:struct test{int m1;char m2;float m3;union uu{char u1[5];int u2[2];}ua;}myaa;则sizeof(stuct test)的值是。
A、12B、16C、14D、96、以下对结构体类型变量td1的定义中,不正确的是。
A 、typedef struct aa{ int n;float m;} AA;AA td1; B 、struct aa { int n;float m;} td1;C 、struct { int n;float m;} aa;struct aa td1;D 、struct { int n;float m;} td1;7、设有如下定义:struct sk{int a;float b;} data;int *p;若要使p指向data中的a域,正确的赋值语句是。
结构体-练习题

结构体-练习题1:输⼊若⼲⼈员姓名电话,义字符“#”表⽰结束,输⼊姓名,查找该⼈电话scanf :当遇到回车,空格和tab键会⾃动在字符串后⾯添加'\0',但是回车,空格和tab键仍会留在输⼊的缓冲区中。
scanf()可以读取所有类型的变量 gets:可接受回车键之前输⼊的所有字符,并⽤'\n'替代'\0'.回车键不会留在输⼊缓冲区中。
gets()⽤到读取字符串,⽤回车结束输⼊使⽤ gets() 时,系统会将最后“敲”的换⾏符从缓冲区中取出来,然后丢弃,所以缓冲区中不会遗留换⾏符。
这就意味着,如果前⾯使⽤过 gets(),⽽后⾯⼜要从键盘给字符变量赋值的话就不需要吸收回车清空缓冲区了,因为缓冲区的回车已经被 gets() 取出来扔掉了。
如果前⾯使⽤的不是 gets() ⽽是scanf,那么通过键盘给 ch 赋值前就必须先使⽤getchar() 清空缓冲区。
struct person{char name[10];char tel[20];};void search1(struct person a[],char *x,int j){int i=0;while(strcmp(a[i].name,x)!=0&&i<j)i++;if(i<j)printf("%s",a[i].tel);else printf("null");}int main(){struct person s[100];int i=0;char na[10],te[20];while(1){printf("输⼊姓名:");gets(na);if(strcmp(na,"#")==0){break;}printf("输⼊电话:");gets(te);strcpy(s[i].name,na);strcpy(s[i].tel,te);i++ ;}printf("输⼊查找姓名");gets(na);search1(s,na,i);return0;}2:1:根据输⼊⽇期(年⽉⽇)求出改天是该年的第⼏天 2:根据输⼊的年份和天数,求出对应⽇期1,3,5,7,8,10,12:31天闰年:2:29平年:2:28其余4,6,9,11:30天根据年份算出是闰年还是平年四年⼀闰,百年不闰,四百年再闰struct DATE{int year;int month;int day;}date;int main(){int run=0,curdays;int monthday[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};printf("输⼊年⽉⽇天数:");scanf("%d %d %d %d",&date.year,&date.month,&date.day,&curdays);if(date.year%4==0&&date.year%100!=0||date.year%400==0){run=1;}if(run==1){//润年monthday[2]=29;}else{monthday[2]=28;}//求天数int temp=0,j,num;switch(date.month){case1:for(j=0;j<1;j++)temp+=monthday[j];break;case2:for(j=0;j<2;j++)temp+=monthday[j];break;case3:for(j=0;j<3;j++)temp+=monthday[j];break;case4:for(j=0;j<4;j++)temp+=monthday[j];break;case5:for(j=0;j<5;j++){temp+=monthday[j];printf("%d+",monthday[j]);}break;case6:for(j=0;j<6;j++){temp+=monthday[j];printf("%d+",monthday[j]);}break;case7:for(j=0;j<7;j++){temp+=monthday[j];printf("%d+",monthday[j]);}break;case8:for(j=0;j<8;j++){temp+=monthday[j];printf("%d+",monthday[j]);}break;case9:for(j=0;j<9;j++){temp+=monthday[j];printf("%d+",monthday[j]);}break;case10:for(j=0;j<10;j++){temp+=monthday[j];printf("%d+",monthday[j]);}break;case11:for(j=0;j<11;j++)temp+=monthday[j];break;case12:for(j=0;j<12;j++)temp+=monthday[j];break;}num=temp+date.day;printf("%d",date.day);printf("\n第%d天\n",num);//求年⽉⽇int i,curM=0,curD=0;for(i=0;i<13;i++){curdays-=monthday[i];printf("curdays=%d\n",curdays);curM++;if(curdays<=31&&curdays>0){curD=curdays;break;}}printf("%d年%d⽉%d⽇",date.year,curM,curD);}//可以做成菜单再计算(后续⽅法不写了)int a[2][13]={{0,31,29,31,30,31,30,31,31,30,31,30,31},{0,31,28,31,30,31,30,31,31,30,31,30,31}}; int main(){while(1){int m;printf("选择1:输⼊年⽉⽇,输出第⼏天;2:输⼊年,第⼏天,输出年⽉⽇\n");scanf("%d\n",&m);if(m==1){int n,y,r;printf("请输⼊年⽉⽇\n");scanf("%d %d %d",&n,&y,&r);searchdd(n,y,r);}else if(m==2){int n,tprintf("请输⼊年天数\n");scanf("%d %d",&n,&t);searchyr(n,t);}else break;}}。
C语言结构体习题及答案

C语言结构体习题及答案第9章结构体1.定义以下结构体类型structs{inta;charb;floatf;};则语句printf(\的输出结果为【】。
a)3b)7c)6d)42.当定义一个结构体变量时,系统为它分配的内存空间就是【】a)结构中一个成员所需的内存容量b)结构中第一个成员所需的内存容量c)结构体中占内存容量最大者所需的容量d)结构中各成员所需内存容量之和3.定义以下结构体类型structs{intx;floatf;}a[3];语句printf(\的输入结果为【】a)4b)12c)187.定义以下结构体类型structstudent{charname[10];intscore[50];floataverage;}stud1;则stud1占用内存的字节数是【】。
a)64b)114c)228d)79、建有一结构体类型变量定义如下:structdate{intyear;intmonth;intday;};structworklist{charname[20];charsex;structdatebirthday;}person;若对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是。
d)6a.year=1976b.birthday.year=1976c.person.birthday.year=1976d.person.year=19761、若程序中存有以下的表明和定义:structabc{intx;chary;}花括号后少了分号。
structabcs1,s2;则可以出现的情况就是______。
a)编程时错b)程序将顺序编程、相连接、继续执行c)能够顺序通过编程、相连接、但无法继续执行d)能够顺序通过编程、但相连接失效。
C语言习题 结构体和杂类(答案)

第十章结构体和杂类一. 选择题1. 如下说明语句,则下面叙述不正确的是(C)。
struct stu { int a ; float b ;} stutype;A.struct是结构体类型的关键字B.struct stu是用户定义结构体类型C. stutype是用户定义的结构体类型名(变量名)D. a和b都是结构体成员名2. 在16位PC机中,若有定义:struct data { int i ; char ch; doublef; } b ; 则结构变量b占用内存的字节数是(D)。
A.1B.2C.8D.113. 设有定义语句:enum t1 {a1, a2 = 7, a3, a4 = 15} time;则枚举常量a2和a3的值分别为(D)。
A. 1和2B. 2和3C. 7和2D. 7和84. 以下程序的输出结果是( D )。
union myun { struct { int x, y, z; } u; int k; } a;main( ){ a.u.x=4; a.u.y=5; a.u.z=6; a.k=0;printf(" %d\n",a.u.x); }A. 4B. 5C. 6D. 05. 当定义一个共用体变量时,系统分配给它的内存是( C )。
A.各成员所需内存量的总和B.结构中第一个成员所需内存量C.成员中占内存量最大的容量D.结构中最后一个成员所需内存量6. 若有以下程序段:union data { int i ; char c; float f;} a;int n;则以下语句正确的是( C )。
A.a=5;B.a={2,’a’,1.2}C.printf(“%d”,a);D.n=a;7. 设struct {int a; char b; } Q, *p=&Q;错误的表达式是( d )。
A.Q.aB.(*p).bC.p->aD.*p.b9. 以下对C语言中共用体类型数据的叙述正确的是( c )。
3-结构体练习题

{"009","Zhangjie",'m',19,66},{"010","Wangmei",'f',21,39}};
C++程序设计课件 设计制作:徐龙琴 12
void sort(int n) //冒泡排序函数 {int i,j; struct student temp; for(i=0;i<n-1;i++) for(j=0;j<n-i;j++) if(st[j].mathscore<st[j+1].mathscore) {temp=st[j]; st[j]=st[j+1]; st[j+1]=temp; } } void print(int n) //输出函数 {int j;
b.p++
c.(*p).num d.p=&stu.age
编程题5-(结构体)

结构体编程题类型:1、结构体:查找统计 (3/4)2、结构体:查找排序 (1/1)3、结构体:链表 (0/1)方法:1、结构体数组和链表试题的类型,常见的有查找指定条件的值、求最大〔小〕值、排序等。
方法与一般数组的相同。
注意事项:1、.结构体〔数组〕和链表变量不同于一般变量〔数组〕的地方就只在于“名字有点长”。
〔用成员运算符或->运算符〕。
一、结构体:查找统计.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回.例如:输入的分数范围是60和69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据.主函数中将把60放在low中把69放在high中.#include<stdio.h>#define N 16typedef struct{char num[10];int s;}STREC;int fun(STREC *a,STREC *b,int l,int h){int i,j,n;for(i=0,j=0,n=0;i<N;i++){if(a[i].s>=l && a[i].s<=h){b[j]=a[i];j++;n++;}}return n;}main(){STREC s[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},{"GA001",96},{"GA007",72},{"GA008",64},{"GA006",87},{"GA015",85},{"GA013",94},{"GA012",64},{"GA014",91},{"GA011",90},{"GA017",64},{"GA018",64},{"GA016",72}};STREC h[N];int i,n,low,high,t;printf("Enter 2 integer number low & high : ");scanf("%d%d",&low,&high);if(high<low){t=high;high=low;low=t;}n=fun (s,h,low,high);printf ("The student's data between %d--%d:\n",low,high);for (i=0;i<n;i++)printf ("%s %4d\n",h[i].num,h[i].s);printf ("\n");}1.2.已知学生的记录由学号和学习的成绩构成,N名学生的数据已存人a结构体数组中。
c语言结构体编程题

c语言结构体编程题
1.编写input()和output()函数输入,输出5个学生的数据记录。
参考答案
2.创建一个链表。
参考答案
3.反向输出一个链表。
参考答案
4.建立一个单向链表,链表中每个结点包含成绩和指针两个域。
之后,①输出该链表;②
对该链表排序并输出;③任意输入一个成绩,将其插入链表中的适当位置;④任意输入一个成绩,将链表中相同的结点删除。
参考答案
5.连接两个链表。
参考答案
6.利用结构体类型,编程计算一名同学5门课的平均分。
参考答案
7.用结构体型数组初始化建立一工资登记表。
然后键入其中一人的姓名,查询其工资情况。
参考答案
8.用子函数求出worker数组中每个工人的实发工资。
参考答案
9.例、显示时、分、秒的软件延时
参考答案。
结构体练习题

5. 有以下程序输出结果是(B )。
#include<stdio.h>
struct stu
{ int num;
char name[10];
int age; };
void fun(struct stu *p)
{ print("%s\n",(*p).name); }
void main()
{ struct stu students[3]={{9801,"zhang",20},
则下面的叙述中不正确的是_____B___。
A)struct 是结构体类型的关键字 B)example是结构体类型名
C)x、y、z都是结构体成员名
D)struct ex是结构体类
11.设有如下定义:
struct ss
{ char name[10];
int age;
char sex;
}std[3],*p=std;
}
程序运行后的输出结果是_______11_。
14.C语言共用体类型变量在程序执行期间:B
A.所有成员一直驻留在内存中 B.只有一个成员驻留在内存中
C.部分成员驻留在内存中
D. 没有成员驻留在内存中
15.设有以下说明,则下面的叙述不正确的是:C
union data
1、 以下程序的输出结果是A A) 0 B) 1 C) 3 D) 6
main() { struct cmp
{ int x; int y; } cnum[2]={1,3,2,7}; printf(“%d\n”,cnum[0].x/cnum[1].y*cnum[1].x); } 2、根据以下定义,能输出字母M的语句是D
a[2].n=9; a[2].next='\0';
结构体练习题

算并输出每个人的学号和平均成绩。
2.已知链表结点结构如下,假设动态链表已经建立,请编写删除给定学号的结点的函数。
(只编写删除子函数即可)3.编写函数实现动态链表的建立。
链表结点结构如下,要求在主函数中将你所建立的链表输出到屏幕上。
4.有10个学生,每个学生的信息包括学号、姓名、3门课的成绩,从键盘输入10个学生数据存入结构体数组中,要求输出个人总分最高的学生的信息(包括学号、姓名、3门课成绩、总分)。
5.链表的结点数据类型如下:struct node{int data;struct node *next;};链表的建立和输出函数如下,编写将第i个结点删除的函数,并完善主函数,调试运行整个程序。
struct node *creat(){ int x;struct node *h,*s,*r;h=(struct node *)malloc(sizeof(struct node));r=h;scanf("%d",&x);while(x!=-1){ s=(struct node*)malloc(sizeof(struct node));s->data=x;r->next=s;r=s;scanf("%d",&x);}r->next=NULL;return h;}void print(struct node *h) //打印函数{ struct node *p;p=h->next;if(p==NULL)printf("list is empty!");else{ while(p!=NULL){ printf("%4d",p->data);p=p->next;}}}并输出其平均成绩。
7.试利用指向结构体的指针编制一程序,实现输入三个学生的学号、数学期中和期末成绩,然后计算其平均成绩并输出成绩表。
第11章 结构体练习题

3、 有以下说明和定义语句 struct student
{ int age; char num[8];};
struct student stu[3]={{20,"200401"},{21,"200402"},{10\9,"200403"}}; struct student *p=stu; 以下选项中引用结构体变量成员的表达式错误的是D
{9802,"Wang",19},{9803,"zhao",18}}; fun(students+2); } A.Zhang C.Wang B.Zhao D.18
7. 下面程序的输出结果为( C ) #include <stdio.h> struct st { int x; int *y; } *p; int dt[4]={10,20,30,40}; struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2], 80,&dt[3]}; main() { p=aa; printf("%d\n",++p->x); printf("%d\n",(++p)->x); printf("%d\n",++(*p->y)); } A.10 B.50 C. 51 D.60 20 60 60 70 20 21 21 31
8.下面结构体的定义语句中,错误的是( B)。 A. struct ord B. struct ord { { int x; int x ; int y; int y ; int z; int z ; }; } struct ord a; struct ord a; C. struct ord D. struct { { int x; int x ; int y; int y ; int z; int z ; } a; }a;
c语言结构体试题及答案

c语言结构体试题及答案1. 定义一个结构体,包含学生的姓名、学号和成绩。
```cstruct Student {char name[50];int id;float score;};```2. 编写一个函数,计算结构体数组中所有学生的平均成绩。
```cfloat calculateAverageScore(struct Student students[], int size) {float sum = 0.0;for (int i = 0; i < size; i++) {sum += students[i].score;}return sum / size;}```3. 给定一个结构体数组,编写一个函数,返回成绩最高的学生。
```cstruct Student* findHighestScoreStudent(struct Student students[], int size) {struct Student* highest = students;for (int i = 1; i < size; i++) {if (students[i].score > highest->score) {highest = &students[i];}}return highest;}```4. 编写一个函数,将结构体数组中的学生信息打印出来。
```cvoid printStudents(struct Student students[], int size) { for (int i = 0; i < size; i++) {printf("Name: %s, ID: %d, Score: %.2f\n", students[i].name, students[i].id, students[i].score);}}```5. 如何定义一个结构体,其中包含另一个结构体类型的成员?```cstruct Inner {int a;float b;};struct Outer {struct Inner inner;char c[100];};```6. 编写一个函数,交换两个结构体变量的值。
结构体与共用体-专项练习题

软件学院专业课集训营资料-结构体与共用体专项练习题1.设有以下说明语句:struct ex{ int x;float y;char z;} example;则下面的叙述中不正确...的是A. struct是结构体类型的关键字B. example是结构体类型名C. x,y,z都是结构体成员名D. struct ex是结构体类型名2.设有以下说明语句typedef struct data{ int n;char ch[8];} PER;则下面叙述中正确的是A. struct data是结构体变量名B. PER是结构体类型名C. typedef struct 是结构体类型D. struct 是结构体类型名3.在程序VC6.0下,若有如下定义:struct data{ int i;char ch;double f;} b;则结构体变量b占用内存的字节数是A. 13B. 3C. 8D. 114.以下程序在VC6.0下的运行结果是#include <stdio.h>main(){ struct date{ int year,month,day; }today;printf("%d\n",sizeof(struct date)); }A. 6B. 8C. 10D. 125.设有如下定义:struct sk{ int a;float b;} data,*p;若有p=&data,则对data中的成员a的正确引用是A. (*p).data.aB.(*p).aC. p->data.aD. p.data.a6.以下对结构体变量stu1中成员age的非法..引用的是struct student{ int age;int num;}stu1,*p=&stu1;A. stu1.ageB. student.ageC. p->ageD.(*p).age7.有以下说明和语句:struct worker{ int no;char *name;} work,*p=&work;则以下引用方式不正确...的是A.work.no B. (*p).no C. p->no D. work->no 8.已知有如下定义:struct a{ char x;double y;} data,*t;,若有t=&data,则对data中的成员的正确引用是A. (*t).data.xB. (*t).xC. t->data.xD. t.data.x9.设有如下定义:struck sk{ int a;float b;} data;int *p;若要使p指向data中的a域,正确的赋值语句是A. p=&a;B. p=data.a;C. p=&data.a;D. *p=data.a;10.下列程序的输出结果是#include <stdio.h>struct abc{ int a,b,c; };main(){ struct abc s[2]={{1,2,3},{4,5,6}};int t;t=s[0].a+s[1].b;printf("%d \n", t);}A. 5B. 6C. 7D. 811.下面程序的运行结果是#include <stdio.h>main(){ struct cmplx{ int x;int y;} cnum[2]={1,3,2,7};printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x); }A. 0B. 1C. 3D. 612.若有以下说明和语句,则下面表达式中的值为1002的是struct student{ int num;int age;};struct student stu[3]={{1001,20},{1002,19},{1003,21}};struct student *p;p=stu;A.(p++)->ageB.(++p)->numC.(*p).numD.(*++p).age13.根据下面的定义,能打印出字母M的语句是struct person{ char name[9];int age;};struct person class[10]={"John",17,"Paul",19,"Mary"18,"adam",16};A. printf("%c\n",class[3].name[0]);B. printf("%c\n",class[3].name[1]);C. printf("%c\n",class[2].name[1]);D. printf("%c\n",class[2].name[0]);14.若有以下程序段:#include <stdio.h>struct dent{ int n;int *m;};int a=1,b=2,c=3;struct dent s[3]={{101,&a},{102,&b},{103,&c}};main(){ struct dent *p;p=s; ……}则以下表达式值为2是A. (p++)->mB. *(p++)->mC. (*p).mD. *(++p)->m15.C语言结构体类型变量在程序执行期间A. 所有成员一直驻留在内存中B. 只有一个成员驻留在内存中C. 部分成员驻留在内存中D. 没有成员驻留在内存中16.C语言共用体类型变量在程序运行期间A. 所有成员一直驻留在内存中B. 只有一个成员驻留在内存中C. 部分成员驻留在内存中D. 没有成员驻留在内存中17.在说明一个联合体变量时,系统分配给它的存储空间是A. 该联合体中第一个成员需存储空间B. 该联合体中最后一个成员所需存储空间C. 该联合体中占用最大存储空间的成员所需存储空间D. 该联合体中所有成员所需存储空间的总和18.以下程序在VC6.0下的运行结果是#include <stdio.h>main(){ union{ long a;int b;char c;} m;printf("%d\n",sizeof(m)); }A. 2B. 4C. 6D. 819.以下程序的输出结果是#include <stdio.h>union myun{ struct{ int x,y,z; } u;int k;} a;main(){ a.u.x=4;a.u.y=5;a.u.z=6;a.k=0;printf("%d\n", a.u.x);}A. 4B. 5C. 6D. 020.结构体变量成员的引用方式是使用运算符21.结构体指针变量成员的引用方式是使用运算符。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择题
1、在C语言中,执行下面语句后,输出的结果是(?C )
int x=10,y=3; printf("%d\n",y=x/y);
A. 0
B. 1
C. 3 D、不确定的值
2、在C语言中,假定所有变量均已正确说明,下列程序段运行后x的值是( B )
a=b=c=0;x=99;
if(!a) x=9;
else x=3;
A. 99
B. 9
C. 100
D. 3
3、在C语言中,执行语句:for (i=1; i<4; i++);后,变量i的值是( B )
A. 3
B. 4
C. 5
D. 不定
4、设int k;则语句for(k=0;k=1;k++);和语句for(k=0;k==1;k++);执行的次数分别是 A
A. 无限和0
B. 0和无限
C. 都是无限
D. 都是0
5、对于for(表达式1;;表达式3)可理解为( B )
A. for(表达式1;0;表达式3)
B. for(表达式1;1;表达式3)
C. for(表达式1;表达式1;表达式3)
D.for(表达式1;表达式3;表达式3)
6、下列循环体执行( D )次
k=70;
while(k=0) k-=1;
A. 70次
B. 69次
C. 无限次
D.0次
7、下列循环体执行( D )次
for(i=1;i<5;i++)
for(j=1;j<5;j++) printf("*\n");
A. 4次
B. 5次
C. 8次
D.16次
8、下面的for循环最多可执行( A )次。
for(x=0,y=0;(y!=99)&&(x<4);x++);
A. 4次
B. 5次
C. 99次
D.0次
9、下列判断char类型变量C1是否为数字的表达式中,哪个表达式最简单且正确。
( B )
A. '0'<=C1<='9'
B. (C1>='0')&&(C1<='9')
C. (C1>=0)&&(C1<=9)
D. ('0'<=C1)||('9'>=C1)
二、编程题
1、 在一行连续显示50个字符’A’
2、求[100,5000]之间同时满足除以8余6,除以6余4,除以4余2的所有整数。
3、输入两个正整数m和n,求其最大公约数和最小公倍数。
4、求2000以内所有完数之和,"完数"是指:一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:6=1+2+3,则6就是一个完数。
5、一球从100米的高度自由落下,每次落地后反跳回原高度的一半,再落下。
求它在第15次落地时,反弹多高?
6、用迭代法求x=。
求平方根的迭代公式为:x0=x; x=(x+a/x)/2; x的初值为a/2,直到fabs(x-x0)小于0.00001为止。
7、求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。
例如:2+22+222+2222+22222(n=5),n由键盘输入。
8、求解100到200之间的所有素数。
(循环嵌套,标志的使用)
9、两个乒乓球队比赛,各出3人。
甲队3人为A、B、C,乙 队3人为X、Y、Z。
已抽签决定比赛名单。
有人向队员打 听比赛名单,A说他不和X 比,C说他不和X、Z比,请编 程找出3对赛手的名单。
课后思考题:
1、30元钱换成1元、2元、5元的票面,问有多少种不同的兑换方法?输出所有的兑换方法。
2、求区间[20,3000]中所有回文数,回文数是正读与反读都是一样的数,如424,1551。