结构体习题

合集下载

C语言练习题1

C语言练习题1

C语言练习题1第八章结构体与共用体1练习题一、c语言基础知识1.1选择题1.以下不是c语言的特点的就是(b)。

a.语言简洁紧凑b.能够编制出功能复杂的程序c.c语言可以直接对硬件操作d.c 语言移植性好2.以下字符序列中,不容用做c语言标识符的就是(b)。

a.abc123b.no.1c._123_d._ok3.正确的c语言标识符是(a)。

a._buy_2b.2_buyc.?_buyd.buy?4.恳请挑选出可以用做c语言用户标识符的一组标识符(b)。

a.voidb.a3_b3c.ford.2adefine_123-abcdowordifcasesizeof5.以下符号中,不属于转义字符的就是(b)。

a.\\\\b.\\0xaac.\\td.\\06.不属于c语言关键字的是(d)。

a.intb.breakc.whiled.character7.就是c语言提供更多的合法关键字的就是(b)。

a.floatb.signedc.integerd.char8.以下不能定义为用户标示符的是(d)。

a.一个主程序和若干子程序共同组成b.一个或多个函数共同组成c.若干过程共同组成d.若干子程序共同组成10.c语言程序的基本单位是(c)。

a.程序行b.语句c.函数d.字符20.下列变量定义中合法的是aa.short_a=1-.le-1;b.doubleb=1+5e2.5;c.longdo=0xfdal;d.float2_and=1-e-3;9xn21.与数学式子对应的c语言表达式是(c)。

2x?1a.9*x^n/(2*x-1)b.9*x**n/(2*x-1)c.9*pow(x,n)*(1/(2*x-1))d.9*pow(n,x)/(2*x-1)第八章结构体与共用体222.若存有代数式3ab,则不正确的c语言表达式是(c)。

cda.a/c/d*b*3b.3*a*b/c/dc.3*a*b/c*dd.a*b/d/c*323.已知各变量的类型说明如下:intm=8,n,a,b;unsignedlongw=10;doublex=3.14,y=0.12;则以下符合c语言语法的表达式是(a)。

教材课后题答案-第7章

教材课后题答案-第7章

习题7一 单选题1.设有如下定义,则表达式sizeof(y)的值是【 】。

struct data {long *ln; char c;struct data *last,*next; }y; A.7 B.9 C.13 D.17 【答案】C【解析】指针变量在内存中占用4个字节,所以sizeof(y)的值是4+1+4+4=13 2.设有以下程序段,则表达式的值不为100的是【 】。

struct st{int a;int *b;}; void main(){int m1[]={10,100},m2[]={100,200}; struct st *p,x[]={99,m1,100,m2}; p=x; ... }A.*(++p->b)B.(++p)->aC.++p->aD.(++p)->b 【答案】D【解析】根据题意,p 指向x 数组,x[0]的b 成员指向m1数组,x[1]的b 成员指向m2数组,如图7-1所示。

选项A 中p->b 指向m1[0],通过“++”运算p->b 指向m1[1],所以选项A 的表达式的值为100。

选项B 中++p 使p 指向x[1],x[1]的a 成员的值是100。

选项C 中p 指向x[0],x[0]的a 成员做“++”运算,结果为100。

选项D 中++p 使p 指向x[1],x[1]的b 成员的值是指针,所以选择选项D 。

m1m2p图7-13.设有以下定义,且如图7-2所示,指针head 和p 指向链表的第一个结点,指针q 指向新的结点,则不能把新结点插入在第一个结点之前的语句是【 】。

headpq图7-2struct node{int a;struct node *next;}*head,*p,*q;A.head=q,q->next=p;B.head=q,q->next=head;C.q->next=head,head=q;D.head=q,head->next=p;【答案】B4.设有如下结构体说明和变量定义,且如图7-3所示,指针p指向变量one,指针q指向变量two,则不能将结点two接到结点one之后的语句是【】。

C语言程序设计习题集(有答案)

C语言程序设计习题集(有答案)

高等教育自学考试C语言程序设计(二)课程代号(05772)同步练习题班级学号姓名二O 一六年三月目录第一章C语言概述第二章基本数据类型第三章控制结构第四章运算符和表达式第五章函数第六章数组第七章字符与字符串第八章变量类别与编译预处第九章指针第十章结构体、共用体和枚举类型第十一章文件第一章C语言概述一、单项选择题1.在计算机上可以直接运行的程序是()。

