C语言课堂练习习题集(8)

2019-04-10 09:15

struct st

{int age;int num;}stul,*p; p=&stul;

A) stul.age B) age C) p→age D) (*p).age 10. 再定义一个结构体变量时,系统分配给它的内存是 A)结构体中第一个成员所需内存量

B)结构体中最后一个成员所需内存量 C)成员中占内存量最大者所需内存量 D)各成员所需内存量的总和

11. 定义一个联合体变量时,系统分配给它的内存是。 A)联合体中第一个成员所需内存量 B)联合体中最后一个成员所需内存量 C)成员中占内存量最大者所需的容量 D)各成员所需内存量的总和

12. 关于联合体,下面叙述不正确的是

A)联合体变量中成员项共用同一存储空间,因此,联合体变量的地址和每一个成员项的

地址是同一地址

B)联合体变量中成员项所占存储空间量不同,因此,联合体中每一个成员项的地址不是同一地址

C)C语言规定不能对联合体变量赋值;也不能通过直接引用变量名来得到成员项,这与

结构体是相同的

D)不允许将联合体变量作为函数参数,也不允许用联合体变量作为函数的返回值 13. 设有以下结构体定义: struct emproyer

{char name[8];int age;char sex;}staff; 则下面的叙述不正确的是

A)struct是结构体类型的关键字

B)struct emproyer是用户定义的结构体类型 C)staff是用户定义的结构体类型名 D)nameage和sex都是结构体成员名 14. 下面程序的运行结果是。 main()

{struct cmplx

{int x;int y;}cnum[2]={l,3,2,7}; printf(\%d\\n\,cnum[0].y/cnum[0].x*cnum[1].x);} A)0 B)1 C)3 D)6 15. 根据下面的定义,能打印出字母“M”的语句是。

struct person

{char name[9];int age;};

struct person class[10]={\,17,

\,19,\,18,\,16 }; A)printf(\%c\\n\,class[3].name ); B)printf(\%c\\n\,class[3].name[l]); C)Printf(\%c\\n\,class[2].name[l]); D)printf(\%c\\n\,class[2].name[0]); 16. 若有以下定义和语句:

36 / 45

struct student

{int num ;int age;};

struct student stu[3]={{l001,20},{1002,19},{1003,2l}}; main()

{struct student *p;p=stu; ... } 则下列引用中不正确的是。 A) (p++)→num B) p++ C) (*p).num D) p=&stu.age 17. 设有一联合体变量定义如下: union data

{long w;float x;int y;char z;}; union data beta;

执行下面赋值语句后,正确的联合体变量beta的值是。 beta.w=123321;beta.y=88;beta.x=99.9;beta.z='A'; A)123321 B)88 C)99.9 D) 'A' 18. 以下程序的运行结果是。

typedef union {long a[2];int b[4];char c[8];}TY; TY our; main()

{printf(\%d\\n\,sizeof(our)); } A)32 B)16 C)8 D)24 19. 下面程序的输出是。 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)l 4 5 15 填空题

1. 结构体作为一种数据构造类型,在c语言中必须经过“______”的过程。

2. 定义结构体变量名表可以在定义结构体时直接进行,常用的定义结构体变量名表的方法是______。

3. 引用结构体变量中成员的一般形式是______。

4. 设已定义P为指向某一结构体类型的指针,如引用其成员可以写成______,也可以写成 ______。

5. 结构体类型是建立动态数据结构的非常有用的工具,在构造链表时必须在结构体类型定义中包含______。

6. 将字符串转换成整数函数是______;将字符串转换成实数函数是______;将字符串转换成长整数函数是______。

7. 以下程序用以输出结构体变量bt所占内存单元的字节数,请在空白处填上适当内容。 struct ps

{double i;char arr[20]; }; main()

{struct ps bt;printf(\:%d\\n\,______);}

8. 以下程序的功能是按学生姓名查询其排名和平均成绩,查询可连续进行,直到键入0时结束,请在空白处填入正确内容。 #include #include #define NUM 4

37 / 45

struct student

{ int rank;char * name;float score; }; ______stu[ ]={3,\,98.3, 4,\,78.2, l,\,95.1, 2,\,90.6, }; main()

