c语言结构体单元练习
结构体与共用体相关题目练习
结构体与共用体1.说明一个结构体变量时系统分配给它的内存是A)各成员所需要内存量的总和 B)结构体中第一个成员所需内存量C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量2.C语言结构体类型变量在程序执行期间A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中C)部分成员驻留在在内存中 D)没有成员驻留在内存中3.设有以下说明语句struct stu { int a ; float b ; } stutype ;则下面的叙述不正确的是A) struct 是结构体类型的关键字 B) struct stu 是用户定义的结构体类型C) stutype 是用户定义的结构体类型名 D) a和b都是结构体成员名4.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是【】。
struct stud { char num[6]; int s[4]; double ave; } a,*p;5.程序中有下面的说明和定义struct abc { int x;char y;}struct abc s1,s2;则会发生的情况是A)编译出错B)程序将顺利编译、连接、执行C)能顺利通过编译、连接、但不能执行 D)能顺利通过编译、但连接出错6.有如下定义struct person { char name[9]; int age;};struct person class[10]={ " Johu", 17,"Paul", 19,"Mary", 18,"Adam", 16};根据上述定义,能输出字母M的语句是A) prinft(" %c\n",class[3].name); B) printf(" %c\n",class[3].name[1]);C) prinft(" %c\n",class[2].name[1]); D) printf(" %c\n",class[2].name[0]);7.下面程序的输出是A)0 B)1 C)3 D)6main(){ struct cmplx { int x; int y;} cnum[2]={1,3,2,7};printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);}8.下列程序的输出结果是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);}9.有以下程序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)Zhang B)Zhao C)Wang D)1810.设有如下定义:struct sk {int a ;float b ;}data ,*p ;若有p=&data ;,则对data中的a域的正确引用是A)(*p).data.a B)(*p).a C)p->data.a D)p.data.a11.下面程序的输出结果为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)6020 60 60 7020 21 21 3112.为了建立如图所示的存储结构(即每个结点含两个域, data 是数据域,next是指向结点的指针域,)请填空。
C语言程序设计练习题之数组与结构体
一、单项选择题(在每小题列出的四个备选项中只有一个是符合题目要求的。
) 1.若有定义 int a[4] = {l, 2, 3, 4};则 a[a[0]+2 * a[2]-a[3]]等于A. 1B. 2C. 3D. 42 .设有数组定义:char array [ ]=〃China 〃;则数组array 所占的空间为A. 4个字节B. 5个字节C. 6个字节D. 7个字节3 .设有定义 char a 口=“xyz”, b □二{'x',' y',' z'};,则语句 cout«sizeof (a)«* ,,«sizeof (b) «endl;的输出结果为 A. 3 3B. 3 4C. 4 3D. 4 44 .设 int b[ ][5]={1,2,3,4,5,6,7};,则元素 b[l] [2]的值是A. 0B. 2C. 6D. 75 .数组定义为int a L2J [3j={1, 2, 3, 4, 5, 6},值为1的数组元素是A. a [0] [0] B, a [1] [1] C. a [1] [2] D. a [2] [3]6 . C++中,若有说明:int a[3] [4];则对a 数组元素的正确引用是9 .设 char x[][10] = {〃Windows 〃,〃dos 〃,〃unix 〃};,执行 cout«x[l][2];后输出的结果是A. nB. iC. oD. s10 .以下叙述中错误的是A.对于double 类型数组,不可以直接用数组名对数组进行整体输入或输出B.数组名代表的是数组所占存储区的首地址,其值不可改变C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界” 的出错信息D.可以通过赋初值的方式确定数组元素的个数11 .设#pragma pack(l),则结构体类型变量占用内存的字节数是A.各成员占用内存字节数之和B.第一个成员占用的内存字节数C.占用内存最大成员所需的字节数D.最后一个成员占用的内存字节数12 .下面程序运行后,输出结果是#include <iostream> using namespace std;数组与结构体A. a[2][4] B, a[l + l][0] 7 .定义二维数组并初始化,正确的是A.mta[][]={l,2,3,4,5,6}; C.inta[][3]={ 1、2,3,4,5,6}; 8 .以下数组定义中,不正确的是A. inta[2][3];C. int c[100][100]={0};C. a(2)(l)D. a[l,3] B.int a[2][]={ 1,2,3,4,5,6};D.inta[2,3]={ 1,2,34,5,6};B. mt b[][3]={0,l,2,3);D. mt d[3][]={]l,2},{l,2,3},{l,2,3,4}};21int/mtp[8]={l,2,3,4,5,6,7,8}J=0,j=0;while(i++<7)if(p[i]%2) j+=p[i];cout<<j«endl;return 0;}A. 15B. 16C. 20D. 3613.下面程序运行后,输出结果是#include <iostream>using namespace std;int main()int a[3][3]={{l,2},{3,4},{5,6}},ij,s=0;fbr(i=l;i<3;i++)砧i(J=0jv=i;j++)s+=a[i][j];cout«s«endl;retuin 0;}A. 18B. 19C. 20D. 2114.下面程序运行后,输出结果是#mclude<iostieam>using namespace std;int main(){ mt a[3][3]={l,2,3,4,5,6,7,8,9},n,sum=0;fdi(n=0;n<3;n++)sum=sum+a [n] [n];cout«sum«endl;return 0:}A. 6B. 12C. 15D. 4515.下面程序运行后,输出结果是#include <iostream>using namespace std;stmct abc{ mt a, b, c; };int main。
C语言题库第8章 结构体和共同体
第八章结构体和共同体一、单项选择1. 若有以下定义:struct link{int data;struct link *next;}a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构,若指针p指向a,指针q指向c。
则能把c插入到a和b之间形成新的链表的语句是( C )2. 若有以下程序段:int a=1,b=2,c=3;struct dent {int n ; int *m ;} s[3] = {{101,&a},{102,&b},{103,&c}};struct dent *p=s ;则以下表达式中值为2的是( D )。
3. 下面程序的运行结果是( D )。
#iunclude<stdio.h>int main ( ) {struct complx {int x; int y ;}cnum[2]={1,3,2,7} ;printf(“%d\n”,cnum[0].y/cnum[0].x*cnum[1].x) ;return 0;}二、程序设计1. /*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s 中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序: */#include <stdio.h>#define N 16typedef struct{ char num[10];int s ;}STREC;void fun (STREC a[]){/*********Begin*********//*********End**********/}int main (){FILE *wf,*in;STREC s[N]={{ "GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}};int i;fun(s);printf("The data after sorted :\n");for (i=0; i<N; i++)printf("%s %4d\n",s[i].num,s[i].s);printf("\n");/******************************/in=fopen("in001.dat","r");i=0;while(!feof(in)){fscanf(in,"%s %d",s[i].num,&s[i].s);i++;}fun(s);wf=fopen("out.dat","w");for (i=0; i<N; i++)fprintf(wf,"%s %4d\n",s[i].num,s[i].s);fclose(wf);fclose(in);/*****************************/return 0;}【参考代码】int i,j;STREC t;for(i=0;i<N;i++)for(j=0;j<N-1-i;j++)if(a[j].s<a[j+1].s){t=a[j];a[j]=a[j+1];a[j+1]=t;}2. /*某学生的记录由学号、8门课成绩和平均分组成,学号和8门课的成绩已在主函数中给出。
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语言(结构体与共用体)习题与答案
{ 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、设有定义: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语言各章节单元测试题及答案——结构体与共用体
第9章结构体与共用体9.1典型考试题剖析9.1.1选择题【例1】若指针p已经正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是。
A) p=2*(int *)malloc(sizeof(int)); B) p=(int*)malloc(2*sizeof(int));C) p=(int *)malloc(2*2); D) p=(int*)calloc(2,sizeof(int));✧考点:动态存储分配函数。
✧分析:根据动态存储分配函数malloc和calloc的函数原型可以知道,calloc函数的调用形式为:void * calloc(unsigned n,unsigned size);表示在动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配域起始地址的指针,因此答案D是正确的。
malloc函数的调用形式为:void * malloc(unsigned int size);表示是在内存的动态存储区分配一个长度为size的连续空间,并返回一个指向分配域起始地址的指针,答案B和C中malloc的参数分别为:2*(sizeof(int))和2*2,都是整型数,因此调用形式正确。
答案A中(int *)malloc(sizeof(int))的返回值为一个地址值,将地址的值乘以2是没有意义的。
✧答案:A【例2】若有以下说明和定义:struct test{ int m1; char m2; float m3;union uu{ char u1[5]; int u2[2]; }ua;}myaa;则sizeof(struct test)的值是。
A) 12 B) 16 C) 14 D) 9✧考点:结构体类型和共用体类型所占内存的字节数。
✧分析:sizeof(struct test)的功能是求结构体类型test所占用的内存字节数。
它应该等于结构体每个成员所占的字节数之和。
m1为int型,占2字节,m2为char型,占1字节,m3为float型,占4字节,接下来是一个共用体类型uu,共用体所占的字节数应该等于成员中最长者所占的字节数,u1占5字节,u2占4字节,那么该共用体类型应该占用5字节,所以2+1+4+5=12。
C语言程序设计(自定义类型)期末单元测试与答案
一、单选题1、若有以下结构体定义struct A{int x;int y;}a;则正确的引用或定义是()A.struct b;b.x = 10;B.struct A b = [10];C.A.x = 10;D.A b;b.x = 10;正确答案:B解析:B、先定义类型Struct A的一个变量b,使用{}的方式为b提供初值,b正常需要两个值,而这里传一个值10,也是正确的,相当于把10赋值给b.x2、设有以下定义struct Stu{char name [10];int score;}a,b;则以下描述中错误的是()A.Stu为该结构体的类型名,故定义该结构体类型的一个变量c的语法为Stu c;B.a和b为该结构体类型的两个成员C.struct 为结构体类型的关键字D.为变量a的score赋值98的语句可写为a.score = 98;正确答案:A3、设有以下说明语句struct ex{int x;float y;char z;}example;则下面的叙述中不正确的是()A.example是结构体类型名B.x、y、z都是结构体成员名C.struct 是结构体类型的关键字D.struct ex是结构体类型名正确答案:A解析:A、struct example是类型名,只写example并不知道其是函数名还是int变量名还是float变量名4、以下结构体数组的定义格式中正确的是()struct stu{char name[10];char no[15];int score;};A.struct a[10];B.struct stu a[10];C.struct stu [10];D.stu a[10];正确答案:B解析:B、类型名为struct stu 数组名为a 正确5、以下描述中正确的是()typedef struct{int n;char ch[10];A.PER是结构体类型的变量名B.PER是结构体类型的数组名C.PER是结构体类型的类型同义词,代表该结构体类型D.PER是结构体类型的关键字正确答案:C6、以下描述中错误的是()struct Point{float x;float y;}a[5];A.a为struct Point结构体类型的变量,该变量占5个字节B.a为结构体数组名,该数组中含有5个该结构体类型的变量C.struct Point为该结构体类型D.struct为类型关键字正确答案:A7、以下描述中正确的是()struct Point{float x;float y;A.a[5].x = 7.8f;a[5].y = 6.9f;B.a[0].x = 2.1;a[0].y = 4.3;C.a = {1,2}D.a[0] = {2.1,4.3}正确答案:B解析:A、数组下标越界,正确范围0~4 C、数组名是常量,不能为其赋值D、变量a[0]中包含两个成员a[0].x和a[0].y , 不能为变量a[0]整体赋值8、若有以下定义语句,union data{int i;char c;float f;}a;int n;则以下语句中正确的是()A.a= 3.4f;B.a.i = 5;C.a = {3,'e',1.2};D.a.c= "e";正确答案:B解析:A、a.f = 3.4f; C、不能整体赋值D、应为'e'9、下列对枚举类型的定义正确的是()A.enum a{"A","B"=4,"C"};B.enum a{A;B;C};C.enum a={A,B=4;C};D.enum a{A,B=4;C};正确答案:D解析:B、各元素之间用逗号间隔C、不该有赋值号,enum a{A,B=4;C};2、#include<stdio.h>struct abc{ int a, b, c; };int main(void){struct abc s[2]={{1,2,3},{4,5,6}}; int t;t=s[0].a+s[1].b;printf("%d \n",t);return 0;}以上程序的输出结果为:A.8B.5C.7D.6正确答案:D10、struct ex{ int x ; float y; char z ;} example;则下面的叙述中不正确的是()A. x,y,z都是结构体成员名B.struct是结构体类型的关键字C.struct ex是结构体类型D. example是结构体类型名正确答案:D解析:D、example是结构体类型的一个变量,不是类型名11、关于单链表的描述中错误的是()A.结点的指针域中存放下一个数据元素的地址B.为单链表中每个元素分配一个结点,一般结点有两个数据成员,数据域和指针域C.结点的指针域中存放下一个数据元素所在结点的地址D.单链表中头结点可有可无,一般其标志作用,不存储数据元素正确答案:A12、关于单链表基本概念的描述中正确的是()A.单链表中的头结点就是首元结点B.单链表的头指针也就是指向单链表中首元结点的指针C.单链表的头指针是指向单链表中第一个结点的指针D.单链表的头指针也就是指向单链表中头结点的指针正确答案:C二、判断题1、链式存储中每个结点在物理位置上是连续的正确答案:×2、顺序存储结构中,逻辑上相邻的数据元素在物理位置上也相邻正确答案:√3、结构体类型、联合体类型及枚举类型均属于用户自定义的类型正确答案:√。
2016C语言习题全集及答案:第八单元结构体和共用体
第八单元结构体和共用体一、选择题1、说明一个结构体变量时系统分配给它的内存是。
A. 各成员所需要内存量的总和B. 结构体中第一个成员所需内存量C. 成员中占内存量最大者所需的容量D. 结构中最后一个成员所需内存量2、 C 语言结构体类型变量在程序执行期间。
A. 所有成员一直驻留在内存中B. 只有一个成员驻留在内存中C. 部分成员驻留在在内存中D. 没有成员驻留在内存中3、设有以下说明语句struct stu { int a ; float b ; } stutype ;则下面的叙述不正确的是。
A. struct 是结构体类型的关键字B. struct stu 是用户定义的结构体类型C. stutype 是用户定义的结构体类型名D. a 和b 都是结构体成员名4、程序中有下面的说明和定义struct abc { int x;char y;}struct abc s1,s2;则会发生的情况是。
A. 编译出错B. 程序将顺利编译、连接、执行C. 能顺利通过编译、连接、但不能执行D. 能顺利通过编译、但连接出错5、有如下定义struct person { char name[9]; int age;};struct person class[10]={ " Johu", 17,"Paul", 19,"Mary", 18,"Adam",16};根据上述定义,能输出字母M 的语句是。
A. prinft(" %c\n",class[3].name);B. printf(" %c\n",class[3].name[1]);C. prinft(" %c\n",class[2].name[1]);D. printf(" %c\n",class[2].name[0]);6、下面程序的输出是。
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)。
C语言结构体习题及答案知识讲解
{
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语言之结构体练习题
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语言结构体单元练习
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语言选择结构练习题一、单选题A. ifB. switchC. forD. while2. 当表达式 (a > b) 为真时,下列哪个表达式的值为假?A. !(a <= b)B. (a == b)C. (a >= b)D. (a != b)A. ifelseB. switchcaseC. whileD. dowhile4. 当if语句的条件为真时,下列哪个选项的语句不会执行?A. if语句内的语句B. else语句内的语句C. if语句和else语句内的语句D. 与if语句平级的下一个语句二、多选题A. ifB. else ifC. switchD. forA. if和else语句块只能包含一条语句B. if和else语句块可以包含多条语句,但需要用大括号括起来C. if语句块后面可以不跟else语句块D. else语句块后面可以继续跟if语句块A. 没有与case匹配的值B. case后面的值与switch表达式匹配C. switch表达式为空D. default分支位于所有case分支之前三、填空题1. 在C语言中,______ 关键字用于实现选择结构。
2. 当if语句的条件为真时,执行______ 语句块;当条件为假时,执行______ 语句块。
3. 在switch语句中,每个case分支后面需要使用______ 语句来跳出switch结构。
四、编程题1. 编写一个C程序,输入一个整数,判断它是正数、负数还是零,并输出相应的结果。
2. 编写一个C程序,输入三个整数,找出其中的最大值并输出。
3. 编写一个C程序,根据用户输入的成绩(0100),输出相应的等级(A、B、C、D、E)。
4. 编写一个C程序,输入一个年份,判断它是否为闰年,并输出结果。
5. 编写一个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语言结构体习题及答案
第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语言版章节练习题6章
数据结构章节练习题第一章 绪 论一、单选题1. 一个数组元素 a[i] 与 ____________________ 的表示等价。
A 、 *(a+i) B 、 a+i C 、 *a+i D 、 &a+i2. 下面程序段的时间复杂度为 _____________________________ 。
for(int i=0; i<m; i++)for(int j=0; j<n; j++) a[i][j]=i*j;A 、 O(m2)B 、 O(n2)C 、 O(m*n)D 、 O(m+n)3. 执行下面程序段时,执行 S 语句的次数为 ___________________________________ 。
for(int i=1; i<=n; i++) for(int j=1; j<=i; j++) S;4. 下面算法的时间复杂度为3. 在线性结构、树形结构和图形结构中,前驱和后继结点之间分别存在着__________ 和 ___________ 的联系。
4. 一种抽象数据类型包括 ________________________ 和 ________________ 两个部分。
5. 当一个形参类型的长度较大时,应最好说明为 _______________________________ ,以节省参数值的传输时间和存储参数的空间。
6. 当需要用一个形参访问对应的实参时,则该形参应说明为 ________________________________________ 。
7. 在函数中对引用形参的修改就是对相应 _______________________________ 的修改,对 ____________________ 形参的修改只局限在该函数的内部,不会反映到对应的实参上。
8. 当需要进行标准 I/O 操作时, 则应在程序文件中包含 ___________________________________________ 头文件, 当需要进行文件 I/O 操作时,则应在程序文件中包含 __________________________________________ 头文件。
C语言程序设计实例教程第2版习题答案作者李红第9章结构体和共用体.doc
9.4课后习题9.4.1项目练习一.练习目的1.进一步巩固结构体类型和共用体类型的定义与引川2.进一步复习链表的建立过程3.进一步巩固枚举类型的定义与枚举元索的引用方法二.练习内容1.用结构体变量表示平面上的一个点(横坐标和纵坐标),输入两个点,求两点Z间的距离。
#include "stdio.h"include "math.h"struct pin{float x;float y;}a,b;main(){printfC*请输入a点的横纵坐标:“);scanf("%f%f"/&a.x,&a.y);printfC'Xn");printf("请输入b点的横纵坐标scanf(,,%f%f"/&b.x,&b.y);printf("\n n);printff"输出a、b 两点之间的距离是:%f",sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)));getch();}2.16个同学围成一-圈,从笫1个人开始按1、2、3的顺序报号,凡报到3者退出圈子。
找出最后昭在圈子中的人原来的序号。
ttinclude "stdio.h"#include "stdlib.h"#define LEN sizeof(struct game)struct game{int num;struct game *next;};struct game *creat(){ struct game *head,*p;head=p=(struct game *) malloc(LEN);p->num=l;int i=2;while(i<=16){ p・>next=(struct game *) malloc(LEN);p->next-:>nu m=i;i++;p=p->n ext; }p->next=head; return(head);} struct game *delete(struct game *head) { struct game*pl=head,*p2=head,*x; int k=l;while(pl->next!=pl) {if(k==3) {x=pl; pl=pl->next;p2・>n ext=pl; free(x); x=NULL; k=0;} else {P2=pl; pl=pl->next;}pl->next=NULL;return(pl);}void print(struct game *head){ struct game *p;p=head;while(p!=NULL) {printf("%d\t",p->num);p=p->n ext;}printfCAn");}main(){ struct game *pt,*p;pt=creat();p=delete(pt);print(p);free(p);getch();}3.建立一个链表,每个结点包含的成员为:职工号、工资。
c语言结构体题目
c语言结构体题目
以下是一个简单的C语言结构体题目示例:
题目:定义一个结构体表示一个学生,包含姓名、学号、成绩等信息,实现输入和输出学生信息的功能。
```c
include <>
include <>
// 定义结构体类型
struct Student {
char name[20];
char id[10];
int score;
};
int main() {
struct Student s1;
printf("请输入学生姓名:");
scanf("%s", );
printf("请输入学生学号:");
scanf("%s", );
printf("请输入学生成绩:");
scanf("%d", &);
printf("学生信息如下:\n");
printf("姓名:%s\n", );
printf("学号:%s\n", );
printf("成绩:%d\n", );
return 0;
}
```
在这个示例中,我们定义了一个名为`Student`的结构体类型,包含姓名、学号和成绩三个成员变量。
在`main`函数中,我们创建了一个`Student`类型的变量`s1`,并使用`scanf`函数从标准输入中读取学生信息,然后使用`printf`函数将学生信息输出到标准输出中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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的表达式为。
A) p++->n B) p->n++ C) (*p).n++ D) ++p->n6.对于以下定义,不正确的叙述是。
union data{ int i;char c;float f;}a,b;A) 变量a所占的内存长度等于成员f的长度B) 变量a的地址和它的各成员地址都是相同的C) 不能对变量a赋初值D) 可以在定义的时候对a初始化7.下述程序运行结果为。
#include <stdio.h>struct st{ int n;int *m;}*p;void main(){ int d[5]={10,20,30,40,50};struct st arr[5]={100,d,200,d+1,300,d+2,400,d+3,500,d+4};p=arr;printf("%d\t",++p->n);printf("%d\t",(++p)->n);printf("%d\n",++(*p->m));}A) 101 200 21 B) 101 20 30C) 200 101 21 D) 101 101 108、以下程序的运行结构是。
#include <stdio.h>main( ){ union{ long a;int b;char c;}m;printf("%d\n",sizeof(m));}A) 2 B) 4 C) 6 D) 79.若要利用下面的程序段使指针变量p指向一个存储整型变量的存储单元,则在空格中应填入的内容是。
int *p;p= malloc(sizeof(int));A) int B) int * C) (* int) D) (int *)10、执行下述语句后的结果是。
enum weekday {sun,mon=3,tue,wed, thu};enum weekday day;day=wed;printf("%d\n",day);A) 5 B) 3 C) 4 D) 编译时出错11、下面程序的输出结果是。
main(){ enum abc{ green=3,red };char *clr[ ]={"red","blue","yellow","black","white","green"};printf("%s and ",clr[green]);printf("%s",clr[red]);}12、已知指针变量head指向单链表表头,下面程序用来统计链表中各个结点的数据项之和,请填空。
struct link{ int data;struct link *next;};main(){ int k;struct link *head;k=sum(head);printf("%d\n",k);}sum( 【1】 ){ struct link *p;int s;s=head->data;p=head->next;while(p){ s+= 【2】 ;p=p->next;}return(s);}13、以下程序完成链表的输出,请填空。
void print(head)struct stu *head;{ struct stu *p;p=head;if( 【1】 )do{ printf("%d,%f\n",p->num,p->score);p=p->next;}while( 【2】 );}14、下面程序的运行结果为。
typedef union student{ char name[10];long sno;char sex;float score[4];}stu;main( ){ stu a[5];printf("%d\n",sizeof(a));}15、以下对枚举类型名的定义中正确的是。
A) enum a={one,two,three};B) enum a {one=9,two=-1,three};C) enum a={"one","two","three"};D) enum a {"one","two","three"};16、下面程序的输出是。
main(){ enum team { my,your=4,his,her=his+10};printf("%d%d%d%d\n",my,your,his,her); }A) 0 1 2 3 B) 0 4 0 10 C) 0 4 5 15 D) 1 4 5 1517、下述程序的执行结果是。
#include <stdio.h>union un{ int i;char c[2];};void main( ){ union un x;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}A) 266 B) 11 C) 265 D) 13817、有以下程序#include <stdlib.h>struct node{ int num;struct node *next;};main(){ struct node *p,*q,*r;p=(struct node *)malloc(sizeof(struct node));q=(struct node *)malloc(sizeof(struct node));r=(struct node *)malloc(sizeof(struct node));p->num=10; q->num=20; r->num=30;p->next=q;q->next=r;printf("%d\n",p->num+p->next->num);}程序运行后的输出结果是。
A) 10 B) 20 C) 30 D) 4018、设有以下说明语句:typedef struct{ int n;char ch[8];}per;则下面叙述正确的是。
A) per是结构体变量名 B) per是结构体类型名C) typedef是结构体类型 D) struct是结构体类型名19、若有以下定义:struct link{ int data;struct link *next;}a,b,c,*p,*q;且变量a和b之间已经有如右图所示的链表结构:指针p指向变量a,q指向变量c。
能够把c插到a和b之间,并形成新的链表的语句组是。
A) a.next=c;c.next=b;B) p.next=q;q.next=p.next;C) p->next=&c;q->next=p->next;D) (*p).next=q;(*q).next=&b;。