A.高级语言程序B.汇编语言程序C.机器语言程序D.C语言程序2. 一个C语言程序是由()A.若干函数组成B.若干过程组成C.若干主程序组成D.若干子程序组成3. C语言不具有的特点是()A.具有结构化的控制语句B.数据类型丰富C.语法限制不太严格,程序设计自由度大D.在可移植性上,C语言比其他语言差4. 以下叙述不正确的是()A.一个C语言程序可由一个或多个函数组成B.一个C语言程序必须包含一个主函数C.C语言程序的基本组成单位是函数D.在C语言程序中,注释说明只能位于一条语句的后面5. 以下叙述正确的是()A.C语言比其他语言高级B.C语言可以不用编译就能被计算机识别和执行C.C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D.C语言出现的最晚,所以具有其他语言的一切优点二、填空1. 计算机语言的发展经过了、和等阶段。

2. C语言既适合编写,也适合编写应用软件。

标准答案一、单项选择题CADDC二、填空1. 机器语言,汇编语言,高级语言2. 系统软件第二章基本数据类型一、单项选择题1.正确的C语言用户自定义标识符是()A.printB.floatC.when?D.random%22.属于C语言基本数据类型的是( )A.指针型B.无符号整型C.数组型D.结构型3.C语言的长整型数值在计算机中占用的字节个数是( )A.1B.2C.3D.44.C语言中,″\x3d″在内存中占用的字节数是( )A.1B.2C.4D.55.下列关于C语言的叙述错误的是( )A. 英文字母大小写不加以区分B. 不同类型的变量可以出现在同一个表达式中C. 在赋值表达式中赋值号两边的类型可以不同D. 某些运算符在不同的场合可以有不同的含义6.下列转义字符中错误的是( )A. ′\000′B. ′\14′C. ′\x111′D. ′\2′7.下列标识符中,不是C语言保留字的是( )A. charB. whileC. minD. default8.下列保留字中用于构成循环结构的是()A.ifB.whileC.switchD.default9. 数据-324在二进制文件和文本文件中所占的字节数分别是()A.2,2B.2,4C.4,2D.4,410. 请选出可以作为C语言用户标识符的一组标识符()A.void, define, WORD B.A3_B3, _123, abcC.FOR, -abc, Case D.2a, Do, Sizeof11.下列运算符优先级最高的是()A.关系运算符B.赋值运算符C.算术运算符D.逻辑运算符12. sizeof(float)是()A.一种函数调用B.一个不合法的表示形式C.一个整型表达式D.一个浮点表达式13. 下列叙述不正确的是()A.一个C语言程序可由一个或多个函数组成B.一个C语言程序必须包含一个main函数C.C语言程序的基本组成单位是函数D.在C语言程序中,注释说明只能位于一条语句的后面14. 编译C语言程序时,程序中的注释部分将()A.不参加编译,也不会出现在目标程序中B.参加编译,但不会出现在目标程序中C.不参加编译,但会出现在目标程序中D.参加编译,并会出现在目标程序中15. 下列字符串常量不正确的是()A.'abc' B."12'12" C."0" D." "16. 下列4个选项中,均是合法整型常量的是()A.160 -0xffff 011B.-0xcdf 01ª0xeC.-01 986,012 0668D.-0x48a 2e5 0x17. 以下选项中不属于C语言类型的是()A.signed short int B.unsigned long intC.unsigned int D.long short18. 数值029是一个()A.八进制数B.十六进制数C.十进制数D.非法数19. 在C语言中,要求运算数必须是整型的运算符是()A./ B.++ C.!=D.%20. 当c的值不为0时,以下能将c的值赋给变量a,b 的是()A.c=b=a B.(a=c) || (b=c)C.(a=c) && (b=c) D.a=c=b二、填空1. 表示空类型的保留字是_____________。

数据结构1-3章习题答案2013

