结构体习题
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)。
自定义数据类型习题及答案(C语言)
A)y=1976;B)birthday.y=1976;
C)p.birthday.y=1976;D)p.y=1976;
9.若有以下说明语句:
structp
{ char name[20];
intage;
char sex;
}a={“liming”,20,‘m’},p=&a;
则对字符串“liming”的错误引用方式是【】。
{
structdate birth;
char name[20];
} x[4]={{1977,8,"hangzhou"},{1975,9,"Tianjin"}};
语句printf("%S,%d",x[0].name,x[1].birth.year);的输出结果为【】。
A) a,1977B)hangzhou,1975
A)Beijing,8B) Nanjin,9
C) Beijing,2010 D) Nanjin,1999
16.运行下列程序段,输出结果是【】。
structcountry
{
intnum;
char name[20];
}x[5]={1,”china”,2,”USA”,3,”France”,4,”England”,5,”Spanish”};
structcountry *p;
p=x+3:
printf(“%d,%c",*p.num,(*p)name[2]);
A)3,aB)4,gC)2,UD)5,S
17.在以下程序段中,已知int型数据占两个字节,则输出结果是【】。
union un
{
intI;
double y;
C语言 第九章 结构体数据类型期末测试习题与答案
程序运行后的输出结果是( )。
A.SunDan 20044
B.YangSan 20041
C.SunDan 20042
D.LiSiGuo 20042
参考答案:D
3、以下程序运行的结果是_( )。
#nclude”stdio.h
main()
{
struct date
{
int year , month , day ;
D.struct color
{ int red;
int green;
int blue;
} c l;
参考答案:B
7、有以下程序:
struct stu
{
char[10];
float score[3];
};
main( )
{
struct stu s[3]={{"20021",90,95,85},
{"20022",95,80,75},
} today ;
printf(“%d\n”,sizeof(struct date));
}
A.10
B.6
C.8
D.12
参考答案:D
4、设有如下说明
typedef struct ST
{
long a;
int b;
char c[2];
} NEW;
则下面叙述中正确的是______。
A.ST是一个结构体类型
B.NEW是一个结构体类型
A.typedef struct
{ int red;
int green;
int blue;
} COLOR;
COLOR cl;
B.struct color cl
函数、指针与结构体练习题-参考答案
(一)选择题1.以下正确的说法是_________.建立函数的目的之一是 a)提高程序的执行效率b)提高程序的可读性c)减少程序的篇幅d)减少程序文件所占内存2.以下正确的函数原型声明形式是________.a)double fun(int x,int y)b)double fun(int x; int y)c)double fun(int x, int y);d)double fun(int x,y);3.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为______.A)地址传递B)单向值传递C)由实参传给形参,再由形参传回给实参D)由用户指定传递方式4.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是______.a)floatb)intc)longd)double5.已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array 的错误定义方式为________.int a[3][4];f(a);a)f(int array[][6])b)f(int array[3][])c)f(int array[][4])d)f(int array[2][5])6.以下程序的正确运行结果是_________.#include <>void num(){ extern int x,y;int a=15,b=10;x=a-b;y=a+b;}int x,y;main(){int a=7,b=5;x=a+b;y=a-b;num();printf("%d,%d\n",x,y);}a)12,2 b)不确定 c)5,25 d)1,127.以下正确的描述是____________.a)C语言的预处理功能是指完成宏替换和包含文件的调用b)预处理指令只能位于C源程序文件的首部c)凡是C源程序中行首以"#"标识的控制行都是预处理指令d)C语言的编译预处理就是对源程序进行初步的语法检查8.在"文件包含"预处理语句的使用形式中,当#include后面的文件名用< >(尖括号)括起时,找寻被包含文件的方式是_______.a)仅仅搜索当前目录b)仅仅搜索源程序所在目录c)直接按系统设定的标准方式搜索目录d)先在源程序所在目录搜索,再按照系统设定的标准方式搜索9.当调用函数时,实参是一个数组名,则向函数传送的是_____.A.数组的长度B.数组的首地址C.数组每一个元素的地址D.数组每个元素中的值10.函数的值通过return语句返回,下面关于return语句的形式描述错误的是_____.表达式; (表达式);C.一个return语句可以返回多个函数值D.一个return语句只能返回一个函数值11.设函数fun的定义形式为void fun(char ch,float x){…}则以下对函数fun的调用语句中,正确的是_____.("abc",; =fun('D',; ('65',; (32,32);12.以下程序的输出结果是_____.void reverse(int a[],int n){ int i,t;for(i=0;i<n/2;i++){ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}}main( ){ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];printf(" %d\n ",s);}B.1013.阅读下列程序,则运行结果为_____.fun( ){ static int x=5;x++;return x;}main( ){ int i,x;for(i=0;i<3;i++)x=fun( );printf("%d\n",x);}B.614.若使用一维数组名作函数实参,则以下正确的说法是_____.A.必须在主调函数中说明此数组的大小B.实参数组类型与形参数组类型可以不匹配C.在被调用函数中,不需要考虑形参数组的大小D.实参数组名与形参数组名必须一致15.在C语言中,定义函数时函数的类型可以缺省,此时函数的隐含类型是_____. 16.在C语言中,形参的缺省存储类别是( ).17.以下关于字符串的叙述中正确的是_____.语言中有字符串类型的常量和变量B.两个字符串中的字符个数相同时才能进行字符串大小的比较C.可以用关系运算符对字符串的大小进行比较D.空串一定比空格打头的字符串小18.阅读程序,选择程序的运行结果。
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.共用体类型的变量的字节数等于各成员字节数之和。
结构体与公用体 习题十及参考答案
住址、入学成绩)的信息。请在输入10名教师和学生的信息后, 按姓名进行排序,最后按排序后的顺序进行输出,对于教师要输 出姓名、单位、住址和职称,对学生要输出姓名、班级、住址和 入学成绩。请编程实现。
结构体与联合体习题含答案
)(含答案结构体与联合体习题结构体与联合体习题2013年选择题1、若程序中有以下的说明和定义:struct abc{ int x;char y; } 花括号后少了分号。
struct abc s1,s2;。
则会发生的情况是______B) 程序将顺序编译、连接、执行A) 编译时错D) 能顺序通过编译、但连接出错C) 能顺序通过编译、连接、但不能执行2、有以下程序段struct st{ int x; int *y;}*pt;int a[]={1,2};b[]={3,4};struct stc[2]={10,a,20,b};pt=c;的是以下选项中表达式的值为11D) (pt++)->x C) ++pt->x A)*pt->y B) pt->x、有以下说明和定义语句3struct student{ int age; char num[8];};,?403}};structstudent *p=stu;______。
以下选项中引用结构体变量成员的表达式错误的是 stu[3].age D)B)p->num C) (*p).num A) (p++)->num 4、设有如下枚举类型定义 enum language{Basic=3,Assembly=6,Ada=100,COBOL,Fortran};。
Fortran枚举量的值为______D) 103 102 B) 7 C) A) 4。
、以下叙述中错误的是_________5增加新的类型可以通过typedef A)typedef可以用将已存在的类型用一个新的名字来代表B)typedef定义新的类型名后,原有类型名仍有效C)用typedef可以为各种类型起别名,但不能为变量起别名D)用6、有以下程序段typedef struct NODE{ int num; struct NODE *next;} OLD;以下叙述中正确的是A)以上的说明形式非法 B) NODE是一个结构体类型C) OLD是一个结构体类型 D) OLD是一个结构体变量7、以下选项中不能正确把cl定义成结构体变量的是______。
c语言2019课外作业4
第 8、9、11 章 结构体、指针、文件练习题
一、选择题 1.下面对结构数据类型的错误叙述是______。
A.结构变量可以在说明结构类型后定义,也 可在说明结构时定义。
B.结构可由若干个成员组成,各成员的数据 类型可以不同。
C.定义一个结构类型后,编译程序要为结构 的各成员分配存储空间。
s2 的长,函数值为 1,否则函数值为 0
B.FILE *fp ; fp = fopen( "file1.txt" , "r+" ) ;
15.下列关于 C 语言数据文件的叙述中正确的是
C.FILE *fp ; fp = fopen( "file1.txt" , "rb" ) ;
_______。
D.FILE *fp ; fp = fopen( "file1.txt" , "rb+" ) ;
A.printf( "%c\n" , stu[2].name ) ; B.printf( "%c\n" , stu[2].name[1] ) ; C.printf( "%c\n" , stu[1].name[1] ) ; D.printf( "%c\n" , stu[1].name[0] ) ; 6.若已定义 int a = 5 ; 下面对 ①、② 两个语句的 正确解释是_______。 ① int *p = &a ; ② *p = a ; A.语句①和②中的*p 含义相同,都表示给指
24.读取二进制文件的函数调用形式为:
exit( 0 ) ; }
fread( buffer , size , count , fp ) ;其中参数 buffer
结构体及位操作习题
(36)下面结构体的定义语句中,错误的是A)struct ord {int x;int y;int z;}; struct ord a;B)struct ord {int x;int y;int z;} struct ord a;C)struct ord {int x;int y;int z;} a;D)struct {int x;int y;int z;} a;(38)有以下程序#include <stdio.h>#include<string.h>struct A{ int a; char b[10]; double c;};struct A f(struct A t);main(){ struct A a={1001,”ZhangDa”,1098.0};a=f(a);printf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);}struct A f(struct A t)( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202. 0;return t; )程序运行后的输出结果是A)1001,ZhangDa,1098.0B)1001,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1001,ChangRong,1202.0(39)若有以下程序段int r=8;printf(“%d\n”,r>>1);输出结果是A)16B)8C)4D)2(12)设有定义:struct person{ int ID;char name[12];}p;请将scanf(“%d”, 【12】);语句补充完整,使其能够为结构体变量p的成员ID正确读入数据。
(14)有以下程序#include <stdio.h>typedef struct{ int num;double s}REC;void fun1( REC x ){x.num=23;x.s=88.5;} main(){ REC a={16,90.0 };fun1(a);printf(“%d\n”,a.num);}程序运行后的输出结果是【14】。
结构体习题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语言上机练习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.设有如下说明语句:struct ex{ int x;float y; char z;} example;则下面的叙述中不正确的是________。
A)struct 是结构体类型的关键字B)example是结构体类型名C)x、y、z都是结构体成员名D)struct ex是结构体类型正确答案:B(知识点:结构体类型及结构体变量的定义)试题分析:example是结构体类型的变量名。
2.设有如下定义:struct ss{ char name[10];int age;char sex;}std[3],*p=std;下面各输入语句中错误的是________。
A)scanf("%d",&(*p).age); B)scanf("%s",&);C)scanf("%c",&std[0].sex); D)scanf("%c",&(p->sex));正确答案:B(知识点:结构体数组、指向结构体数组的指针、结构体变量的引用)3.设有如下定义:struct sk{ int a;float b;}data;int *p;若要使p指向data中的a域,正确的赋值语句是________。
A)p=&a B)p=data.a; C)p=&data.a D)*p=data.a正确答案:C(知识点:结构体成员地址的引用、指向结构体成员的指针)4.以下选项中不能正确把c1定义成结构体变量的是________。
A)typedef struct B)struct color c1{int red; {int red;int green; int green;int blue;}COLOR int blue;};COLOR c1;C)struct color D)struct{int red; {int n;int green; int green;int blue;}c1; int blue;}c1;正确答案:B(知识点:结构体变量的定义、自定义变量)5.有以下程序:struct s{int x,y;}data[2]={10,100,20,200};main(){struct s *p=data;printf("%d\n ",++(p->x));}程序运行后的输出结果是________。
结构体练习题
5. 有以下程序输出结果是(B )。
#include<stdio.h>
struct stu
{ int num;
char name[10];
int age; };
void fun(struct stu *p)
{ print("%s\n",(*p).name); }
void main()
{ struct stu students[3]={{9801,"zhang",20},
则下面的叙述中不正确的是_____B___。
A)struct 是结构体类型的关键字 B)example是结构体类型名
C)x、y、z都是结构体成员名
D)struct ex是结构体类
11.设有如下定义:
struct ss
{ char name[10];
int age;
char sex;
}std[3],*p=std;
}
程序运行后的输出结果是_______11_。
14.C语言共用体类型变量在程序执行期间:B
A.所有成员一直驻留在内存中 B.只有一个成员驻留在内存中
C.部分成员驻留在内存中
D. 没有成员驻留在内存中
15.设有以下说明,则下面的叙述不正确的是:C
union data
1、 以下程序的输出结果是A A) 0 B) 1 C) 3 D) 6
main() { struct cmp
{ int x; int y; } cnum[2]={1,3,2,7}; printf(“%d\n”,cnum[0].x/cnum[1].y*cnum[1].x); } 2、根据以下定义,能输出字母M的语句是D
a[2].n=9; a[2].next='\0';
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.建立一个链表,每个结点包含的成员为:职工号、工资。
结构体与共用体习题
2.下面程序运行结果: #include <stdio.h> struct st { int x;int *y;} *p ; int dt[4]={10,20,30,40}; struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3] }; void main() { p=aa; printf("%d, ", ++p->x); printf("%d, ",(++p)->x); printf("%d\n",++(*p->y)); }
1.下面程序运行结果: #include <stdio.h> struct stu { char num[10]; float score[3]; }; void main() { struct stu s[3]={{“20021”,90,95,85},{“20022”,95,80,75}, {“20023”,100,95,90}},*p=s; int i; float sum=0; p++; for(i=0;i<3;i++) sum=sum+p->score[i]; printf(“%6.2f\n”,sum); }
5.以下程序运行结果: #include <string.h> struct STU { char name[10]; int num;}; void f(char *name,int num) { struct STU s[2]={{"SunDan",20044},{"Penghua",20045}}; num=s[0].num; strcpy(name,s[0].name); } main() { struct STU s[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p; p=&s[1]; f(p->name,p->num); printf(“%s %d\n”,p->name,p->num); }
C语言第四章顺序结构复习题
顺序结构程序设计复习题一.选择题1.已有定义:int a,b; float x,y;,以下正确的赋值语句是:()a) a=1,b=2, b) y=(x%2)/10; c) x*=y+8; d) a+b=x;2. 有以下程序:main(){ int y=1111;printf(“y=%6d\n”,y);printf(“y=%+06d\n”,y);}程序运行的结果是:()a) y= 1111 b) y= 1111c) y=1111 d) y= 1111y=001111 y=+01111 y=+01111 y=11113. 有以下程序:main(){ int y=456;printf(“*y=%7o*\n”,y);printf(“*y=%-7o*\n”,y);printf(“*y=%07o*\n”,y);}程序运行的结果是:()a) *y= 710*b) *y= 456**y=710 * *y=456 **y=0000710* *y=0000456*c) *y=710* d) *y=456**y=-710* *y=-456**y=0710* *y=0456*4. 有以下程序:main(){ float y=3.667;printf(“*%f*\n”,y);printf(“*%7.2f*\n”,y);printf(“*%8.0f*\n”,y);}程序运行的结果是:()a) *3.667000* b) *3.667000** 3.67* *3.667 ** 4* *4.000000*c) *3.667* d) *3.667000**3.667000* *3.67**3.667000* *4.000000*5. 已有定义:double a,b;,若要求按输入方式(此处*代表一个空格)**1.0**2.0<回车> 分别给a,b输入1,2,则能正确进行输入的语句是()a) scanf(“%f%f”,&a,&b);b) scanf(“%5.1lf%5.1lf”,&a,&b);c) scanf(“%lf%lf”,&a,&b);d) scanf(“%5e%5e”,&a,&b);6. 以下合法的定义语句是()a) short _auto_=100-1;b) double b=1+5e2.5;c) long do=1l;d) float 2_and=1e-3;7. 以下选项中不是C语句的是()a) ++t b) ; c) k=i=j; d) {a/=b=1;b=a%2;}8. 有定义语句:int a=5,b;,不能给b赋2的赋值语句是()a) b=a/2; b) b=b+2; c) b=2%a; d) b=5;b=2;9. 设x和y均为int型变量,语句组x+=y;y=x-y;x-=y;的功能是()a) 把x和y从小到大排列b) 把x和y从大到小排列c) 无确定结果d) 交换x和y中的值10. 有定义语句:long int a; int k;,能给a赋40000的正确语句是()a) a=20000+20000; b) a=4000*10;c) k=400;a=k*100; d) a=4000;a=a*10;11. 若有定义:int a=8,b=5,c;,执行语句:c=a/b+0.4;后,c的值是()a) 1.4 b) 1c) 2.0 d) 212. 有以下程序:main(){ int k=2,i=2,m;m=(k+=i*=k++);printf(“y=%d,%d\n”,m,i);}程序运行的结果是:()a) 8,6 b) 8,3 c) 6,4 d) 7,413. 有以下程序:main(){ int y=3,x=3,z=1;printf(“%d %d\n”,(++x,y++),z+2);}程序运行的结果是:()a) 3 4 b) 4 2c) 4 3 d) 3 314. 有以下程序:main(){ int i; long l ; float f ; double d ;i=f=l=d=20/3;printf(“%d %ld %3.1f %3.1f\n”,i,l,f,d);}程序运行的结果是:()a) 6 6 6.0 6.0 b) 6 6 6.7 6.7c) 6 6 6.0 6.7 d) 6 6 6.7 6.015. 有以下程序:main(){ unsigned a=32768; int b ;b=a ;printf(“b=%d\n”,b);}程序运行的结果是:()a) b=32768 b) b=32767 c) b=-32768d) b=-116.有以下语句printf(“%d,%d,%u\n”,016,16,-16);其输出结果是()a) 16,16,65520 b) 14,16,65520c) 16,16,-16 d) 14,16,-1617.若有定义语句:int b=0x17;printf(“%d”,b++);,其正确的输出结果是()a) 23 b) 24 c) 25 d) 2218.有以下程序:main(){ int x=0xffff;printf(“%d\n”,x--);}程序运行的结果是:()a) 32767 b) FFFEc) -1 d) -32768二.填空题1.已有定义:int x,y;,执行以下语句后的输出结果是__%d,%3__.x=11/3; y=5; printf(“%%d,%%%d\n”,x,y);2. 已有定义:int y;,执行以下语句后的输出结果是_26,032,0x1a_____.y=26; printf(“%d,%#o,%#x”,y,y,y);3. 执行以下语句后的输出结果是__7/8=0%1___.printf(“7/8=%d”,7/8); printf(“%%%d”,7%2);4. 以下程序的运行结果是___4.900000,4____.main(){ float a;int b;b=a=24.5/5;printf(“%f,%d”,a,b);}5. 以下程序的运行结果是___4.000000,4____.main(){ float a;int b;a=b=24.5/5;printf(“%f,%d”,a,b);}6. 以下程序的运行结果是a=374ㄩㄩ**a=fca=0374**a=0xfc#include <stdio.h>main(){ int a=252;printf(“a=%-5o**a=%x\n”,a,a);printf(“a=%#o**a=%#x\n”,a,a);}7. 若有定义:int t1; double t2;,执行下列语句后,t1的值是__1__。
结构体判断题
结构体判断题
下面是结构体的判断题:
1. 结构体是一种用户自定义的数据类型,可以用来组织多个不同类型的数据成员。
(√)
2. 结构体可以包含整数、浮点数、数组、指针、字符串等多种数据类型。
(√)
3. 结构体中的数据成员可以通过点运算符来访问。
(√)
4. 结构体可以作为参数传递给函数,也可以作为函数的返回值。
(√)
5. 结构体可以进行赋值操作、比较操作、指针操作等。
(√)
6. 结构体的大小等于其所有成员的大小之和。
(√)
7. 结构体可以嵌套使用,即一个结构体成员可以是另一个结构体。
(√)
8. 结构体的定义可以放在函数内部,也可以放在函数外部。
(√)
9. 结构体变量的初始化可以通过赋值语句或结构体初始化列表来实现。
(√)
10. 结构体可以使用结构体指针来操作,通过结构体指针可以访问结构体成员。
(√)。
结构体与联合体习题与参考答案
结构体与联合体习题与参考答案第⼋章结构体与联合体选择题1、若程序中有以下的说明和定义:struct abc{ int x;char y; } 花括号后少了分号。
struct abc s1,s2;则会发⽣的情况是______。
A) 编译时错B) 程序将顺序编译、连接、执⾏C) 能顺序通过编译、连接、但不能执⾏D) 能顺序通过编译、但连接出错2、有以下程序段struct st{ int x; int *y;}*pt;int a[]={1,2};b[]={3,4};struct st c[2]={10,a,20,b};pt=c;以下选项中表达式的值为11的是A) *pt->y B) pt->x C) ++pt->x D) (pt++)->x3、有以下说明和定义语句struct student{ int age; char num[8];};struct student stu[3]={{20,"200401"},{21,"200402"},{19,"200403"}}; struct student *p=stu;以下选项中引⽤结构体变量成员的表达式错误的是______。
A) (p++)->num B) p->num C) (*p).num D) stu[3].age4、设有如下枚举类型定义enum language {Basic=3,Assembly=6,Ada=100,COBOL,Fortran};枚举量Fortran的值为______。
A) 4 B) 7 C) 102 D) 1035、以下叙述中错误的是_________。
A)可以通过typedef增加新的类型B)可以⽤typedef将已存在的类型⽤⼀个新的名字来代表C)⽤typedef定义新的类型名后,原有类型名仍有效D)⽤typedef可以为各种类型起别名,但不能为变量起别名6、有以下程序段typedef struct NODE{ int num; struct NODE *next;} OLD;以下叙述中正确的是A)以上的说明形式⾮法B) NODE是⼀个结构体类型C) OLD是⼀个结构体类型D) OLD是⼀个结构体变量7、以下选项中不能正确把cl定义成结构体变量的是______。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.若有以下语句:
struct student
{ int age;
int num;
} std,*p;
p=&std;
则对结构体变量std中成员age的引用方式不正确的是()。
std.age p->age *p.age (*p).age student.age
2.以下程序的运行结果是()。
#include <stdio.h>
void main()
{ struct date
{ int year,month,day;
} today;
printf("%d\n",sizeof(struct date));
}
A) 6 B) 8 C)10 D) 12
3.
#include <stdio.h>
struct student
{int age;
int num;
};
struct student
stu[3]={{1001,20},{1002,19},{1003,21}}; struct student *p;
p=stu;
A) (p++)->num B) (p++)->age C)(*p).num D) (*++p).age
struct num
{ int a; float b; float f;
}n={1 , 3 , 5.0};
struct num *p=&n;
void main()
{ printf("%.1f\n",p->b/n.a*++p->b);
printf("%.1f\n",(*p).a+p->f); }
5.
struct ks
{ int a; int *b;
}s[4],*p;
void main()
{ int n=1,i;
for(i=0;i<4;i++)
{ s[i].a=n; s[i].b=&s[i].a; n=n+2; } p=&s[0]; p++;
printf("%d\n",(++p)->a); }
6. struct s
{ int a; float b; char *c; };
void main()
{ struct s x={19,83.5,"zhang"};
struct s *p=&x;
printf("%d %.1f %s\n",x.a,x.b,x.c);
printf("%d %.1f %s\n",p->a,p->b,p->c);
printf("%c %s\n",*p->c-1,&p->c[1]); }
7.
struct stu
{ int x; int *y; }*p;
int dt[4]={10,20,30,40};
struct stu a[4]=
{50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]}; void main()
{ p=a;
printf(“%d”,++p->x); printf(“%d”,(++p)->x); printf(“%d\n”,++(*p->y)); }
以下程序段的功能是统计连表中结点的个数,其中first为指向第一个结点的指针,请填空。
struct link
{ char data;
struct link *next; } ;
......
struct link *p,*first;
int c=0;
p=first;
while( )
{ ;
p= ; }
设有以下说明,则下面不正确的叙述是:
union Data
{ int i;
char ch;
float f; }a;
A)a所占的内存长度等于成员f的长度
B)a的地址和它各成员地址都是同一地址
C)a可以作为函数参数
D)不能对a赋值,但可以在定义a时对它初始化。