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

合集下载

结构体练习题

结构体练习题

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

C语言程序设计结构习题与答案

C语言程序设计结构习题与答案

C语言程序设计结构习题与答案1. 介绍C语言是一种广泛应用于系统软件和应用软件开发的高级程序设计语言。

C语言程序设计结构是指程序的组织形式和编写规范。

在学习C 语言时,我们需要通过练习习题来提升自己的编程能力。

本文将介绍一些C语言程序设计结构习题,并给出相应的答案。

2. 基本语法习题2.1 输出Hello, World!要求:编写一个程序,在屏幕上输出"Hello, World!"。

答案:```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```2.2 输入输出整数要求:编写一个程序,从键盘输入一个整数,然后将其加1后输出。

答案:```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);printf("加1后的值为:%d\n", num + 1);return 0;}```3. 控制结构习题3.1 判断奇偶数要求:编写一个程序,判断一个输入的整数是奇数还是偶数,并输出相应的结果。

答案:```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("输入的整数为偶数\n");} else {printf("输入的整数为奇数\n");}return 0;}```3.2 计算阶乘要求:编写一个程序,计算输入的正整数的阶乘并输出。

答案:```c#include <stdio.h>int main() {int num, factorial = 1, i;printf("请输入一个正整数:");scanf("%d", &num);for (i = 1; i <= num; i++) {factorial *= i;}printf("%d的阶乘为:%d\n", num, factorial);return 0;}```4. 数组与函数习题4.1 求数组元素和要求:编写一个程序,计算一个整型数组中所有元素的和并输出结果。

C语言习题结构体和杂类(答案)

C语言习题结构体和杂类(答案)

C语言习题结构体和杂类(答案)第十章结构体和杂类一.选择题1.如下说明语句,则下面叙述不正确的是(C)。

tructtu{inta;floatb;}tutype;A.truct是结构体类型的关键字B.tructtu是用户定义结构体类型C.tutype是用户定义的结构体类型名(变量名)D.a和b都是结构体成员名2.在16位PC机中,若有定义:tructdata{inti;charch;doublef;}b;则结构变量b占用内存的字节数是(D)。

A.1B.2C.8D.11A.1和2B.2和3C.7和2D.7和84.以下程序的输出结果是(D)。

