C语言812章练习题.docx

上传人:b****5 文档编号:28680177 上传时间:2023-07-19 格式:DOCX 页数:14 大小:19.29KB
下载 相关 举报
C语言812章练习题.docx_第1页
第1页 / 共14页
C语言812章练习题.docx_第2页
第2页 / 共14页
C语言812章练习题.docx_第3页
第3页 / 共14页
C语言812章练习题.docx_第4页
第4页 / 共14页
C语言812章练习题.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

C语言812章练习题.docx

《C语言812章练习题.docx》由会员分享,可在线阅读,更多相关《C语言812章练习题.docx(14页珍藏版)》请在冰豆网上搜索。

C语言812章练习题.docx

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(oldage)

{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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1