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

合集下载

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语言程序设计基础-结构体习题

{ int num; char name[20]; float score; };
int main()
{ struct Student stu[5]={{10101,"Zhang",78},{10103,"Wang",98.5},{10106,"Li",
86
},{10108,“Ling”, 73.5},{10110,“Fun”, 100 } };
hing at a time and All things in their being are good for somethin
#include <stdio.h>
#define N 3
struct Student
{ int num;
char name[20];
float score[3];
float aver;
printf(" No. Name sex age\n"); for(p=stu;p<stu+3;p++)
printf(“%5d %-20s %2c %4d\n”,p->num, p->name, p->sex, p->age); return 0; }
7、有 n 个结构体变量,内含学生学号、姓名和 3 门课程的成绩。要求输出平均成绩最高的 学生的信息(包括学号、姓名、3 门课程成绩和平均成绩)。
person[i].category.clas); else
printf("%-6d%-10s%-4c%-4c% -10s\n",person[i].num,person[i].
name,person[i].sex, person[i].job, person[i].category.position); } return 0; }

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;}程序运行后的输出结果是()。

c语言入门练习题

c语言入门练习题

C语言入门练习题一、基础知识篇1.1 变量与常量1. 定义一个整型变量并赋值为10。

2. 声明一个浮点型常量,其值为3.14。

3. 将字符型变量 'A' 赋值给另一个字符型变量。

1.2 数据类型1. 将一个整型变量转换为浮点型变量。

2. 将一个长整型变量赋值给一个短整型变量。

3. 编写一个程序,输出不同数据类型所占的字节数。

1.3 运算符1. 计算5加3乘2的结果。

2. 判断两个整型变量是否相等。

3. 使用自增运算符使变量i的值增加1。

二、控制结构篇2.1 顺序结构1. 编写一个程序,输出1到10的整数。

2. 输出用户输入的两个整数中的较大值。

3. 计算并输出圆的面积(给定半径)。

2.2 选择结构1. 判断一个整数是正数、负数还是零。

2. 根据用户输入的成绩,输出对应的等级(A、B、C、D、E)。

3. 编写一个程序,实现石头剪刀布的游戏。

2.3 循环结构1. 计算1到100所有整数的和。

2. 输出所有的水仙花数(一个三位数,其各位数字的立方和等于该数本身)。

3. 使用循环结构输出九九乘法表。

三、函数篇3.1 函数定义与调用1. 编写一个函数,计算两个整数的和。

2. 定义一个函数,实现字符串的复制。

3. 创建一个函数,判断一个数是否为素数。

3.2 递归函数1. 使用递归函数计算斐波那契数列的第n项。

2. 编写一个递归函数,实现字符串的逆序输出。

3. 利用递归函数求解汉诺塔问题。

四、数组篇4.1 一维数组1. 初始化一个包含10个整数的数组,并输出其元素。

2. 计算一维数组中所有元素的和。

3. 找出一维数组中的最大值和最小值。

4.2 二维数组1. 创建一个3行4列的二维数组,并输出其元素。

2. 计算二维数组对角线元素的和。

3. 实现矩阵的转置。

五、指针篇5.1 指针基本操作1. 声明一个整型变量和一个指向该变量的指针,并输出指针所指向的值。

2. 使用指针实现两个整数的交换。

3. 编写一个函数,通过指针参数修改传入的字符串。

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语言结构体编程题

c语言结构体编程题
1.编写input()和output()函数输入,输出5个学生的数据记录。

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

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

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

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

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

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

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

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

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

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

结构体练习题

结构体练习题

结构体练习题:第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. 定义一个结构体,包含学生的姓名、学号和成绩。

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

第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语言结构体易错题

c语言结构体易错题以下是一些C语言结构体易错题:1.结构体变量作为函数参数时是值传递还是地址传递?答:结构体变量作为函数参数时,默认情况下是值传递,即会复制一个新的结构体变量传递给函数。

如果想要通过地址传递结构体变量,需要使用指针。

2.结构体变量可以在定义时初始化吗?答:是的,结构体变量可以在定义时进行初始化。

例如:cstruct Student {char name[20];int age;};int main() {struct Student stu = {"Tom", 18};return0;}注意,如果结构体中包含指针类型的成员,则只能初始化指针本身,而不能初始化指针所指向的内容。

3.结构体数组中的每个元素都是结构体类型的数据吗?答:是的,结构体数组中的每个元素都是结构体类型的数据。

每个元素都包含结构体中定义的所有成员。

4.结构体类型变量的长度等于各成员长度之和吗?答:不一定。

结构体类型变量的长度可能会因为编译器对内存对齐的要求而大于各成员长度之和。

编译器为了提高内存的访问效率,可能会对结构体成员进行内存对齐,使得每个成员的起始地址都是某个数的倍数。

这样会导致结构体类型变量的长度大于各成员长度之和。