unionmyun{truct{int某,y,z;}u;intk;}a;main(){a.u.某=4;a.u.y=5;a.u.z=6;a.k=0;printf(\A.4B.5C.6D.05.当定义一个共用体变量时,系统分配给它的内存是(C)。

A.各成员所需内存量的总和B.结构中第一个成员所需内存量C.成员中占内存量最大的容量D.结构中最后一个成员所需内存量6.若有以下程序段:uniondata{inti;charc;floatf;}a;intn;则以下语句正确的是(C)。

A.a=5;B.a={2,’a’,1.2}C.printf(“%d”,a);D.n=a;7.设truct{inta;charb;}Q,某p=&Q;错误的表达式是(d)。

A.Q.aB.(某p).bC.p->aD.某p.b9.以下对C语言中共用体类型数据的叙述正确的是(c)。

A.可以对共用体变量直接赋值B.一个共用体变量中可以同时存放其所有成员C.一个共用体变量中不能同时存放其所有成员D.共用体类型定义中不能出现结构体类型的成员10.下面对typedef的叙述中不正确的是(b)。

A.用typedef可以定义多种类型名,但不能用来定义变量B.用typedef可以增加新类型C.用typedef只是将已存在的类型用一个新的标识符来代表D.使用typedef有利于程序的通用和移植二.判断题1.共用体类型的变量的字节数等于各成员字节数之和。

C语言(结构体与共用体)习题与答案

C语言(结构体与共用体)习题与答案
A.int strcmp4(char *s,char *t)
{ 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语言程序设计(结构)习题与答案

C语言程序设计(结构)习题与答案

一、单选题1、设有定义:struct complex{int real, unreal;} data1={1,8},data2;则以下赋值语句中错误的是()。

A.data2.real=data1.unreal;B.data2=(2,6);C.data2=data1;D.data2.real=data1.real;正确答案:B2、设有定义:struct{char mark[12];int num1;double num2;} t1,t2;若变量均已正确赋初值,则以下语句中错误的是()。

A.t2.num1=t1.num1;B.t2.num2=t1.num2;C.t1=t2;D.t2.mark=t1.mark;正确答案:D3、有以下定义语句:struct student{int num;char name[9];};则不能正确定义结构体数组并赋初始值的是( )。

A.struct stu[]={{1,"zhangsan"},{2,"li si"}};B.struct student stu[2]={{1,"zhangsan"},{2,"li si"}};C.struct student stu[2]={1, "zhangsan",2,"li si"};D.struct student stu[]={{1,"zhangsan"},{2,"li si"}}; 正确答案:A4、有以下程序:#include<stdio.h>struct S{ int a,b;}data[2]={10,100,20,200};int main(){struct S p=data[1];printf("%d\n",++(p.a));return 0;}程序运行后的输出结果是()。

结构体例题

结构体例题

结构体例题一、以下关于结构体定义的描述中,哪一项是正确的?A. 结构体可以包含不同类型的数据项B. 结构体只能包含相同类型的数据项C. 结构体定义后不能直接使用,必须先声明D. 结构体变量在定义时不能初始化(答案:A)二、在C语言中,如何访问结构体成员?A. 使用结构体变量名直接访问B. 使用结构体变量名加点号再加成员名C. 使用结构体类型名加点号再加成员名D. 使用结构体指针解引用后直接访问(答案:B)三、以下哪个关键字用于定义结构体类型?A. classB. structC. unionD. enum(答案:B)四、关于结构体数组,以下说法错误的是?A. 结构体数组中的每个元素都是结构体类型的变量B. 结构体数组可以像普通数组一样进行遍历C. 结构体数组不能作为函数参数传递D. 可以通过下标访问结构体数组中的特定元素(答案:C)五、以下哪个操作不能对结构体变量进行?A. 赋值B. 比较大小(使用, !=等)C. 取地址D. 作为函数返回值(答案:B,注:结构体变量通常不能直接使用或!=进行比较,除非逐个成员比较)六、在定义结构体时,以下哪项不是必须的?A. 结构体名B. 结构体成员类型C. 结构体成员名D. 结构体成员初始化值(答案:D)七、关于结构体指针,以下说法正确的是?A. 结构体指针不能直接访问结构体成员B. 结构体指针需要先解引用才能访问结构体成员C. 结构体指针不能直接赋值给另一个结构体指针变量D. 结构体指针不能用于动态内存分配(答案:B)八、以下哪种情况适合使用结构体?A. 当需要存储多个相同类型的数据时B. 当需要存储一个由多种类型数据组成的数据集合时C. 当需要对数据进行排序时D. 当需要进行大量的数学运算时(答案:B)九、在C语言中,如何声明一个结构体类型的指针?A. struct MyStruct *ptr;B. struct MyStruct ptr*;C. struct *MyStruct ptr;D. struct MyStruct* ptr[];(答案:A)十、关于结构体嵌套,以下说法错误的是?A. 结构体可以嵌套在其他结构体中作为成员B. 嵌套的结构体成员可以通过多级点号运算符访问C. 结构体不能嵌套自身作为成员,会导致无限递归D. 嵌套的结构体使得数据结构更加复杂和灵活(答案:C,注:结构体可以嵌套自身,但需要通过指针等方式避免无限递归的问题)。

C语言程序设计专项训练题之 结构体

C语言程序设计专项训练题之 结构体

计算机等级考试二级C语言程序设计专项训练题——结构体一.程序填空题1.给定程序中,通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。

函数fun的功能是:输出这位学生的信息。

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

注意:不得增行或删行,也不得更改程序的结构!#include <stdio.h>typedef struct{int num;char name[9];char sex;struct { int year,month,day;} birthday;float score[3];}STU;/**********found**********/void show(STU ___1___){int i;printf("\n%d %s %c %d-%d-%d",tt.num,,tt.sex,tt.birthday.year,tt.birthday.month,tt.birthday.day);for(i=0; i<3; i++)/**********found**********/printf("%5.1f", ___2___);printf("\n");}int main( ){STU std={1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0};printf("\nA student data:\n");/**********found**********/show(___3___);return 0;}2.人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。

函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。

c语言程序设计基础试题及答案

c语言程序设计基础试题及答案

c语言程序设计基础试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 下列哪个选项是C语言中的合法整数?A. 0x10B. 0X1GC. 08D. 0L答案:A3. 在C语言中,用于定义一个函数的关键字是?A. defineB. functionC. defD. void答案:B4. C语言中,以下哪个是正确的字符串定义?A. char str[] = "Hello";B. char str[] = {"Hello"};C. char str = "Hello";D. char str[] = 'Hello';答案:A5. 在C语言中,以下哪个运算符用于求余?A. %B. /C. //D. %答案:A二、填空题(每题3分,共15分)1. 在C语言中,定义一个整型变量的关键字是________。

答案:int2. 如果一个函数没有返回值,应该使用________关键字声明。

答案:void3. 在C语言中,________运算符用于连接字符串。

答案:+4. C语言中,________运算符用于比较两个值是否相等。

答案:==5. 在C语言中,________关键字用于定义一个指针变量。

答案:*三、简答题(每题5分,共20分)1. 简述C语言中数组和指针的关系。

答案:在C语言中,数组名可以被当作指向数组第一个元素的指针。

数组的每个元素可以通过指针运算来访问。

2. 解释C语言中函数原型声明的作用。

答案:函数原型声明提供了函数的名称、返回类型和参数类型,但不需要函数体。

它允许在函数定义之前调用函数,同时帮助编译器检查函数调用的正确性。

3. 什么是C语言中的预处理指令,举例说明。

答案:预处理指令是C语言中的特殊命令,用于在编译之前处理源代码。

结构体习题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域,正确的赋值语句是。

c语言程序与设计基础知识试题及答案

c语言程序与设计基础知识试题及答案

c语言程序与设计基础知识试题及答案一、单项选择题(每题2分,共20分)1. C语言中,用于定义结构体的关键字是:A. structB. unionC. enumD. typedef答案:A2. 下列哪个选项是C语言中的合法整型常量?A. 0x12B. 0123C. 0.12ED. 12e答案:A3. 在C语言中,用于定义数组的关键字是:A. arrayB. listC. vectorD. none of the above答案:D4. 下列哪个函数用于将字符串转换为浮点数?A. atoiB. atofC. itoaD. sprintf答案:B5. C语言中,用于文件操作的库函数是:A. stdio.hB. string.hC. math.hD. stdlib.h答案:A6. 下列关于指针的描述,错误的是:A. 指针可以存储变量的地址B. 指针可以存储一个值C. 指针可以作为函数的参数D. 指针可以作为函数的返回值答案:B7. 在C语言中,用于定义函数的关键字是:A. functionB. defineC. defD. void答案:D8. 下列哪个选项不是C语言中的控制结构?A. if-elseB. switch-caseC. forD. goto答案:D9. 下列哪个选项是C语言中的合法变量名?A. 2variableB. variable2C. variable_2D. all of the above答案:D10. C语言中,用于定义枚举类型的关键字是:A. enumB. typedefC. structD. union答案:A二、填空题(每题2分,共10分)1. C语言中,用于定义一个名为“person”的结构体,包含姓名和年龄两个成员,正确的定义方式是:struct person { char name[50];int age; }。

答案:正确2. 在C语言中,使用________函数可以输出格式化的字符串到控制台。

C语言结构体习题及答案知识讲解

C语言结构体习题及答案知识讲解
main()
{
printf("%c,%d\n",kw[3].Key[0], kw[3].ID);
}
A) i,3B) n,3C)f,4D)l,4
7.定义以下结构体类型
structstudent
{
char name[10];
int score[50];
float average;
}stud1;
则stud1占用内存的字节数是【 】。
} x[4]={{2008,10,1, "guangzhou"}, {2009,12,25, "Tianjin"}};
语句
printf("%s,%d,%d,%d",x[0].name,x[1].birthday.year);的输出结果为【】。
A)guangzhou,2009B)guangzhou,2008
C)printf("%s\n",class[3].name);
D)printf("%s\n",class[0].name);
10.定义以下结构体数组
struct date
{ int year;
int month;
int day; };
struct s
{ struct date birthday;
char name[20];
struct c
{ int x;
int y;
}s[2]={1,3,2,7};
语句printf("%d",s[0].x*s[1].x)的输出结果为【】
A) 14B)6C)2D) 21
5.运行下列程序段,输出结果是【】
struct country

