结构体练习题

合集下载

结构体习题

结构体习题

结构体习题49、以下程序运行结果是______。

#include <string.h>typedefstruct student{char name[10];longsno;float score;}STU;main(){ STUa={"Zhangsan",2001,95},b={"Shangxian",2002,90},c={"Anhua",2003,95},d,*p=&d;d=a;if(strcmp(,)>0) d=b;if(strcmp(,)>0) d=c;printf("%ld %s\n",d.sno,p->name);}标准答案为:2002 Shangxian1. 填空题人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。

函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!#include <stdio.h>#include <string.h>#define N 8typedefstruct{ charnum[10];intyear,month,day ;}STU;/**********found**********/STU fun(STU *std, char *num){ int i; STU a={"",9999,99,99};for (i=0; i<N; i++)/**********found**********/if(strcmp(std[i].num,num)==0 )/**********found**********/return (std[i]);return a;}main(){ STU std[N]={ {"111111",1984,2,15},{"222222",1983,9,21},{"333333",1984,9,1},{"444444",1983,7,15},{"555555",1984,9,28},{"666666",1983,11,15},{"777777",1983,6,22},{"888888",1984,8,19}};“”STU p;char n[10]="666666";p=fun(std,n);if(p.num[0]==0)printf("\nNot found !\n");else{ printf("\nSucceed !\n ");printf("%s %d-%d-%d\n",p.num,p.year,p.month,p.day);}}第1 处:STU fun(STU *std, char *num)第2 处:if(strcmp(std[i].num,num)==0 )第3 处:return (std[i]);2. 填空题人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。

结构体和共用体习题

结构体和共用体习题

结构体和共用体习题(总8页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--习题六1. 从下列四个选项中选择一个正确的填入括号中。

(1)在说明一个结构体变量时系统分配给它的存储空间是( D)。

A该结构体中第一个成员所需存储空间B该结构体中最后一个成员所需存储空间C该结构体中占用最大存储空间的成员所需存储空间D该结构体中所有成员所需存储空间的总和(2)在说明一个共用体变量时系统分配给它的存储空间是(D )。

A该共用体中第一个成员所需存储空间B该共用体中最后一个成员所需存储空间C该共用体中占用最大存储空间的成员所需存储空间D该共用体中所有成员所需存储空间的总和(3)共用体类型在任何给定时刻, ( B)。

A所有成员一直驻留在内存中B只有一个成员驻留在内存中C部分成员驻留在内存中D没有成员驻留在内存中(4)以下定义结构体类型的变量st1,其中不正确的是(A )A typedef stuct student{int num;int age;}STD;STD st1;B struct student{int num,age;}st1;C struct{int num;float age;}st1;D struct student{int num;int age;};struct student st1;(5)已知职工记录描述为:struct workers{int no;char name[20];char sex;struct{int day;int month;int year;}birth;};struct workers w;设变量w中的”生日”应是”1993年10月25日”,下列对”生日”的正确赋值方式是( C)。

A day=25; month=10; year=1993;B ==10; =1993;C =25; =10; =1993;(6)设有如下定义:struct sk{int a;float b;}data,*p;若有p=&data;则对data中的a成员的正确引用是( B)。

第8章结构体(答案)

第8章结构体(答案)

第8章结构体(答案)第8章结构⼀、选择题1、设有以下说明语句struct ex{ int x;float y;char z;}example;则下⾯的叙述中不正确的是(B)A)struct是结构体类型的关键字B)example是结构体类型名C)x,y,z都是结构体成员名D)struct ex是结构体类型2、设有以下说明语句typedef struct{int a;char c[10];} ST;则下⾯的叙述中正确的是(B)A)ST是结构体变量名B)ST是结构体类型名C)typedef struct是结构体类型名D)struct是结构体类型名3、有以下定义,能输出字母M的语句是(D)struct person{char name[9];int age;};struct person class[10]={ “ohu”,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]);4、以下对结构体类型变量的定义中,不正确的是( B )A)typedef struct B)#define AA struct aa{int n; AA{int n;C)struct aa D)struct{int n;float m; {int n;}; float m;struct aa td1; }td1;5、下列程序输出的结果是(B)A)5 B)6 C)7 D)8struct 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);}6、在TC2.0下,int 类型为2个字节。

C语言程序设计基础-结构体习题

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 题:结构体数组应用请定义一个描述学生基本信息的结构,包括姓名,学号,籍贯,身份证号,年龄,家庭住址,性别,联系方式等。

结构体习题1

结构体习题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语言结构体习题及答案

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)能够顺序通过编程、但相连接失效。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

结构体练习题(一)
一、基本题目
1、根据下列表格中所描述的信息,定义相应的结构体类型描述这些表格信
息;
表1 教工信息表
2、利用第1题中所定义的“汽车生产厂家档案”结构体类型,定义一个
相应的结构体变量CarMaker1,并将其初始化为吉利公司的信息;3、利用第1题中的教工信息表中定义的结构体类型,定义一个结构体数
组(15个元素)teach_info,然后将王丽的信息通过键盘输入的方式存储到teach_info[5]中;
4、定义一个指向教工信息表结构体类型的指针,并使其指向
teach_info[5],分别利用圆点运算符和箭头运算符输出王老师的信息。

二、综合题目(依据后面的信息表完成下述两个题目)
1、编程实现:输入一个班的学生的信息(最多40人),求其各门课的平
均成绩以及总成绩(总成绩为两门课程的平均成绩的和),并输出;
2、编程实现:按照每位学生的总成绩排序,从高到低输出各位学生的所有信息。

结构体类型定义参考(为了便于实现,所以总成绩没有被整合到“成绩结构体类型里面”,同学们可以自己思考如何使类型定义更简洁规范)
struct scores {
int first;
int sceond;
float ave;
};
struct stu_info{
char name[12];
char id[10];
struct scores score[2];//该数组存放一个学生的两门课的成绩信息float totalscore;
};。

相关文档
最新文档