31-结构体变量定义与输入输出
- 格式:doc
- 大小:1.09 MB
- 文档页数:9
HZAU-专业C++作业7-8一、判断题1.结构体的定义不为它分配具体的内存空间。
T (2分)2.C++语言结构体类型变量在程序执行期间,所有成员驻留在内存中。
T3.允许用户将不同类型的数据组合成一个有机的整体,这些数据互相联系;这种数据结构称为结构体(structure)。
(2分)T4.struct是关键字,不能省略:“结构体名”用作结构体类型的标志,是用户定义的标识符。
(2分)T5.结构体变量所占的内存长度等于每个成员长度之和(字符型特殊)。
T (2分)6.结构体中的成员(域),不可以单独使用。
F (2分)7.结构体变量能整体进行输入输出。
F (2分)8.如果成员本身又属于一个结构体类型,则要用若干个成员运算符,一级一级的找到最低一级的成员。
只能对最低一级的成员进行赋值、存取或运算。
T9.把整个结构体变量传递给函数默认情况下采取的是“值传递”方式,要求形参也必须是同类型的结构体变量。
当然也可由程序员控制用指针参数或引用参数传递。
(2分)T10.结构体变量的各个初值用花括号{、}括起来,花括号内各个成员变量的值之间用分号分隔,其值必须与成员变量一一对应,且数据类型应与成员变量一致。
F11.宏替换时先求出实参表达式的值,然后带入形参运算求值。
F (2分)12.宏替换不存在类型问题,它的参数也是无类型的。
T (2分)13.在C++语言标准库头文件中包含了许多系统函数的原型声明,因此只要程序中使用了这些函数,则应包含这些头文件。
T (2分)14.H头文件只能由编译系统提供。
F (2分)15.#include命令可以包含一个含有函数定义的C++语言源程序文件。
T (2分)16.#include <…>命令中的文件名是不能包括路径的。
t (2分)18.宏定义中的形参是标识符,在宏调用中的实参不可以是表达式。
F (2分)19.一个#include命令一次只能包含一个文件,若想包含多个文件,须用多个#include命令。
第三次在线作业单选题共20道题收起1.2.5分在C语言中,当函数调用时;A、A. 实参和形参各占一个独立的存储单元B、B. 实参和形参共用存储单元C、C. 可以由用户指定实参和形参是否共用存储单元D、D. 由系统自动确定实参和形参是否共用存储单元我的答案:A 此题得分:2.5分2.2.5分以下函数调用语句中实参的个数为; excev1,v2,v3,v4,v5,v6;A、A. 3B、B. 4C、C. 5D、D. 6我的答案:A 此题得分:2.5分3.2.5分如果在一个函数的复合语句中定义了一个变量,则该变量;A、A. 只在该符合语句中有效,在该符合语句外无效B、B. 在该函数中任何位置都有效C、C. 在本程序的原文件范围内均有效D、D. 此定义方法错误,其变量为非法变量我的答案:A 此题得分:2.5分4.2.5分 C语言允许函数值类型缺省定义,此时该函数值隐含的类型是;A、A. float型B、B. int型C、C. long型D、D. double型我的答案:B 此题得分:2.5分5.2.5分 C语言规定,函数返回值的类型是由;A、A. return语句中的表达式类型所决定B、B. 调用该函数时的主调函数类型所决定C、C. 调用该函数时系统临时决定D、D. 在定义该函数时所指定的函数类型决定我的答案:D 此题得分:2.5分6.2.5分在C语言程序中,以下描述正确的是;A、A. 函数的定义可以嵌套,但函数的调用不可以嵌套B、B. 函数的定义不可以嵌套,但函数的调用可以嵌套C、C. 函数的定义和函数的调用均不可以嵌套D、D. 函数的定义和函数的调用均可以嵌套我的答案:B 此题得分:2.5分7.2.5分以下叙述中正确的是;A、A. 全局变量的作用域一定比局部变量的作用域范围大B、B. 静态static类别变量的生存期贯穿于整个程序的运行期间C、C. 函数的形参都属于全局变量D、D. 未在定义语句中赋初值的auto变量和static变量的初值都是随机值我的答案:B 此题得分:2.5分8.2.5分以下程序的运行结果是; include< stdio_h> void subint s,int y { static int t=3; y=st;t--; } main { int a={1,2,3,4},i,x=0; fori=0;i< 4;i++{ suba,x;printf"%d",x;} printf"\n"; }A、A.1234B、B.432lC、C.0000D、D.4444我的答案:C 此题得分:2.5分9.2.5分以下程序的运行结果是: main { int w=5; funw; } funint k { ifk> O funk-1; printf" %d" ,k; }A、A.5 4 3 2 lB、B.0 1 2 3 4 5C、C.1 2 3 4 5D、D.5 4 3 2 1 0我的答案:B 此题得分:2.5分10.2.5分当调用函数时,实参是一个数组名,则向函数传送的是A、A.数组的长度B、B.数组的首地址C、C.数组每一个元素的地址D、D.数组每个元素中的值我的答案:B 此题得分:2.5分11.2.5分在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是;A、A.地址传递B、B.单向值传递C、C.由实参传给形,再由形参传回实参D、D.传递方式由用户指定我的答案:B 此题得分:2.5分12.2.5分定义一个结构体变量时系统分配给它的内存是;A、A. 各成员所需要内存量的总和B、B. 结构体中第一个成员所需内存量C、C. 成员中占内存量最大者所需的容量D、D. 结构中最后一个成员所需内存量我的答案:A 此题得分:2.5分13.2.5分设有如下定义:struct sk {int a ;float b ;}data ,p ;若有p=& data ; ,则对data 中的a 域的正确引用是;A、A.p.data.aB、B.p.aC、C.p-> data.a我的答案:B 此题得分:2.5分14.2.5分当定义一个共用体变量时系统分配给它的内存是;A、A. 各成员所需要内存量的总和B、B. 共用体中第一个成员所需内存量C、C. 成员中占内存量最大者所需的容量D、D. 共用体中最后一个成员所需内存量我的答案:C 此题得分:2.5分15.2.5分设有如下枚举类型定义:enum language { Basic=3 ,Assembly ,Ada=100 ,COBOL ,Fortran} ;枚举量Fortran 的值;A、A. 4B、B. 7C、C. 102D、D. 103我的答案:C 此题得分:2.5分16.2.5分若x=5,y=5,则x& y的结果是;A、A. 0B、B. 2C、C. 3D、D. 5我的答案:D 此题得分:2.5分17.2.5分在位运算中,操作数每左移两位,则结果相当于;A、A. 操作数乘以2B、B. 操作数除以2C、C. 操作数除以4D、D. 操作数乘以4我的答案:D 此题得分:2.5分18.2.5分 C语言可以处理的文件类型是;A、A. 文本文件和数据文件B、B. 文本文件和二进制文件C、C. 数据文件和二进制文件D、D. 数据代码文件我的答案:B 此题得分:2.5分19.2.5分在执行fopen函数时,若执行不成功,则函数的返回值是;A、A.TRUEB、B.–1C、C.1D、D.NULL我的答案:D 此题得分:2.5分20.2.5分在C程序中,可把整型数以二进制形式存放到文件中的函数是;A、A.fprintf函数B、B.fread函数C、C.fwrite函数D、D.fputc函数我的答案:C 此题得分:2.5分判断题共20道题收起21.2.5分下面程序段运行时输出结果是:0,0 1,3 void main { int i; fori=0;i< 2;i++ add; } add { int x=0; static int y=0; printf" %d,%d " ,x,y; x++; y=y+3; }正确错误我的答案:错误此题得分:2.5分22.2.5分下面程序段运行时输出结果是:38.5 int x; void main { x=7; s; printf" %d\n" ,x; } void s { x=5x+x/2; }正确错误我的答案:错误此题得分:2.5分23.2.5分下面程序段运行时输出结果是2 int fint n { int s; ifn==1||n==2 s=1; else s=n-fn-1; return s; } void main { printf“%d”,f3;}正确错误我的答案:正确此题得分:2.5分24.2.5分下面程序段运行时输出结果是29 funint x,int y,int z {z=xx+yy;} main { int a=31; fun5,2,a; printf"%d",a; }正确错误我的答案:错误此题得分:2.5分25.2.5分编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述的结果;判断以下程序是否正确: include< stdio.h> include< string.h> void fltjchar str,int a { int ll,i; ll=strlenstr; for i=0;i< ll;i++ { if stri> =' a' & & stri< =' z' ||stri> =' A' & & stri< =' Z' a0++; else if stri> =' 0' & & stri< =' 9' a1++; else if stri==' ' a2++; else a3++; } } void main { static char str60; static int a4={0,0,0,0}; getsstr; fltjstr,a;printf" %s char:%d digit:%d space:%d other:%d" , str,a0,a1,a2,a3; }正确错误我的答案:正确此题得分:2.5分26.2.5分打印出1-100之间的全部素数要求编写两个函数,一个用于判断一个数是否是素数,另一个是main函数,在main函数中调用该函数实现打印1-100之间的全部素数;判断以下程序是否正确: include < stdio.h> int primeint m { int i; fori=2;i< m;i++ ifm%i==0 return 0; return 1; } void main { int i; fori=2;i< 100;i++ ifprimei printf" %d " ,i; }正确错误我的答案:正确此题得分:2.5分27.2.5分对10个数进行从小到大排序;要求排序在函数sort内完成,用起泡算法;main函数内进行数据输入、调用排序函数sort、并输出排序后的数据;判断以下程序是否正确:include < stdio.h> void sortint a,int n { int i,j,k; for i=0; i< n-1; i++ for j=0; j< n-1-i; j++ if aj> aj+1 { k=aj;aj=aj+1;aj+1=k; } } void main { int a10, i, j, k; printf" 请任意输入10个整数:\n" ; for i=0 ; i< 10 ; i++ scanf" %d" , & ai ; printf" \n" ; sorta,10; printf" 按由小到大的顺序输出10个整数是:\n" ; for i=0; i< 10; i++ printf“%d," ,ai; }正确错误我的答案:正确此题得分:2.5分28.2.5分fun函数用来统计各分数段的分数个数,其中所有分数存放在数组a中,各分数段的分数个数存放在数组b中,85-100分的个数存放到b0,60-84分的个数存放到b1,60以下的个数存放到b2;main函数中输入所有的分数值,调用fun函数,打印各分数段的分数个数;判断以下程序是否正确:includedefine N 20void funint a,int b,int n{ int i;for i=0;i if ai>=85 && ai<=100 b0++;else ifai>=60&&ai<=84 b1++;else ifai<60&&ai>=0 b2++;return;}void main{ int aN,b3,i;funa,b,N;fori=0;i<3;i++ printf“%d\n”,bi;}正确错误我的答案:正确此题得分:2.5分29.2.5分在定义函数时,函数名后面的括号中的变量名称为实参;正确错误我的答案:错误此题得分:2.5分30.2.5分在调用一个函数的过程中又出现直接或间接调用该函数本身,称为函数的递归调用;正确错误我的答案:正确此题得分:2.5分31.2.5分在函数内定义的变量是局部变量,在函数外定义的变量是外部变量;外部变量是全局变量;正确我的答案:正确此题得分:2.5分32.2.5分函数的参数不仅可以是整型、字符型、浮点型等数据,还可以是指针类型;它的作用是将一个变量的地址传送到另一个函数中;正确错误我的答案:正确此题得分:2.5分33.2.5分结构体的成员不能是结构体变量;正确错误我的答案:错误此题得分:2.5分34.2.5分一个结构体变量的指针就是该变量所占内存段的起始地址;正确错误我的答案:正确此题得分:2.5分35.2.5分“按位或”运算指两个运算数相应的二进制位中只要有一个为1,则该位结果值为1,比如0|0=0,1|0=1;正确错误我的答案:正确此题得分:2.5分36.2.5分异或运算指两个运算数相应的二进制位相同则结果为0,相异则结果为1,比如0∧1=1,0∧0=0;正确错误我的答案:正确此题得分:2.5分37.2.5分若fp是指某文件的指针,且已读到文件的末尾,则表达式feoffp的返回值是NULL错误我的答案:错误此题得分:2.5分38.2.5分 C语言库函数fgetsstr,n,fp的功能是从文件fp中读取n个字符串存入str指向的内存;正确错误我的答案:错误此题得分:2.5分39.2.5分函数rewind的作用是使位置指针自动移至下一个字符位置;正确错误我的答案:错误此题得分:2.5分40.2.5分 C语言中以w+方式打开文件后,可执行的文件操作是可任意读写;正确错误我的答案:错误此题得分:2.5分。
练习八一、选择题1. 下列描述正确的是(A) 用户可通过类型定义产生一种新的数据类型(B) 类型定义格式要求中的标识符必须是大写字母序列(C) 类型定义格式要求中的类型名必须是在此之前有定义的类型标识符(D) 以上描述均不正确2. 下列描述说明正确的是(A) typedef int INTEGER; INTEGER j,k; (B) typedef int char ; char j,k;(C) typedef a[3] ARRAY; ARRAY b; (D) 以上描述均不正确3.下面对typedef的叙述中不正确的是(A) 用typedef可以定义各种类型名,但不能用来定义变量(B) 用typedef可以增加新类型(C) 用typedef只是将已存在的类型用一个新的标识符来代表(D) 使用typedef有利于程序的通用和移植4. 下列描述说明正确的是(A) 对于一个具体的结构体,它的成员数目可以根据自己的需要随时更改(B) 结构体与数组一样,其每个成员的数据类型都相同(C) 结构体的每个成员的数据类型必须是基本数据类型(D) 以上描述均不正确5. 下列描述说明正确的是(A) 定义结构体时,它的每个成员的数据类型可以不同(B) 不同结构体的成员名不能相同(C) 结构体定义时,其成员的数据类型不能是结构体本身(D) 结构体定义时各成员项之间可用分号也可用逗号隔开6. 下列描述说明正确的是(A) 定义结构体时,系统按照各成员项的大小分配相应的存储空间(B) 定义结构体时,系统按照成员项中占用空间最大的成员项分配存储空间(C) 结构体定义时,结构体本身并不占用存储空间,即系统并不给结构体分配存储空间(D) 以上说法均不正确7. 下列描述说明正确的是(A) 结构体变量说明时,系统按照结构体定义时所需空间的大小实际分配存储空间(B) 结构体变量说明时,系统按照成员项中占用空间最大的成员项分配存储空间(C) 结构体说明时,系统并不给结构体分配存储空间(D) 以上说法均不正确8. 下列描述说明错误的是(A) 结构体变量各的成员项各自占用各自的存储空间,而共用体各成员项共同占用同一存储空间(B) 结构体定义时并不分配存储空间,只有在结构体变量说明时,系统才分配存储空间(C) 结构体变量占用空间的大小为各成员项占用空间大小之和,而共用体占用空间大小为其成员项中占用空间最大的成员项所需存储空间大小(D) 以上说法均不正确9. 下列描述说明正确的是(A) 结构体变量可以作为一个整体进行其值的输入和输出(B) 结构体成员项不可以是结构体(C) 结构体成员项可以是结构体或其他任何C语言的数据类型(D) 结构体变量和结构体是相同的概念10. 下列描述说明错误的是(A) 结构体变量的名称为该结构体变量的存储首地址(B) 结构体数组的名称为该结构体数组的存储首地址(C) 结构体变量本身的地址即各成员项存储空间的开始地址(D) 结构体数组中不同元素的同名成员项具有相同的数据类型11. 下列说法不正确的是(A) 下列结构体定义时,占据了5个字节的空间struct s{ int num;int age; char sex; }(B) 结构体的成员名可以与程序中的变量名相同(C) 对结构体中的成员可以单独使用,它的作用相当于普通变量(D) 结构体的成员可以是一个结构体变量12.当说明一个结构体变量时系统分配给它的内存是(A) 各成员所需内存量的总和(B) 结构中第一个成员所需内存量(C) 成员中占内存量最大者所需的容量(D) 结构中最后一个成员所需内存量13. 结构体类型变量在程序执行期间1(A) 所有成员一直驻留在内存中(B) 只有一个成员驻留在内存中(C) 部分成员驻留在内存中(D) 没有成员驻留在内存中14. 若有以下的定义struct stru{ int a;long b;char c[6]; }sampl;则以下赋值正确的是(A) sampl.c="abcd"; (B) strcpy(sampl.c,"abcd");(C) sampl->c="abcd" (D) 以上均不正确15. 结构体定义struc student{ int num;char sex;int age; } s1,s2;下列语句中错误的是(A) printf("%d,%c,%d",s1); (B) s2.age=s1.age;(C) s1.age++; (D) printf("%o",&s1);16. 若有以下说明,则能打出Y un的语句是struct sampl{ char name[10];int number; };struct sampl test[3]={{"WangBing",10},{"LiY un",20},{"LiuHua",30}}; (A) printf("%s\n",test[1].name+2); (B) printf("%s\n",test[1].name[2]);(C) printf("%s\n",test[2].name+2); (D) printf("%s\n",test[2].name[2]);17. 以下选项中,能定义s为合法的结构体变量的是(A)typedef struct abc (B)struct (C)struct ABC (D)typedef ABC{ double a;{ double a;{ double a;{ double a;char b[10];char b[10];char b[10];char b[10];} s;} s;} }ABC s;ABC s;18.设有以下说明语句struct stu{int a;float b;}stutype;则下面的叙述不正确的是(A) struct是结构体类型的关键字(B) struct stu是用户定义的结构体类型(C) stutype是用户定义的结构体类型名(D) a和b都是结构体成员名19.根据下面的定义,能打印出字母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].nam e[1]); (D) printf(“%c\n”,class[2].name[0]);20. 已知结构体com类型的变量a,其初始化赋值如下:static struct com a={"20",5,1.7691}:则以下结构体com的类型定义正确的是(A) com struct { char name( ); int kodo;float shuki; }(B) struct com { char name[];int kodo;double shuki; }(C) struct com { int name; int kodo;float shuki; }(D) com struct { int name;int kodo;float shuki; }21. 以下程序的输出结果是main(){ struct cmplx{ int x; int y; } cnum[2]={1,3,2,7};printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);}(A) 0 (B) 1 (C) 3 (D) 622. 设有如下定义:struct st{ int a;float b; }st1,*pst;若有pst=&st1;,则对st中的a域的正确引用是(A) (*pst).st1.a (B) (*pst).a (C) pst->st1.a (D) pst.st1.a223. 设有如下定义: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.a24. 设有如下定义:struct sample{ int a;int b;};struct st{ int a;float b;struct sample *p; }st1,*pst;若有pst=&st1;,则以下引用正确是(A) (*pst).p.a (B) (*pst)->p.a (C) pst->p->a (D) pst.p->a25. 若有以下说明,则下列表达式中值为20的是struct sampl{ int a;int b; };struct sampl test[3]={{1,10},{2,20},{3,30}},*p=test;(A) (p++)->b (B) (p++)->a (C) (*++p).b (D) (*++p).a26. 若有以下说明和语句,则值为6的表达式是struct st{ int n;struct st *next; };struct st a[3],*p;a[0].n=5; a[0].next=&a[1];a[1].n=7; a[1].next=&a[2];a[2].n=9; a[0].next='\0';p=&a[0];(A) p++->n (B) p->n++ (C) (*p).n++ (D) ++p->n27.以下scanf函数调用语句中对结构体变量成员的不正确引用是stuct pupil {char name[20];int age ;int sex; }pup[5],*p;p=pup;(A) scanf("%s",pup[0].name); (B) scanf("%d",&pup[0].age);(C) scanf("%d",&p.sex); (D) scanf("%d",p->age);28.若要利用下面的程序片段使指针变量p指向一个存储整型变量的存储单元,则[ ]中应填入的内容是int *p;P=[ ]malloc(sizeof(int));(A)int (B)int* (C)(*int) (D)(int*)29. 以下程序的输出结果是struct st{ int x;int *y;} *p;int dt[4]={10,20,30,40 };struct st aa[4]={ 50,&dt[0],60,&dt[0],60,&dt[0], 60,&dt[0]};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 11 3130.以下程序的运行结果是#include “stdio.h”main(){ struct data{3int year,month,day;}today;printf(“%d\n”,sizeof(struct data)); }(A) 6 (B) 8 (C) 10 (D) 1231. 以下程序的输出结果是#include <stdio.h>main(){ struct stru{ int a,b;char c[6]; };printf("%d\n",sizeof(struct stru));}(A) 2 (B) 4 (C) 8 (D) 1032. 以下程序的输出结果是#include <stdio.h>main(){ struct stru{ int a;long b;char c[6];};printf("%d\n",sizeof(struct stru));}(A) 2 (B) 4 (C) 6 (D) 1233. 设有以下定义和语句,则输出的结果是(用small模式编译,指针变量占2个字节) struct date{ long *cat;struct date * next;double dog;} too;printf("%d",sizeof(too));A)20 B)16 C)14 D)1234. 有以下程序#include <stdio.hstruct 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) 1835. 若已建立下面的链表结构,指针p、s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾的语句组是(A) s->next=NULL; p=p->next; p->next=s; (B) p=p->next; s->next=p->next; p->next=s;(C) p=p->next; s->next=p; p->next=s; (D) p=(*p).next; (*s).next=(*p).next; (*p).next=s;36. 下列描述说明正确的是(A) 共用体定义时,系统按照各成员项所需空间的大小之和实际分配存储空间(B) 结构体定义时并不分配存储空间,只有在结构体变量说明时,系统才分配存储空间(C) 共用体定义时,系统按照占用空间最大的成员项分配存储空间(D) 以上说法均不正确37. 下列描述说明正确的是(A) 共用体定义时,系统按照成员项中占用空间最大的成员所需空间大小实际分配存储空间(B) 共用体定义时并不分配存储空间,只有在共用体变量说明时,系统才分配存储空间(C) 共用体定义时,系统按照各成员项各自占用空间大小之和分配存储空间(D) 以上说法均不正确38.当说明一个共用体变量时系统分配给它的内存是(A) 各成员所需内存量的总和(B) 结构中第一个成员所需内存量4(C) 成员中占内存量最大者所需的容量(D) 结构中最后一个成员所需内存量39.C语言共用体型变量在程序运行期间(A) 所有成员一直驻留在内存中(B) 只有一个成员驻留在内存中(C) 部分成员驻留在内存中(D) 没有成员驻留在内存中40.以下对C语言中共用体类型数据的叙述正确的是(A) 可以对共用体变量名直接赋值(B) 一个共用体变量中可以同时存放其所有成员(C) 一个共用体变量中不可能同时存放其所有成员(D) 共用体类型定义中不能出现结构体类型的成员41.以下程序的运行结果是#include “stdio.h”main(){ union {long a;int b;char c;}m;printf(“%d\n”,sizeof(m)); }(A) 2 (B) 4 (C) 6 (D) 842. 以下程序的输出结果是#include <stdio.h>main(){ union un{ int a[2];long b;char c; };printf("%d\n",sizeof(union un));}(A) 9 (B) 4 (C) 1 (D) 843. 以下程序的输出结果是typedef union { long x[2];int y[4];char z[8]; } MYTYPE;MYTYPE them;main(){ printf("%d\n",sizeof(them)); }(A) 32 (B) 16 (C) 8 (D) 2444. 以下程序的输出结果是#include <stdio.h>main( ){ union un{ int i;long k;char c; };struct byte { int a;long b; union un c; }r;printf("%d\n",sizeof(r));}(A) 10 (B) 13 (C) 7 (D) 845. 设有以下说明和定义:typedef union{ long i; int k[5]; char c; }DATE;struct date{ int cat; DATE cow; double dog; } too;DATE max;则下列语句的执行结果是printf ("%d",sizeof (struct date ) +sizeof(max));(A) 26 (B) 30 (C) 18 (D) 846. 以下程序的输出结果是main( ){ union{ char i[2];int k;} r;r,i[0]=2;r,i[1]=0;printf("%d \n",r,k);}(A)2 (B)1 (C)0 (D)不确定547. 下列程序的输出结果是#include <stdio.h>main(){ union{ int i[2];long k;char c[4];}r,*s=&r;s->i[0]=0x39;s->i[1]=0x38;printf("%c\n",s->c[0]);}(A) 39 (B) 9 (C) 38 (D) 848. 下列程序的输出结果是#include <stdio.h>main( ){ union{ int i[2];long k;char c[4];}r,*s=&r;s->i[0]=0x39;s->i[1]=0x38;printf("%lx\n",s->k);}(A) 390038 (B) 380039 (C) 3938 (D) 383949. 以下程序的输出结果是#include <stdio.h>main( ){ union{int i[2];long k;char c[2];}r,*s=&r;s->k=0x12345678;printf("%x\n",s->c[0]);}(A) 12 (B) 78 (C) 1234 (D) 567850. 以下程序的输出结果是#include <stdio.h>main(){ struct byte {int a;char b;};union{int i[2];long k;char c[2];struct byte d;}r,*s=&r;s->k=0x12345678;printf("%x,%x\n",s->d.a,s->d.b);}(A) 34,56 (B) 56,78 (C) 1234,5678 (D) 5678,3451. 有下列程序#include<stdio.hmain(){ union{ int k;char i[2];} *s,a;s=&a;s->i[0]=0x39;s->i[1]=0x38;printf("%x\n",s-k);} 输出结果是(A) 3839 (B) 3938 (C) 380039 (D) 39003852. 以下对枚举类型名的定义中正确的是(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"};二、多选题1.若有以下定义和语句:struct student{int age;int num ; };struct student stu [3]={{1001,20 },{1002,19},{1003,21}};main(){struct student *p;p=stu;…}6则以下不正确的引用是(A) (p++)->num (B) (p++).age (C) (*p).num (D) p=&stu.age三、填空题1. 在C语言中,用关键字__________来表示结构体类型。
c语言上机考试题库单项选择题1.有char c=’1’,下面说法中正确的是()。
A. 语句putc+2);的输入结果为51B. 语句put“%d”,c+2);的输出结果为3C. 语句put“%c”,c+2);的输入结果为51D. 语句put“%c”,c+2);的输出结果为32.设c1,c2均就是char型变量,则下面不恰当的函数调用为()。
A. scanf(”c1=2=%c”,&c1,&c2);B. get);C. putc2);D. putc1,c2);3.为了表示关系x>=y>=z,下面C语言表达式中正确的是()。
A. (x>=y)&&(y>=z)B. (x>=y)and(y>=z)C. (x>=y>=z)D. (x>=y)&(y>=z)4.设x,y,z,t为int型变量,则继续执行以下语句后,t的值()。
x=y=z=1;t=++x||++y&&++z;A. 不定值B. 2C. 1D. 05.对if语句中表达式的类型,下面正确的说法是()。
A. 必须就是关系表达式B. 必须是关系表达式或逻辑表达式C. 可以就是任一表达式D. 必须是关系表达式或算术表达式6.对for(表达式1;;表达式3)可以认知为()。
A. for(表达式1;0;表达式3)B. for(表达式1;表达式1;表达式3)C. for(表达式1;1;表达式3)D. for(表达式1;表达式3;表达式3)7.执行语句for(i=1;i++<4;);之后,变量i的值为()。
A. 3B. 4C. 5D. 不确定8.若二维数组a存有m列,则在a[i][j]前的元素个数为()。
A. j*m+iB. i*m+jC. i*m+j-iD. i*m+j+19.下面说法中正确的是()。
A. 在C语言中,可以采用动态内存分配技术,定义元素个数气门的数组B. 在C语言中,数组元素的个数可以不确定,允许随即变动C. 在C语言中,数组元素的数据类型可以不一致D. 在C语言中,定义数组后,就确定了它能容纳的相同数据类型元素的个数10.无法把字符串:“good!”参数值数组b的语句就是()。