C语言之结构体练习题

C语言之结构体练习题

9.3.1 选择题选择题2.有以下程序输出结果是( )。

#include<stdio.h>struct stu{int num;char name[10];int age;};void fun(struct stu *p){printf("%s\n",(*p).name);}main(){struct stu students[3]= {{9801,"Zhang",20},{9802,"Wang",19},{9803,"Zhao",18}};fun(students+2);}A.ZhangB.ZhaoC.WangD.184.设有如下定义:struct sk{int a;float b;} data,*p;若有p=&data;则对data中的a 域的正确引用是( )。

A6.根据下面的定义,能打出字母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);B.printf(〞%c\n〞,class[3].name[1]);C.printf(〞%c\n〞,class[2].name[1]);D.printf(〞%c\n〞,class[2].name[0];7. 下列程序的执行结果为( )。

#include<stdio.h>struct s1{char *s;int i;struct s1 *sip;}main(){static struct s1 a[]={{"abcd",1,a+1},{"efgh",2,a+2},{"ijkl",3,a}};struct s1 *p=a;int i=0;printf("%s%s%s",a[0].s,p->s,a[2].sip->s);printf("%d%d",i+2,--a[i].i);printf("%c\n",++a[i].s[3]); //VC下运行,出现错误}A.abcd abcd abcd 2 0 eB.abcd efgh ijkl 2 0 eC.abcd abcd ijkl 2 0 eD.abcd abcd abcd 2 1 e8. 下面程序的输出结果为( )。

c语言结构体单元练习

c语言结构体单元练习

1.有以下定义和语句:struct student{ int age;int num; };struct student stu[3]={{1001,20},{1002,19},{1003,21}};main(){ struct student *p;p=stu;…… }则以下不正确的引用是。

A) (p++)->num B) p++ C) (*p).num D) p=&stu.age2.有以下结构体定义:struct example{ int x;int y; }v1;则正确的引用或定义是。