数据结构1-3章习题答案2013
{sNode *p=HL;
while(p->next!=NULL)
p=p->next;
temp=p->data;
delete p;
return temp;
}
4、数据结构简单地说是指数据以及相互之间的联系。
5、算法应具备以下5个特性:有穷性、正确性、可行性、输入和输出。
6、在分析各种算法的时间复杂度时,一般只讨论相应的数量级,用f(素的个数远远少于零元素的个数。
8、的运算规则为后进先出,队列的运算规则为先进先出。
C.(rear+1) %n= =frontD. (rear-1)%n= = front
5、下列是顺序存储线性表排序的算法
void Sort(List& L)
{
int i,j;
ElemType x;
for(i=1;i<L.size;i++)
{
x=L.list[i];
for(j=i-1;j>=0;j--)
}
不考虑健壮性条件,写出下列出队算法中缺失的语句:
ElemType OutQueue(struct QueueSq* Q)
{…
Q->front=(Q->front+1)%Q->MaxSize;
return Q->queue[Q->front];

}
参考以上两算法和数据结构,写出队满的条件:
(Q->rear+1)%Q->MaxSize==Q->front
和队空的条件:
Q->front==Q->rear
六、用f(n)=2n为例,说明栈与递归算法之间的关系。

c语言程序设计课后习题及答案

c语言程序设计课后习题及答案

c语言程序设计课后习题及答案C语言程序设计是计算机科学与技术专业的核心课程之一,它不仅教授了编程语言的基本知识,还培养了学生的逻辑思维能力和问题解决能力。

课后习题是巩固课堂学习内容的重要手段,以下是一些C语言程序设计的典型课后习题及答案。

习题1:基本数据类型编写一个程序,输入一个整数和一个浮点数,然后输出它们的和。

```c#include <stdio.h>int main() {int a;float b, sum;printf("请输入一个整数:");scanf("%d", &a);printf("请输入一个浮点数:");scanf("%f", &b);sum = a + b;printf("它们的和是:%f\n", sum);return 0;}```习题2:条件语句编写一个程序,根据输入的成绩判断学生的等级。

```c#include <stdio.h>int main() {float score;printf("请输入学生的成绩:");scanf("%f", &score);if (score >= 90) {printf("等级:A\n");} else if (score >= 80) {printf("等级:B\n");} else if (score >= 70) {printf("等级:C\n");} else if (score >= 60) {printf("等级:D\n");} else {printf("等级:F\n");}return 0;}```习题3:循环结构编写一个程序,计算1到100的整数之和。

第九章习题及答案

第九章习题及答案

第九章习题一、选择题1.以下选项中不能正确把cl定义成结构体变量的是( )A)typedef struct B)struct color cl{ int red; { int red;int green; int green;int blue; int blue;} COLOR; COLOR cl; };C)struct color D)struct{ int red; { int red;int green; int green;int blue; int blue;} cl; } cl;2.有以下说明和定义语句struct student{ int age; char num[8];};struct student stu[3]={{20,"200401"},{21,"200402"},{10\9,"200403"}};struct student *p=stu;以下选项中引用结构体变量成员的表达式错误的是( )A) (p++)->num B)p->num C)(*p).num D)stu[3].age3.有以下结构体说明、变量定义和赋值语句struct STD{char name[10];int age;char sex;}s[5],*ps;ps=&s[0];则以下scanf函数调用语句中错误引用结构体变量成员的是( )。

A)scanf(“%s”,s[0].name);B)scanf(“%d”,&s[0].age);C)scanf(“%c”,&(ps->sex)); D)scanf(“%d”,ps->age);4.以下叙述中错误的是()A)可以通过typedef增加新的类型B)可以用typedef将已存在的类型用一个新的名字来代表C)用typedef定义新的类型名后,原有类型名仍有效D)用typedef可以为各种类型起别名,但不能为变量起别名5.有以下程序段()typedef struct node { int data; struct node *next; } *NODE;NODE p;以下叙述正确的是(C)A)p是指向struct node结构变量的指针的指针B)NODE p;语句出错C)p是指向struct node结构变量的指针D)p是struct node结构变量6.若有以下定义和语句union data{ int i; char c; float f;}x;int y;则以下语句正确的是( )。

数据结构_习题集


