C语言812章练习题.docx
- 文档编号:28680177
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:14
- 大小:19.29KB
C语言812章练习题.docx
《C语言812章练习题.docx》由会员分享,可在线阅读,更多相关《C语言812章练习题.docx(14页珍藏版)》请在冰豆网上搜索。
C语言812章练习题
C语言程序设计分章节联系
八、编译预处理
一、选择题
1.以下叙述中正确的是_______.
a)在程序的一行上可以出现多个有效的预处理命令行
b)使用带参的宏时,参数的类型应与宏定义时的一致
c)宏替换不占用运行时间,只占用编译时间
d)在以下定义中CR是称为“宏名”的标识符
#defineCR045
2.以下程序的运行结果是________.
#defineMIN(x,y)(x)<(y)?
(x):
(y)
main()
{inti=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
}
a)10b)15c)100d)150
3.若有宏定义如下:
#defineX5
#defineYX+1
#defineZY*X/2
则执行以下printf语句后,输出结果是_______.
inta;a=Y;
printf("%d\n",Z);
printf("%d\n",--a);
a)7b)12c)12d)7
6655
4.请读程序:
#include
#defineMUL(x,y)(x)*y
main()
{
inta=3,b=4,c;
c=MUL(a++,b++);
printf("%d\n",c);
}
上面程序的输出结果是__________.
a)12b)15c)20d)16
5.对下面程序段:
#defineA3
#defineB(a)((A+1)*a)
...
x=3*(A+B(7));
正确的判断是_________.
a)程序错误,不许嵌套宏定义
b)x=93
c)x=21
d)程序错误,宏定义不许有参数
6.以下正确的描述是____________.
a)C语言的预处理功能是指完成宏替换和包含文件的调用
b)预处理指令只能位于C源程序文件的首部
c)凡是C源程序中行首以"#"标识的控制行都是预处理指令
d)C语言的编译预处理就是对源程序进行初步的语法检查
7.在"文件包含"预处理语句的使用形式中,当#include后面的文件名用<>(尖括号)括起时,找寻被包含文件的方式是_______.
a)仅仅搜索当前目录
b)仅仅搜索源程序所在目录
c)直接按系统设定的标准方式搜索目录
d)先在源程序所在目录搜索,再按照系统设定的标准方式搜索
九、指针
一、选择题
1.变量的指针,其含义是指该变量的_________.
a)值b)地址
c)名d)一个标志
2.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是____.
a)a,point,*&ab)&*a,&a,*point
c)*&point,*point,&ad)&a,&*point,point
3.若有说明;int*p,m=5,n;以下正确的程序段的是________.
a)p=&n;b)p=&n;
scanf("%d",&p);scanf("%d",*p);
c)scanf("%d",&n);d)p=&n;
*p=n;*p=m;
4.下面程序段的运行结果是_________.
char*s="abcde";
s+=2;printf("%d",s);
a)cdeb)字符'c'c)字符'c'的地址d)无确定的输出结果
5.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是________.
a)c=*p1+*p2;b)p2=cc)p1=p2d)c=*p1*(*p2);
6.以下正确的程序段是_________.
a)charstr[20];b)char*p;
scanf("%s",&str);scanf("%s",p);
c)charstr[20];d)charstr[20],*p=str;
scanf("%s",&str[2]);scanf("%s",p[2]);
7.若有说明语句
chara[]="Itismine";
char*p="Itismine";
则以下不正确的叙述是_______.
a)a+1表示的是字符t的地址
b)p指向另外的字符串时,字符串的长度不受限制
c)p变量中存放的地址值可以改变
d)a中只能存放10个字符
8.下面程序的运行结果是_______.
#include
#include
main()
{
char*s1="AbDeG";
char*s2="AbdEg";
s1+=2;s2+=2;
printf("%d\n",strcmp(s1,s2));
}
a)正数b)负数c)零d)不确定的值
9.下面程序的运行结果是_______.
#include
#include
fun(char*w,intn)
{chart,*s1,*s2;
s1=w;s2=w+n-1;
while(s1 } main() {char*p; p="1234567"; fun(p,strlen(p)); puts(p); } a)7654321b)1714171c)1711717d)7177171 10.若有以下定义,则对a数组元素的正确引用是_________. inta[5],*p=a; a)*&a[5]b)a+2c)*(p+5)d)*(a+2) 11.若有定义: inta[2][3],则对a数组的第i行j列元素地址的正确引用为______. a)*(a[i]+j)b)(a+i)c)*(a+j)d)a[i]+j 12.若有以下定义,则p+5表示_______. inta[10],*p=a; a)元素a[5]的地址b)元素a[5]的值 c)元素a[6]的地址d)元素a[6]的值 填空: 1.以下程序的功能是: 通过指针操作,找出三个整数中的最小值并输出。 请填空。 #include"stdlib.h" main() {int*a,*b,*c,num,x,y,z; a=&x;b=&y;c=&z; printf("输入3个整数: "); scanf("%d%d%d",a,b,c); printf("%d,%d,%d\n",*a,*b,*c); num=*a; if(*a>*b)__num=*b___; if(num>*c)___num=*c___; printf("输出最小整数: %d\n",num); } 2.下面程序段的运行结果是__hELLO! ______. chars[80],*sp="HELLO! "; sp=strcpy(s,sp); s[0]='h'; puts(sp); 3.下面程序段的运行结果是__ef______. charstr[]="abc\0def\0ghi",*p=str; printf("%s",p+5); 4.下面程序的功能是将两个字符串s1和s2连接起来。 请填空。 #include main() {chars1[80],s2[80]; gets(s1);gets(s2); conj(s1,s2); puts(s1); } conj(char*p1,char*p2) {char*p=p1; while(*p1)__p1++____; while(*p2){*p1=_*p2_____;p1++;p2++;} *p1='\0'; __p[79]=‘\0’__; } 5.若有定义: inta[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是______.*(a+5)的值是_________. 6.若有以下定义: inta[2][3]={2,4,6,8,10,12};则a[1][0]的值是_____.*(*(a+1)+0))的值是________. 7.以下程序将数组a中的数据按逆序存放,请填空。 #defineM8 main() {inta[M],i,j,t; for(i=0;i i=0;j=M-1; while(i { t=*(a+i);________;*(_______)=t; i++;j--; } for(i=0;i } 8.若有定义: inta[3][5],i,j;(且0<=i<3,0<=j<5),则a数组中任一元素可用 五种形式引用。 它们是: (1)a[i][j] (2)*(a[i]+j) (3)*(*______); (4)(*(a+i))[j] (5)*(____+5*i+j) 9.下面程序的运行结果是_________. main() {char*a[]={"Pascal","Clanguage","dBase","Coble"}; char(**p)[]; intj; p=a+3; for(j=3;j>=0;j--)printf("%s\n",*(p--)); } 十、结构体与共同体 一、选择题 1.C语言结构体类型变量在程序执行期间_________. a)所有成员一直驻留在内存中 b)只有一个成员驻留在内存中 c)部分成员驻留在内存中 d)没有成员驻留在内存中 2.下面程序的运行结果是___________. main() { structcmplx{intx; inty; }cnum[2]={1,3,2,7}; printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x); } a)0b)1c)3d)6 3.设有如下定义: structsk {intn; floatx; }data,*p; 若要使p指向data中的n域,正确的赋值语句是_______. a)p=&data.n; b)*p=data.n; c)p=(structsk*)&data.n; d)p=(structsk*)data.n; 4.以下对结构体变量stu1中成员age的非法引用是________. structstudent {intage; intnum; }stu1,*p; p=&stu1; a)stu1.ageb)student.age c)p->aged)(*p).age 5.下面对typedef的叙述中不正确的是______. a)用typedef可以定义各种类型名,但不能用来定义变量 b)用typedef可以增加新类型 c)用typedef只是将已存在的类型用一个新的标识符来代表 d)使用typedef有利于程序的通用和移植 6.以下scanf函数调用语句中对结构体变量成员的不正确引用是________. structpupil {charname[20]; intage; intsex; }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); 一、填空题 1.以下程序的运行结果是________. structn{ intx; charc; }; main() {structna={10,'x'}; func(a); printf("%d,%c",a.x,a.c); } func(structnb) { b.x=20; b.c='y'; } 2.若有定义: structnum {inta; intb; floatf; }n={1,3,5.0}; structnum*pn=&n; 则表达式pn->b/n.a*++pn->b的值是________,表达式(*pn).a+pn->f的值是________. 3.以下程序的运行结果是________. structks {inta; int*b; }s[4],*p; main() { intn=1; printf("\n"); 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,%d\n",(++p)->a,(p++)->a); } 4.结构数组中存有三人的姓名和年龄,以下程序输出三人中最年长者的姓名 和年龄。 请在_______内填入正确内容。 statistructman{ charname[20]; intage; }person[]={"li=ming",18, "wang-hua",19, "zhang-ping",20 }; main() {structman*p,*q; intold=0 p=person; for(;p_____;p++) if(old {q=p;______;} printf("%s%d",______); } 5.以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点 的指针(链表不带头结点)。 请在______内填入正确内容。 structlink {chardata; structlink*next; }; .... structlink*p,*first; intc=0; p=first; while(_____) {_______; p=_______; } 十二、文件 一、填空题 1.系统的标准数入文件是指_________. a)键盘b)显示器c)软盘d)硬盘 2.若执行fopen函数时发生错误,则函数的返回值是_______. a)地址值b)0c)1d)EOF 3.若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件 方式字符串应是______. a)"ab+"b)"wb+"c)"rb+"d)"ab" 4.fscanf函数的正确调用形式是_________. a)fscanf(fp,格式字符串,输出表列) b)fscanf(格式字符串,输出表列,fp); c)fscanf(格式字符串,文件指针,输出表列); d)fscanf(文件指针,格式字符串,输入表列); 5.fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是____. a)只写b)追加c)读或读写d)答案b和c都正确 6.函数调用语句: fseek(fp,-20L,2);的含义是_______. a)将文件位置指针移到距离文件头20个字节处 b)将文件位置指针从当前位置向后移动20个字节 c)将文件位置指针从文件末尾处后退20个字节 d)将文件位置指针移到离当前位置20个字节处 7.利用fseek函数可实现的操作_________. a)fseek(文件类型指针,起始点,位移量); b)fseek(fp,位移量,起始点); c)fseek(位移量,起始点,fp); d)fseek(起始点,位移量,文件类型指针); 8.在执行fopen函数时,ferror函数的初值是_______. a)TUREb)-1c)1d)0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 812 练习题