A) example.x=10 B) example v2; v2.x=10;C) struct v2; v2.x=10; D) struct example v2={10};3.对于如下结构体定义,若对变量person的出生年份进行赋值,正确的赋值是。

struct date{ int year,month,day;};struct worklist{ char name[20];char sex;struct date birth;}person;A) year=1976 B) birth.year=1976C) person.birth.year=1976 D) person.year=19764.根据下述定义,可以输出字符'A'的语句是。

struct person{ char name[11];struct{ char name[11];int age;}other[10];};struct person man[10]={ {"Jone",{"Paul",20}},{"Paul",{"Mary",18}},{"Mary",{"Adam",23}},{"Adam",{"Jone",22}}};A) printf("%c",man[2].other[0].name[0]); B) printf("%c",other[0].name[0]);C) printf("%c",man[2].(* other[0])); D) printf("%c",man[3].name);5.若有以下程序段:struct st{ int n;struct st *next; };struct st a[3]={5,&a[1],7,&a[2],9, '\0'} ,*p=a;则值为6的表达式为。

c语言结构体试题及答案

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. 编写一个函数,交换两个结构体变量的值。

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

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

1、把一个学生的信息(包括学号、姓名、性别、住址)放在一个结构体变量中,然后输出这个学生的信息。

#include <stdio.h>int main(){struct Student{longintnum;char name[20];char sex;charaddr[20];}a={10101,“Li Lin”,‘M’, “123 Beijing Road”};printf("NO.:%ld\nname:%s\nsex:%c\naddress:%s\n",a.num,a. name,a.sex,a.addr);return 0;}2、输入两个学生的学号、姓名和成绩,输出成绩较高学生的学号、姓名和成绩#include <stdio.h>int main(){ struct Student{intnum;char name[20];float score;}student1,student2;scanf("%d%s%f",&student1.num,,&student1.score);scanf(“%d%s%f”,&student2.num,,&student2.score);printf("The higher score is:\n");if (student1.score>student2.score)printf("%d %s %6.2f\n",student1.num,, student1.score);else if (student1.score<student2.score)printf("%d %s %6.2f\n",student2.num,, student2.score);else{printf("%d %s %6.2f\n",student1.num,, student1.score);printf("%d %s %6.2f\n",student2.num,, student2.score);}return 0;}3、有3个候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果。

C语言结构体习题及答案

C语言结构体习题及答案

第9章结构体1.定义以下结构体类型struct s{int a;char b;float f;};则语句printf("%d",sizeof(struct s))的输出结果为【】。

A) 3 B) 7 C) 6 D) 42.当定义一个结构体变量时,系统为它分配的内存空间是【】A)结构中一个成员所需的内存容量B)结构中第一个成员所需的内存容量C)结构体中占内存容量最大者所需的容量D)结构中各成员所需内存容量之和3.定义以下结构体类型struct s{ int x;float f;}a[3];语句printf("%d",sizeof(a))的输出结果为【】A) 4 B) 12 C) 18 D) 6 7.定义以下结构体类型struct student{char name[10];int score[50];float average;}stud1;则stud1占用内存的字节数是【】。

A) 64 B) 114 C) 228 D) 79、设有一结构体类型变量定义如下:struct date{ int year;int month;int day;};struct worklist{ char name[20];char sex;struct date birthday;} person;若对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是。

A. year=1976B. birthday.year=1976C. person.birthday.year=1976D. person.year=19761、若程序中有以下的说明和定义:struct abc{ int x;char y; } 花括号后少了分号。

struct abc s1,s2;则会发生的情况是______。

A) 编译时错B) 程序将顺序编译、连接、执行C) 能顺序通过编译、连接、但不能执行D) 能顺序通过编译、但连接出错。

C语言结构体共用体选择题(部分做了注释)

C语言结构体共用体选择题(部分做了注释)

1、变量a所占的内存字节数是________。

struct stu{ char name[20];long int n;int score[4];} a ;A) 28 B) 30C) 32 D) 36C20+4+4*2=322、下列程序的输出结果是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)5 B)6 C)7 D)8B3、有如下定义struct person{ char name[9]; int age;};struct person calss[4]={ "Johu",17,"Paul",19,"Mary",18,"Adam",16,};根据以上定义,能输出字母M的语句是________。

A) printf("%c\n",class[3].name);B) printf("%c\n",class[3].name[1]);C) printf("%c\n",class[2].name[1]);D) printf("%c\n",class[2].name[0]);D4、以下程序的输出是________。

struct st{int x;int *y;} *p;int dt[4]={10,20,30,40};struct st aa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,dt[0],}; main(){ p=aa;printf("%d\n",++(p->x));}A) 10 B) 11C) 51 D) 60C5、设有以下定义和语句,则输出的结果是________(用small模式编译,指针变量占2个字节)。

c语言结构体编程题

c语言结构体编程题

1.编写input()和output()函数输入,输出5个学生的数据记录。

参考答案
2.创建一个链表。

参考答案
3.反向输出一个链表。

参考答案
4.建立一个单向链表,链表中每个结点包含成绩和指针两个域。

之后,①输出该链表;②
对该链表排序并输出;③任意输入一个成绩,将其插入链表中的适当位置;④任意输入一个成绩,将链表中相同的结点删除。

参考答案
5.连接两个链表。

参考答案
6.利用结构体类型,编程计算一名同学5门课的平均分。

参考答案
7.用结构体型数组初始化建立一工资登记表。

然后键入其中一人的姓名,查询其工资情况。

参考答案
8.用子函数求出worker数组中每个工人的实发工资。

参考答案
9.例、显示时、分、秒的软件延时
参考答案。

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

1、把一个学生的信息(包括学号、姓名、性别、住址)放在一个结构体变量中,然后输出这个学生的信息。

#include <>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",,,,;return 0;}2、输入两个学生的学号、姓名和成绩,输出成绩较高学生的学号、姓名和成绩#include <>int main(){ struct Student{int num;char name[20];float score;}student1,student2;scanf("%d%s%f",&,, &;scanf( “ %d%s%”f ,&,, &;printf("The higher score is:\n");if >printf("%d %s %\n",,, ;else if <printf("%d %s %\n",,, ;else{printf("%d %s %\n",,, ;printf("%d %s %\n",,, ;}return 0;}3、有 3 个候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果。

#include <>#include <>struct Person{ char name[20];int count;}leader[3]={ “Li ”,0, “ Zhang ” ,0, “ Sun” ,0};int main(){ int i,j; c har leader_name[20];for (i=1;i<=10;i++){ scanf( “ %s” ,leader_name); for(j=0;j<3;j++)if(strcmp(leader_name, leader[j].name)==0) leader[j].count++;}for(i=0;i<3;i++)n“ ,leader[i].name, leader[i].count);return 0;}4、有n 个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息。

#include <>struct Student{ int num; char name[20]; float score; };int main(){ struct Student stu[5]={{10101,"Zhang",78},{10103,"Wang",},{10106,"Li",86 },{10108, “ Ling},{1”01, 10, “Fun” ,}100};struct Student temp;const int n = 5 ;int i,j,k;printf("The order is:\n");for(i=0;i<n-1;i++){ k=i;for(j=i+1;j<n;j++) if(stu[j].score>stu[k].score) k=j; temp=stu[k];stu[k]=stu[i];stu[i]=temp;} for(i=0;i<n;i++) printf("%6d %8s %\n", stu[i].num,stu[i].name,stu[i].score);printf("\n");return 0;}5、通过指向结构体变量的指针变量输出结构体变量中成员的信息。

#include <>#include <>int main(){ struct Student{ long num;char name[20];char sex;float score;};struct Student stu_1;struct Student * p;p=&stu_1;=10101;strcpy, “ Li Lin ” );='M ‘ ; =;n”p,->.num); printf("name:%s\n", p->.name);n”,p->.sex);printf( ” scoren:%” ,;return 0;}6、有 3 个学生的信息,放在结构体数组中,要求输出全部学生的信息。

#include <>struct Student{ int num;char name[20];char sex;int age;};struct Student stu[3]={{10101,"Li Lin",'M',18},{10102,"Zhang Fun",'M',19},{10104,"Wang Min",'F',20} };int main(){ struct Student *p;printf(" No. Name sex age\n");for(p=stu;p<stu+3;p++)printf( “ %5d % n” ,-p>num, p->name, p->sex, p->age);return 0;}7、有n 个结构体变量,内含学生学号、姓名和 3 门课程的成绩。

要求输出平均成绩最高的学生的信息(包括学号、姓名、 3 门课程成绩和平均成绩)。

#include <>#define N 3struct Student{ int num;char name[20];float score[3];float aver;};int main(){ void input(struct Student stu[]);struct Student max(struct Student stu[]);void print(struct Student stu);struct Student stu[N];input(stu);print(max(stu));return 0;}void input(struct Student stu[]){ int i;printf(" 请输入各学生的信息:学号、姓名、三门课成绩:\n");for(i=0;i<N;i++){scanf("%d %s %f %f %f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[ 2] ); stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/;}}struct Student max(struct Student stu[]){int i,m=0;for(i=0;i<N;i++)if (stu[i].aver>stu[m].aver) m=i;return stu[m];}void print(struct Student stud){ printf("\n 成绩最高的学生是:\n");printf(" 学号:%d\n 姓名:%s\n 三门课成绩:%,%,%\n 平均成绩:%\n",,,[0],[1],[2],;}8、有若干个人员的数据,其中有学生和教师。

学生的数据中包括:姓名、号码、性别、职业、班级。

教师的数据包括:姓名、号码、性别、职业、职务。

要求用同一个表格来处理。

#include <> union Categ{ int clas;char position[10];};struct{ int num;char name[10];char sex;char job;union Categ category }person[2];int main(){int i;for(i=0;i<2;i++){scanf("%d %s %c %c “ ,&person[i].num, &person[i].name, &person[i].sex,&person[i].job);if(person[i].job == 's') scanf("%d “ ,&person[i].;else if(person[i].job == 't ‘)scanf( “ %s” ,person[i].e; lse printf( “ Input error! ” );}printf("\n"); for(i=0;i<2;i++){if (person[i].job == ‘s' )printf("%-6d%-10s%-4c%-4c%-10d\n",person[i].num,person[i]. name,person[i].sex,person[i].job, person[i].;else printf("%-6d%-10s%-4c%-4c% -10s\n",person[i].num,person[i].name,person[i].sex, person[i].job,person[i].;}return 0;}9、编程,输入 2 个时刻, 定义一个时间结构体类型 (包括时分秒) ,计算 2 个时刻之间的时间差。

#include <>typedef struct Mytime{int hour;int min;int sec;}T;int main(){T t1, t2, t3;int seel, sec2, sec3;printf(”输入两个时间值,以XX:XX:XX的格式\n"); sea nf("%d:%d:%d",,,;seanf("%d:%d:%d",,,;seel = * 3600 + * 60 + ;sec2 = * 3600 + * 60 + ;if( sec1 >= sec2 )sec3 = sec1 - sec2;elsesec3 = sec2 - sec1;=sec3 / 3600;sec3 %= 3600;=sec3 60;=sec3 %60;printf(”时间差是%d小时%d分%d秒\n",,,;return 0;}10、编程题:时间换算。

相关文档
最新文档