习 题 3 一、选择题
1在栈顶一端可进行的全部操作是( C)。 A 插入 B 删除 C插入和删除 2 栈的特点是(B )。 A 先进先出 B 后进先出 3 顺序栈是空栈的条件是( A)。 A top==0 B top==1 C top== -1 C后进后出 D进栈 D不进一个栈,top表示栈顶指针,已知栈未满, 则x入栈时所执行的操作是( D)。 A a[--top]=x; B a[top--]=x C a[++top]=x D a[top++]=x 5 一个栈的入栈序列是a,b,c,d,e,则不可能的出栈序列是( B)。 A edcda B dceab C decba D abcde 6 经过下列栈的运算后EmptyStack(s)的值是(C )。 InitStack(s);Push(s,a);Push(s,b);Pop(s,x);Pop(s,x) ?????????? Aa Bb C1 D0
数据结构习题册 基 础 篇
习 题 1 一、选择题
1 计算机算法必须具备输入、输出、( B)等5个特性。 A 可行性、可移植性和可扩展性 B 可行性、确定性和有穷性 C 确定性、有穷性和稳定性 D 易读性、安全性和稳定性 2 在数据结构中,从逻辑上可以把数据结构分为(D) A 动态结构和静态结构 B 紧凑结构和非紧凑结构 C 内容结构和外部结构 D 线性结构和非线性结构 3 下面程序段的时间复杂性的量级为( D) For (i=1;i<=n;i++) For(j=1;j<=I;j++) For(k=1;k<=j;k++) x=x+1; A O(1) B O(n) C O(n2) D O(n3) 4 在数据结构中,与所使用的计算机无关的是数据的(A )结构 A 逻辑 B 存储 C 逻辑和存储 D 物理 5 数据结构在计算机中的表示是指(C ) A 数据的逻辑结构 B 数据结构 C 数据的存储结构 D 数据元素之间 的关系 6 下面(B )的时间复杂性最好,即执行时间最短。 A O(n) B O(logn) C O(nlogn) D O(n2) 7 下面程序段的时间复杂性的量级为(D )。 Int fun(int n){ I=1,s=1;

c语言单元测试

c语⾔单元测试《C语⾔程序设计》单元测试(⼀)(适⽤于⾃动化专业本科学⽣)⼀、填空题(共5题,每题2分,共10分):1、C语⾔中唯⼀的三元运算符是(条件运算符? : 或 ? : )。

2、C语⾔的标识符只能由⼤⼩写字母,数字和下划线三种字符组成,⽽且第⼀个字符必须为(字母或下划线)。

3、C语⾔程序的三种基本结构是顺序结构、选择结构和(循环)结构。

4、设有:int a=3,b=4,c=5;则!(a>b)&&!c||1的值为(1 )。

5、能表达“2020&&x<30||x<-100)。

⼆、判断题,对的打√,错的打×(共5题,每题2分,共10分):(√)1、⼀个变量在内存中占据⼀定的存储单元。

(×)2、对⼏个变量在定义时赋初值可以写成:int a=b=c=3;(√)3、⾃增运算符(++)或⾃减运算符(--)只能⽤于变量,不能⽤于常量或表达式。

(√)4、在C程序中,逗号运算符的优先级最低。

(×)5、C语⾔不允许混合类型数据间进⾏运算。

三、选择题(共10题,每题2分,共20分):1、合法的字符串常量是(B )。

A)…\t? B) “A” C)…a? D)?\x32?2、合法的字符常量是(D )。

A)…\084? B) …\84? C)…ab? D)?\x43?3、(B)是C语⾔提供的合法的数据类型关键字。

A)Float B)signed C)integer D)Char4、下⾯选项中,不是合法整型常量的是(B)。

A)160 B)-0xcdg C)-01 D)-0x48a5、在C语⾔中,要求参加运算的数必须是整数的运算符是(C )。

A)/ B)* C)% D) =6、在C语⾔中,字符型数据在内存中以(A)形式存放。

A)ASCII码B)BCD码C)反码D)原码7、C语⾔中整数-8在内存中的存储形式为(D)。

A)1111111111110111 B)100000000001000C)000000000001000 D)11111111111110008、下列合法的标识符是(B)。

数据结构1-3习题答案


课堂练习
1、在什么情况下用顺序表比链表好? 、在什么情况下用顺序表比链表好 2、画出执行下列各行语句后各指针及链表的 示意图。 示意图。 、 L=(LinkList) malloc (sizeof(LNode));//等价于 等价于L=new LNode; 等价于 P=L; For(i=1;i<=4;i++) { P->next=(LinkList) malloc (sizeof(LNode)); P=P->next; P->data=i*2-1;} P->next=NULL; For(i=4;i>=1;i--) Ins_LinkList(L,i+1,i*2); For(i=1;i<=3;i++) Del_LinkList(L,i);
在下面两列中,左侧是算法(关于问题规模) 2.8 在下面两列中,左侧是算法(关于问题规模) 的执行时间,右侧是一些时间复杂度。 的执行时间,右侧是一些时间复杂度。请用连 线的方式表示每个算法的时间复杂度。 线的方式表示每个算法的时间复杂度。 100n3 6n2-12n+1 1024 n+2log2n n(n+1)(n+2)/6 2n+1+100n
判断下述计算过程是否是一个算法: 2.4 判断下述计算过程是否是一个算法: Step1: 开始 Step2: n<=0; Step3: n=n+1; 重复步骤3; Step4: 重复步骤3; 结束; Step5: 结束; 该计算过程不是一个算法, 答:该计算过程不是一个算法,因为其不满足算法的 有穷性。 有穷性。
回顾
第一章知识要点: 第一章知识要点: • 基本概论:数据、数据元素、数据项、数据对象 基本概论:数据、数据元素、数据项、 • 数据结构(D,S) 数据结构(D,S)