{char str[10]; int i;

do { printf(\:\; scanf(\%s\,str); for(i=0;i

{printf(\:%8s\\n\,stu[i].name); printf(\:%3s\\n\,stu[i].rank);

printf(\:%5.1f\\n\,stu[i].score); ______; }

if(i>=NUM)printf(\; } while(strcmp(str,\;}

9. 已知head指向单链表的第一个结点,以下函数del完成从单向链表中删除值为num的第一个结点。请在空白处填入正确内容。 #include struct student

{int info; struct student * link;};

struct student *del(struct student *head,int num) {struct student pl,*p2; if(head= =NULL)

printf(\; else

{ p1=head; while(______)

{p2=p1;p1=p1→link;} if(num= =p1→info) { if(p1= =head)______; else______;

printf(\:%d\\n\,num);}

else printf(\%d not been found!\\n\,num);} return(head);}

第十二章 位运算 单项选择题

1. a为0111,b为0123,a、b、c均为无符号短整型变量,则语句printf(\%o,%o,%o,%o\,c=~a,c=a&b,c=a|b,c=a∧b)的输出结果为 A)177666,101,133,32 B)0177666,0123,0333,032 C)0177666,0101,0133,032 D)177666,0123,0133,034

38 / 45

2. 以下运算符优先级最低的是__,优先级最高的是 __ A)&& B)& C) || D)| 3. 表达式a

A)操作数*2 B)操作数/2 C)操作数*4 D)操作数/4 5. 设有以下程序: #include main()

{int nl,n2;n1=0123;n2=0234;

printf(\%o,%o,%o,%o\\n\,~ n1,nl&n2,n1|n2,n1∧n2); }

该程序运行后结果为。

A)0176654,020,0337,0317 B)177654,20,357,317 C)177654,20,337,317 D)176654,20,357,317 6. 设有以下程序: #include main()

{unsigned short u;short n; u=0123;n=-72;

printf(\%o,%o,%d,%d\\n\,u<<2,u>>3,n<<2,n>>3); } 该程序运行结果为

A)514,12,-228,-9 B)515,12,-238,-9 C)514,21,-228,-8 D)515,21,-228,-8 7. 设有以下程序: #include main()

{unsigned short nl,n2,n3,n4,n5,a,b; n1=n2=n3=n4=n5=a=100;b=5;

printf(\%d,%d,%d,%d,%d\\n\,n1&b,n2|b,n3∧b,n4<>b); 该程序运行后结果为。

A)100,100,97,320,3 B)5,101,97,3200,3 C)100,101,97,3200,3 D)4,101,97,3200,3 8. 下面程序的输出是。 main()

{char x=040;printf(\%d\\n\;} A)100 B)160 C)120 D)64 填空题

1. 测试char型变量a第6位是否为1的表达式为(设最右位为第1位)______。 2. 在c语言中,&的含义有______和______。

3. 设x为16bit整数,若要通过x|y使x低8位置1,高8位不变,则y的八进制数是______. 4. 设二进制数x的值是11001101,通过x&y运算使x中的低4位不变,高4位清零,则y的二进制数是______。

5. 下面的程序是实现左右循环移动,当输入位移的位数是一正整数时,循环右移,输入一负整数时循环左移,请填空。 main()

39 / 45

{ unsigned a; int n;

printf(\请输入一个八进制数:\; scanf(\%o\,&a);

printf(\请输入位移的位数:\; scanf(\%d\,&n); if(______)

{ moveright(a,n);

printf(\循环右移的结果为:%d\,moveright(a,n));} else if(______)

{moveleft(a,-1*n);

printf(\循环左移的结果为:%d\,moveleft(a,-1*n));} } moveright(unsigned value,int n) { unsigned z;

z=(value>>n);(value<<(16-n)); return (z);}

moveleft(unsigned value,int n) {unsigned z; ______; return(z);}

6. 把int类型变量low中的低字节及变量hign中的高字节放入s中的表达式为______。 7. 下面程序的运行结果是______。 main()

{unsigned a=0112,x,y,z; x=a>>3;printf(\%o,\,x); y=(0<<4);printf(\%o,\,y); z=x&y;printf(\%o\\n\,z); }

第十三章 文件 单项选择题

1. 系统的标准输入文件是指。 A)键盘 B)显示器 C)软盘 D)硬盘 2. fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是。 A)只写 B)追加 C)读或读写 D)B与C正确 3. 关于fseek函数,以下有关操作的叙述不正确的是。 A)可以改变文件的位置指针 B)可以实现文件的顺序读写

C)可以实现文件的随机读写 D)只可以顺序定位文件的位置指针 4. 函数ftell的作用是。

A)取得当前文件指针的位置,该位置为相对于文件开头的位移量表示 B)取得当前文件指针的位置,该位置为相对于文件末尾的位移量表示 C)出错时返回值为0 D)以上叙述都不正确 5. 函数rewind的作用是

A)使位置指针指向文件的末尾

B)将位置指针指向文件中所要求的特定位置 C)使位置指针重新返回文件的开头

D)使位置指针自动移到下一个字符位置

40 / 45


C语言课堂练习习题集(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:常平东部污水处理厂工艺设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: