C语言课堂练习习题集

发布时间 : 星期三 文章C语言课堂练习习题集更新完毕开始阅读

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. 若有以下定义和语句: 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;

37

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 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); 38

______; }

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

A)&,<,|| B)&,||,< C) <,||,& D) <,&,|| 4. 在位运算中,操作数每左移2位,相当于。

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语言中,&的含义有______和______。

39

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

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

{ 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) 40

{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)以上叙述都不正确

联系合同范文客服:xxxxx#qq.com(#替换为@)