5.共用体类型和结构体类型有什么区别?答:共用体类型和结构体类型都可以包含多个成员,但是它们的使用方式不同。

结构体类型中的成员各自占用不同的内存空间,而共用体类型中的成员则共享同一块内存空间,即所有成员的首地址相同。

因此,共用体类型变量的长度等于最长的成员的长度。

需要注意的是,由于共用体类型中的成员共享内存空间,因此修改其中一个成员的值会影响其他成员的值。

在使用共用体类型时需要特别小心。

结构体例题

结构体例题

结构体例题一、以下关于结构体定义的描述中,哪一项是正确的?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. 结构体的定义和初始化
结构体是一种用户自定义的数据类型,它可以包含多个不同类型的数据成员。

在考试中,会考察考生对结构体的定义和初始化方式是否熟悉,以及如何访问结构体成员。

2. 结构体作为函数参数传递
结构体可以作为函数的参数进行传递,这样可以方便地传递多个参数信息,同时也能够将相关的数据封装在一起,增加代码的可读性。

3. 结构体指针的使用
结构体指针可以用于访问结构体成员,也可以方便地将结构体作为函数的参数进行传递,此外还可以通过结构体指针来动态分配内存空间。

4. 结构体数组的使用
结构体数组是一种常见的数据类型,它可以存储多个结构体变量,每个结构体变量又可以包含多个数据成员。

在考试中,可能会考察考生对结构体数组的定义、初始化以及访问方式是否熟悉。

5. 结构体与文件操作
结构体可以方便地将多个数据成员存储在一个结构体变量中,同时也可以使用文件操作将结构体数据读取或写入到文件中,以实现数据的长期存储和管理。

总之,在考试中,需要对结构体的定义、初始化、访问方式、结构体指针、结构体数组、文件操作等相关知识点进行充分理解,并且能够熟练地运用到实际编程中。

c语言结构体编程题

c语言结构体编程题

题目:编写一个程序,使用结构体表示一个学生的信息,包括姓名、年龄、学号和成绩,并提供相应的函数进行信息输入、输出和计算平均成绩。

c复制代码#include<stdio.h>#include<string.h>struct student {char name[20];int age;int id;float score;};void input_student(struct student *s) {printf("请输入学生姓名:");scanf("%s", s->name);printf("请输入学生年龄:");scanf("%d", &s->age);printf("请输入学生学号:");scanf("%d", &s->id);printf("请输入学生成绩:");scanf("%f", &s->score);}void output_student(const struct student *s) {printf("学生姓名:%s\n", s->name);printf("学生年龄:%d\n", s->age);printf("学生学号:%d\n", s->id);printf("学生成绩:%.2f\n", s->score);}float average_score(const struct student *s, int n) {float sum = 0;for (int i = 0; i < n; i++) {sum += s[i].score;}return sum / n;}int main() {struct student s[3];input_student(&s[0]);input_student(&s[1]);input_student(&s[2]);printf("平均成绩为:%.2f\n", average_score(s, 3));output_student(&s[0]);output_student(&s[1]);output_student(&s[2]);return0;}在这个示例中,我们定义了一个结构体student来表示学生的信息,包括姓名、年龄、学号和成绩。

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的表达式为。

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

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.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.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个候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果。

#include <string.h>#include <stdio.h>struct Person{ char name[20];int count;}leader[3]={“Li”,0,“Zhang”,0,“Sun”,0};int main(){ int i,j; char 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++)printf("%5s:%d\n“,leader[i].name,leader[i].count);return 0;}4、有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息。

#include <stdio.h>struct Student{ int num; char name[20]; float score; };int main(){ struct Student stu[5]={{10101,"Zhang",78},{10103,"Wang",98.5},{10106,"Li", 86 },{10108,“Ling”, 73.5},{10110,“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 %6.2f\n",stu[i].num,stu[i].name,stu[i].score);printf("\n");return 0;}5、通过指向结构体变量的指针变量输出结构体变量中成员的信息。

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

#include <stdio.h>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 %-20s %2c %4d\n”,p->num, p->name, p->sex, p->age);return 0;}7、有n个结构体变量,内含学生学号、姓名和3门课程的成绩。

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

#include <stdio.h>#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])/3.0;}}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三门课成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.2f\n",stud.num,,stud.score[0],stud.score[1],stud.score[2],stud.aver);}8、有若干个人员的数据,其中有学生和教师。

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

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

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

#include <stdio.h>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].category.clas);else if(person[i].job == 't‘)scanf(“%s”,person[i].category.position); else 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].category.clas);elseprintf("%-6d%-10s%-4c%-4c%-10s\n",person[i].num,person[i].name,person[i].sex, person[i].job,person[i].category.position);}return 0;}9、编程,输入2个时刻, 定义一个时间结构体类型(包括时分秒),计算2个时刻之间的时间差。

相关文档
最新文档