C语言上机练习9

上机报告9 结构体一、上机内容:1)观察以下程序:#include <stdio.h>#define FORMAT "%d\n%s\n%f\n%f\n%f\n"struct student{ int num;char name[20];float score[3]; }stu={12345, "LiLi",67.5, 89, 78.6};void main(){void print(struct student *); //形参类型指向结构体的指针变量print( &stu );} //实参为stu的起始地址void print(struct student *p) //形参为指向结构体的指针变量{printf(FORMA T,p->num,p->name,p->score[0],p->score[1],p->score[2]) ;//用指针变量调用各成员的值}1、修改程序,单独定义student结构。

struct student{ int num;char name[20];float score[3]; };请定义一个名为st的变量。

定义时不对变量赋初值。

编写一个函数,用来给结构变量赋值。

struct student st;scan(struct student *p){(*p).num=12345;(*p).score[0]=67.5;(*p).score[1]=89.0;(*p).score[2]=78.6;strcpy((*p).name,"LiLi");}2、不定义结构变量,定义一个结构指针,在内存中开辟一个空间,用来存储一个student结构体类型的数据,并以把数据{12345, "LiLi",67.5, 89, 78.6}按结构体的存储格式存储到开辟的内存空间中。

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

结构体习题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中。

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

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

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

不得增行或删行,也不得更改程序的结构!#include <stdio.h>#define N 8typedefstruct{ intnum;intyear,month,day ;}STU;int fun(STU *std, STU *k, int year){ int i,n=0;for (i=0; i<N; i++)/**********found**********/if(___1___)/**********found**********/k[___2___]= std[i];/**********found**********/return (___3___);}main(){ STU std[N]={ {1,1984,2,15},{2,1983,9,21},{3,1984,9,1},{4,1983,7,15},{5,1985,9,28},{6,1982,11,15},{7,1982,6,22},{8,1984,8,19}};STU k[N]; inti,n,year;printf("Enter a year : "); scanf("%d",&year);n=fun(std,k,year);if(n==0)printf("\nNo person was born in %d \n",year);else{ printf("\nThese persons were born in %d \n",year);for(i=0; i<n; i++)printf("%d %d-%d-%d\n",k[i].num,k[i].year,k[i].month,k[i].day);}}第1 处:if(std[i].year==year)第2 处:k[n++]= std[i];第3 处:return (n);3. 程序设计学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在h所指的数组中,分数范围内的学生人数由函数值返回。

例如,输入的分数是60 69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。

主函数中将把60放在low中,把69放在heigh中。

注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include <stdio.h>#define N 16typedefstruct{ charnum[10];int s;} STREC;int fun(STREC *a,STREC *b,int l,int h){ int i,j=0,k,f=0;for (i=0;i<N;i++)if ((a[i].s>=l) && (a[i].s<=h)){for (k=0;k<10;k++)b[j].num[k]=a[i].num[k];b[j].s=a[i].s;j++;f++;}return(f);}main(){ STREC s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA 08",64},{"GA06",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",91 },{"GA017",64},{"GA018",64},{"GA016",72}};STREC h[N];FILE *out;inti,n,low,heigh,t;printf("Enter 2 interger number low &heigh:");scanf("%d%d",&low,&heigh);if (heigh<low) {t=heigh;heigh=low;low=t;}n=fun(s,h,low,heigh);printf("The student's data between %d--%d:\n",low,heigh);for(i=0;i<n;i++)printf("%s %4d\n",h[i].num,h[i].s);printf("\n");out=fopen("out18.dat","w");n=fun(s,h,80,98);fprintf(out,"%d\n",n);for(i=0;i<n;i++)fprintf(out,"%s %4d\n",h[i].num,h[i].s);fclose(out);}。

相关文档
最新文档