国家二级C语言机试结构体共同体位运算及文件操作模拟试卷12_含答案与解析)-交互43

阅读: 评论:0

国家二级C语言机试(结构体、共同体、位运算及文件操作)模拟试卷12
(总分50, 做题时间90分钟)
1. 选择题
1. 
关于typedef的叙述中错误的是(  )。
A 用typedef可以为各种类型起别名,但不能为变量起别名临床营养师
B 可以通过typedef增加新的类型
C 用typedef定义新的类型名后,原有类型名仍有效
D 可以用typedef将已存在的类型用一个新的名字来代表
    分值: 2
答案:B
解析:C语言允许用typedef说明一种新类型名或为现有类型起个别名,而不是创建新类型,说明新类型名的语句一般形式为:typedef类型名标识符;在此,“类型名”必须是在此语句之前已有定义的类型标识符。标识符是一个用户定义标识符,用作新的类型名。typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。
2. 
正确的结构体类型说明和变量定义是(  )。
A typedef struct f{int n;char c;}STR;STR t1,t2;
B struct STR;{int n;char C;};STR t1,t2;
C typedef stmct STR;{int n=0;char c='A';}t1,t2;
D struct{int n;char c;}STR;STR t1,t2;
    分值: 2
答案:A
呋喃树脂
解析:定义结构体类型的一般形式为:struct结构体名{成员列表};struct结构体名后不能加“:”号。但定义完之后要在句末加分号,所以选项B、C有误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为“stmct t1,t2;”。选项A为用户自定义类型,其为正确的定义形式。
3. 
若typedef int*T;T a[5];则与a的定义相同的是(  )。
A int*a[5];
B int(*a)[5]
C int,*a;
D int a[5];
    分值: 2
答案:A
解析:typedef的主要功能是为存在的类型指定一个新的别名,后面的代码中可以利用该新定义的别名定义变量,题目定义了整型指针类型T,而后利用T定义了整型指针数组a,含有5个元素,选项A中定义了整型指针数组a,选项B定义了一个指向一维数组的指针a,选项C定义指针变量,而选项D为定义整型数组最常用的形式,数组a中可以存放5个数据元素。
4. 
关于结构体说明和变量定义中,正确的是(  )。
A typedef struct abc{int n;double m;}ABC;ABC x,y;
B struct abc{int n;float m};struct abc x,y;
C struct ABC{int n;float m;}struct ABC x,y;
D struct abc{int n;float m;};abc x,y;
    分值: 2
答案:A
解析:结构体的定义是正常的C语言语句。选项B中结构体定义中每个成员后面的分号都不能省略,选项C结构体类型定义完毕后的}外没加分号,选项D中定义变量要加上关键字struct。
5. 掌中宽带
关于typedef的叙述中错误的是(  )。
A 用typedef可以说明一种新的类型名
B typedef说明的新类型名必须使用大写字母,否则会出编译错误
C 可以用typedef说明的新类型名来定义变量
D typedef的作用是用一个新的标识符来代表已存在的类型名
    分值: 2
答案:B
解析:C语言规定typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原来类型名依然有效。为了便于识别,一般习惯将新的类型名用大写字母表示,但也可以是小写。
6. 
下面结构体的定义语句中,错误的是(  )。
A struct STR{int x;int y;int z;};struct STR a;
B struct STR{int x;int y;int z;}struct STR a;
C struct STR{int x;int y;int z;}a;
D struct{int x;int y;int z;}a;
    分值: 2
答案:B
解析:结构体的定义是正常的C语言语句。在选项B中,由于在定义完结构体后缺少分号所以这是一条不完整的语句,因而是错误的。
7. 
设有定义:struct STR{int real,unreal;)datal={1,8},data2;则以下赋值语句中错误的是(  )。
A data2=(2,6);
B data2=data1;
C data2.real=data 1.real;
D data2.real=data 1.unreal;
    分值: 2
答案:A
解析:本题主要考查结构体变量的定义与初始化。题目中定义了STR类型的结构体变量data1和data2,并对data1进行了初始化。结构体变量Q的负值比较灵活,可以用一个结构
体变量对另一个结构体变量赋值,用一个结构体变量的成员对另一个结构体变量的成员赋值。
8. 
以下程序的输出结果是( )。 #nclude #include typedef struct{char name[9];char sex;int score[2];}STU; STU fun(STU a) {STU b={''Tom'','m',85,90}; int i; strcpy(A→name,B→name); A→sex=B→sex; for(i=O;i<2;i++)A→score[i]=B→score[i]; return a;} main() {STU c={''Lily'','f',95,92},d; d=fun(c); printf(''%s,%c,%d,%d,'',d→name,d→sex,d→score[0],d→score[1]); printf(''%s,%c,%d,%d,'',c→name,c→sex,c→score[0],c→score[1]); }
A Tom,m,85,90,Tom,m,85,90
B Lily,f,95,92,Lily,f,95,92
C Tom,m,85,90,Lily,f,95,92
D Lily,f,95,92,Tom,m,85,90
    分值: 2
答案:C
解析:在C语言的非指针调用函数中,函数实参与形参之间数据的传递是传值,也就是说在用实参调用形参时,是把实参的值拷贝一份给形参,而实参的值并不变化,仍是原来的值。所以对于本题来说,在主函数中调fun(c)后,实参c的值并不会变化,仍是原值。在函数f中把局部变量b的值依次返回给变量d。
9. 
若typedef struct STR{int g;char h;}T;以下叙述中正确的是(  )。
A T是stmct STR类型的变量
B STR是struct类型的变量
C 可用STR定义结构体变量
十字墓D 可用T定义结构体变量
    分值: 2
答案:D
解析:题目中本题考查typedef,T是用typedef定义的struct STR的新名称,因此可用T定义结构体变量,但是T并不是变量,只是struct STR的新名称。
10. 
设typedef struet STR{char c;int a[4];}TV;则下面叙述中正确的是(  )。
A STR是struct类型的变量
B 可以用STR定义结构体变量
C TV是struct STR类型的变量
D 可以用TV定义结构体变量
    分值: 2
答案:D
解析:C语言允许用typedef说明一种新的类型名,用标识符代替类型名,在此,“类型名”必须是此语句之前已有定义的类型标识符。“标识符”是一个用户定义标识符,用作新的类型名。typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。在本题中用typedef定义STR为TV的一种新的类型名,因而可以用它定义一个结构体变量。
11. 
有以下程序段:struet str{int x;int*y;}*pt;int a[]={1,2},b[]={3,4};struet str c[2]={1
0,a,20,b};pt=c;以下选项中表达式的值为11的是(  )。
作文 黑板上的记忆
A (pt++)一>x
B pt一>x
C ++pt一>x
D *pt一>y
    分值: 2
答案:C
解析:本题定义了指针pt,pt指向结构体数据c[2]的第一个元素c[0],所以pt->x=10,执行自加运算后为11。
12. 
关于结构体类型的叙述中正确的是(  )。
A 结构体类型中各个成分的类型必须是一致的
B 在定义结构体类型时,编译程序就为它分配了内存空间
C 结构体类型中的成分只能是C语言中预先定义的基本数据类型
D 一个结构体类型可以由多个称为成员(或域)的成分组成
    分值: 2
答案:D
解析:C语言中的结构体类型,它是由若干“成员”组成,每一个成员可以是一个基本数据类型或者是一个构造类型。在说明和使用之前先定义它,也就是构造它。
13. 
关于结构体函数的叙述中正确的是(  )。
A 函数的返回值不能是结构体指针类型
B 函数的返回值不能是结构体类型
C 在调用函数时,可以将结构体变量作为实参传给函数
D 结构体数组不能作为参数传给函数
    分值: 2
答案:C
解析:C语言中的结构体普通变量相似,结构体变量也可以作为函数实参或者形参,函数的返回值也可以是结构体类型。
14. 
以下程序的输出结果是(  )。main(){unsigned char a=8,c;c=a>>3;printf(''%d\n'',c);}
A 1
B 2
C 4
D 64
    分值: 2
答案:A
解析:在程序中对无符号字符变量a的值执行右移3位运算后,相当于a/8,其值等于1,再赋给变量c。
15. 
李振华
关于位运算的叙述中正确的是(  )。
A 右移运算时,高位总是补0
B 左移运算的结果总是原操作数据2倍
C 位运算符都需要两个操作数
D 位运算的对象只能是整型或字符型数据
    分值: 2
答案:D
解析:C语言中的位运算则是以位(bit)级进行的运算,位运算符中除“-”以外,均为二元运算符,即要求两侧各有一个运算量,运算量只能是整型或字符型的数据,不能为实型数据。
其中右移时,右端(低位)移出的二进制数舍弃,左端(高位)移入的二进制数分两种情况:对于无符号整数和正整数,高位补0;对于负整数,高位补1。而左移运算在没有溢出的前提下每移动一位,相当于原数据的2倍。

本文发布于:2023-08-15 06:08:54,感谢您对本站的认可!

本文链接:https://patent.en369.cn/xueshu/361294.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:类型   结构   定义   变量   选项   运算
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图