c语言 第8章 函数习题
c语言第8章 编译预处理及位运算习题答案

编译预处理习题一.单项选择题1.在宏定义#define A 3.897678中,宏名A代替一个()。
A)单精度数 B)双精度数 C)常量 D)字符串2.以下叙述中正确的是A)预处理命令行必须位于源文件的开头 B)在源文件的一行上可以有多条预处理命令C)宏名必须用大写字母表示D)宏替换不占用程序的运行时间3.C语言的编译系统对宏命令的处理()。
A)在程序运行时进行的B)在程序连接时进行的C)和C程序中的其它语句同时进行的D)在对源程序中其它语句正式编译之前进行的4.在文件包含预处理语句的中,被包含文件名用“< >”括起时,寻找被包含文件的方式是()。
A)直接按系统设定的标准方式搜索目录B)先在源程序所在目录搜索,再按系统设定的标准方式搜索C)仅仅在源程序所在目录搜索D)仅仅搜索当前目录5.以下说法中正确的是A)#define和printf都是C语句 B)#define是C语句,而printf不是C)printf是C语句,但#define不是D)#define和printf都不是C语句6.#define A 3.897678#include <stdio.h>main( ){ printf(“A=%f ”,A);}程序运行结果为()。
A) 3.897678=3.897678 B) 3.897678=A C) A=3.897678 D)无结果7.有宏定义:#define LI(a,b) a*b#define LJ(a,b) (a)*(b)在后面的程序中有宏引用:x=LI(3+2,5+8);y=LJ(3+2,5+8);则x、y的值是()。
A) x=65,y=65 B) x=21,y=65 C) x=65,y=21 D)x=21,y=218.有以下程序# define f(x) (x*x)main(){ int i1, i2;i1=f(8)/f(4) ; i2=f(4+4)/f(2+2) ;printf("%d, %d\n",i1,i2);}程序运行后的输出结果是A)64, 28 B)4, 4 C)4, 3D)64, 649.以下程序的输出结果是#define M(x,y,z) x*y+zmain(){ int a=1,b=2, c=3;printf(“%d\n”, M(a+b,b+c, c+a));}A) 19 B) 17 C) 15 D) 1210.有以下程序#define N 5#define M1 N*3#define M2 N*2main(){ int i;i=M1+M2; printf(“%d\n”,i);}程序编译后运行的输出结果是:A) 10 B) 20 C) 25 D) 3011.有如下程序#define N 2#define M N+1#define NUM 2*M+1#main(){ int i;for(i=1;i<=NUM;i++)printf(“%d\n”,i);}该程序中的for循环执行的次数是A) 5 B) 6C) 7 D) 812.位运算是对运算对象按二进制位进行操作的运算,运算的对象是____数据,以___的形式参与运算。
C语言习题及解答

第1部分课后练习题第1章C语言概述一、选择题1.一个C程序的执行是从。
A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束2.以下叙述正确的是。
.在C程序中,main函数必须位于程序的最前面A)C程序的每行中只能写一条语句B)C语言本身没有输入输出语句C)在对一个C程序进行编译的过程中,可发现注释中的拼写错误3.以下叙述不正确的是。
A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C)C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面4.C语言规定:在一个源程序中,main函数的位置。
A) 必须在最开始 B) 必须在系统调用的库函数的后面C) 可以任意 D) 必须在最后5.一个C语言程序是由。
A) 一个主程序和若干子程序组成 B) 函数组成C) 若干过程组成 D) 若干子程序组成6.C语言中的语句需要符号作为结尾。
A) : B) ; C)。
D) //7.C 语言程序中可以对程序进行注释,注释部分用符号_____括起来。
A)‘{‘ 和’}’ B)‘[‘和’]’C)“/*”和”*/” D)“*/”和”/*”8.C语言中注释的位置。
A) 必须在程序的最开始 B) 必须在程序的结尾C) 可以在程序的任何位置 D) 不可以写到main函数里面9.C语言程序能够在不同的操作系统下面运行,这说明c语言具有很好的。
1A) 适应性 B)移植性 C)兼容性 D) 操作性10.C语言经过编译后生成的文件的后缀是。
A).c B) .cpp C) .exe D) .obj11.C语言编译程序的首要工作是。
A) 检查C语言程序的语法错误 B) 检查C语言程序的逻辑错误C)检查程序的完整性 D) 同时检查语法和逻辑错误12. C语言经过链接后生成的文件的后缀是。
C语言程序设计-第8章 练习题

一、单项选择题题目1标准输出设备显示器的文件流标识符是()。
a. stdinb. stdoutc. stderrd. stdio题目2表示文件结束符的符号常量EOF的值为()。
a. 0b. -1c. 1d. 127题目3假定一个磁盘数据文件占用n个字节的存储空间,则按字节进行编址的范围是()。
a. 1˜(n-1)b. 0˜(n-1)c. 0˜nd. 1˜n题目4在C语言中,为只写操作打开一个文本文件的方式为()。
b. "w"c. "r"d. "a"题目5在C语言中,文本文件的打开方式共有()。
a. 6b. 9c. 12d. 3题目6在C语言中,为读和写操作打开一个二进制文件,若文件不存在则自动建立空文件的打开方式为()。
a. "ab+"b. "w+"c. "rb+"d. "wb+"题目7从一个文本文件中读取以换行符结束的一个字符串的系统函数为()。
a. fgets()b. fputc()d. fputs()题目8向一个文本文件中写入一个字符的系统函数为()。
a. fputs()b. fputc()c. fgetc()d. fgets()题目9向一个二进制文件中写入数据的系统函数为()。
a. fputc()b. fwrite()c. fread()d. fputs()题目10从一个二进制文件中读取数据的系统函数为fread(),它的参数有()。
a. 2个b. 4个c. 3个d. 5个二、判断题题目11一个磁盘数据文件的文件名由文件主名和扩展名所组成,其中间用圆点分开。
对错题目12当向字符文件输出一个换行符时,实际将输出的是回车符或换行符。
对错题目13C语言系统中提供一个用来描述文件属性的类型标识符为FILE。
对错题目14在数据文件打开方式字符串中,字符r、w和a具有确定的含义,分别代表读、写和追加方式。
c语言第8章练习题--指针

1、int *p 的含义是(B)A.p是一个指针, 用来存放一个整型数B.p是一个指针, 用来存放一个整型数据在内存中的地址C.p是一个整型变量D. 以上都不对2、以下函数用来求出两整数之和,并通过形参将结果传回,请填空。
void func(int x,int y, ___int*____ z){ *z=x+y; }3、有如下程序段(B)int *p,a=10,b=1;p=&a; a=*p + b;执行该程序段后,a的值是A. 12B. 11C. 10D. 编译出错4、若己定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是( C)A) p+1B) a+1C) a++D) ++p5、以下程序运行后的输出结果是(A)void main( ){ int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;for(p=a;p<a+10;p++) printf("%d,",*p);}A)1,2,3,4,5,6,7,8,9,0,B)2,3,4,5,6,7,8,9,10,1,C)0,1,2,3,4,5,6,7,8,9,D)1,1,1,1,1,1,1,1,1,1,6、下面程序的输出是(D)void prtv(int *x)printf("%d\n", ++*x);}main(){ int a=25;prtv(&a);}A) 23 B) 24 C) 25D) 267、有以下函数(B)char fun(char *p){ return p; }该函数的返回值是A) 无确切的值B) 形参p中存放的地址值C) 一个临时存储单元的地址D) 形参p自身的地址值8、下列程序的输出结果是(7)#include<stdio.h>void fun (int *p1, int *p2){ if (*p1>*p2) printf ("%d\n",*p1);else printf ("%d\n",*p2);}void main ( ){ int a=3,b=7;fun (&a, &b);}9、下列程序的运行结果是(B)void fun(int *a, int *b){ int *k;k=a; a=b; b=k;}main(){ int a=3, b=6, *x=&a, *y=&b;fun(x,y);printf("%d %d", a, b);}A) 6 3 B) 3 6 C) 编译出错D) 0 010、以下程序调用findmax函数返回数组中的最大值(B)findmax(int *a,int n){ int *p,*s;for(p=a,s=a; p-a<n; p++)if ( ) s=p;return(*s);}main(){ int x[5]={12,21,13,6,18};printf("%d\n",findmax(x,5));}在下划线处应填入的是(B)A) p>s B) *p>*s C) a[p]>a[s] D) p-a>p-s11、下列程序段的输出结果是(A)void fun(int *x, int *y){ printf("%d %d", *x, *y); *x=3; *y=4;}main(){ int x=1,y=2;fun(&y,&x);printf("%d %d",x, y);}A) 2 1 4 3 B) 2 1 3 4 C) 1 2 1 2 D) 2 1 1 212、以下程序执行后输出的结果是___84________。
2016C语言习题全集及答案:第八单元结构体和共用体

第八单元结构体和共用体一、选择题1、说明一个结构体变量时系统分配给它的内存是。
A. 各成员所需要内存量的总和B. 结构体中第一个成员所需内存量C. 成员中占内存量最大者所需的容量D. 结构中最后一个成员所需内存量2、 C 语言结构体类型变量在程序执行期间。
A. 所有成员一直驻留在内存中B. 只有一个成员驻留在内存中C. 部分成员驻留在在内存中D. 没有成员驻留在内存中3、设有以下说明语句struct stu { int a ; float b ; } stutype ;则下面的叙述不正确的是。
A. struct 是结构体类型的关键字B. struct stu 是用户定义的结构体类型C. stutype 是用户定义的结构体类型名D. a 和b 都是结构体成员名4、程序中有下面的说明和定义struct abc { int x;char y;}struct abc s1,s2;则会发生的情况是。
A. 编译出错B. 程序将顺利编译、连接、执行C. 能顺利通过编译、连接、但不能执行D. 能顺利通过编译、但连接出错5、有如下定义struct person { char name[9]; int age;};struct person class[10]={ " Johu", 17,"Paul", 19,"Mary", 18,"Adam",16};根据上述定义,能输出字母M 的语句是。
A. prinft(" %c\n",class[3].name);B. printf(" %c\n",class[3].name[1]);C. prinft(" %c\n",class[2].name[1]);D. printf(" %c\n",class[2].name[0]);6、下面程序的输出是。
C语言全部章节习题集(参考答案)

选择结构答案
一、单项选择题
1.B 2.A 3.D 4.C 5.D 6.B 7.C
二、填空题
1. 5 5 4
5 5 4
3 3 4
2. 4 0
3. VeryGood
Good
VeryGood
A. 8 B. 4 C. 2 D. 出错
14、设a=1,b=2,c=3,d=4,则表达式:a<b? a : c<d? a : d的结果为( D )。
A. 4 B. 3 C. 2 D. 1
15、设a 为整型变量,不能正确表达数学关系:10<a<15的 C 语言表达式是( A )。
{ float a,b,temp;
printf("input a and b:");
scanf("%d,%d",&a ,&b);
temp = a; a = b; b = temp;
printf("a=%d , b=%d\n", a , b);
scanf(“%f”,&t);
if(t>=90) ch=’A’;
else if(t>=80) ch=’B’;
24、下列不正确的转义字符是( C )。
A. \\ B. \' C. 074 D. \0
二、填空题:
1、C 语言中的逻辑值“真”是用 1 表示的,逻辑值“假”是用 0 表示的。
2、若x和n都是int型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为 0 。
5、判断变量 a、b 的值均不为 0 的逻辑表达式为a!=0&&b!=0 。
C语言课后习题答案

1.1选择题:⑴一个C程序的执行是(A)。
A)从main()函数开始,直到main()函数结束B)从第一个函数开始,直到最后一个函数结束C)从第一个语句开始,直到最后一个语句结束D)从main()函数开始,直到最后一个函数结束⑵计算机能直接执行的语言是(B)。
A)汇编语言B)机器语言C)高级语言D)A和B⑶一个C程序是由(C)。
A)一个主程序和若干子程序组成B)若干过程组成C)一个或多个函数组成D)若干子程序组成⑷下列说法正确的是(B )。
A)C程序书写格式限制严格,一行内必须写一个语句B)C程序书写比较自由,一个语句可以分行写在多行上C)C程序书写格式限制严格,要求一行内必须写一个语句,并要求行号D)C程序中一个语句不可以分写在多行上1.2填空题:⑴构成C语言程序的基本单位是函数。
⑵C语言源程序文件的后缀是.c,经过编译后,生成文件的后缀是,obj,经过连接后,生成文件的后缀是.exe。
⑶在TURBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是.exe。
⑷一个C语言程序必须有而且只能有一个主函数,它的函数名为main。
⑸一个函数有两部分组成,第一部分称为函数首部;第二部分称为函数体。
⑹函数体由符号{开始,用符号}结束。
函数体的前面是声明部分,其后是执行部分。
1.3上机编辑、调试、运行下列程序,发现错误,并改正之。
/*求1 + 2 + 3 + ……+ 10的和*/#include <stdio.h>main(){int sum,n;sum = 0;n = 1;while(n < 10){sum = sum + n;n = n + 1;}printf("sum = %d \n",sum);}2.1选择题⑴ 在以下标识符中,( B )是合法的用户标识符。
A ) a#bB ) getchC ) voidD ) ab*⑵ 不合法的八进制数是( B )。
C语言程序设计(第八章)

的读写函数。 每次可从文件读出或向文件写入一个字符。
第八章
1.读字符函数fgetc()
fgetc() 函数的功能是从指定的文件中读一个字符,函
数调用的形式为:
字符变量 = fgetc(文件指针);
例如:
ch = fgetc(fp);
的意义是从打开的文件fp中读取一个字符并送入ch中 。
(1)字符读/写函数 :fgetc()/fputc()
(2)字符串读/写函数:fgets()/fputs()
(3)数据块读/写函数:freed/()fwrite()
(4)格式化读/写函数:fscanf()/fprinf()
以上函数原型都在头文件stdio.h中加以声明。
第八章
8.5.1字符读/写函数 :fgetc()/fputc()
关闭文件则断开指针与文件之间的联系,禁止再对该文
件进行操作。
第八章
8.3.1 文件打开的函数fopen()
open函数用于打开一个文件,其调用的一般形式为: 文件指针名 = fopen(文件名, 使用文件方式);
“文件指针名”:必须是被说明为FILE 类型的指针变量。
“文件名”:被打开文件的文件名,“文件名”是字符串常 量、字符数组或字符指针。 “使用文件方式”:指文件的类型和操作要求。
/* 输出系统提示信息 */
上面程序段的意义是,如果返回的指针为空,表示不能 打开test.dat文件,则给出提示信息“打开文件test.dat出 错!”,然后输出系统提示信息,当用户从键盘敲任一键后 执行exit(1)退出程序 。
第八章
8.3.2 文件关闭的函数fclose()
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第8章函数习题A卷1. 单项选择题(1)C 语言总是从函数开始执行。
AA. mainB. 处于最前的C.处于最后的D. 随机选一个(2)函数在定义时,省略函数类型说明符,则该函数值的类型为。
AA. intB. floatC. longD. double(2)以下函数,真正地没有返回值。
BA. int a(){int a=2;return (a);}B. void b(){printf("c");}C. int a(){int a=2;return a;}D. 以上都是(3)在C 语言中,有关函数的说法,以下正确的是。
AA. 函数可嵌套定义,也可嵌套调用B. 函数可嵌套定义,但不可嵌套调用C. 函数不可嵌套定义,但可嵌套调用D. 函数不可嵌套定义,也不可嵌套调用(4)以下函数调用语句中,含有实参的个数为。
Cfun((2,3),(4,5+6,7));A. 1B. 2C. 5D. 6(5)函数调用可以在。
DA. 函数表达式中B. 函数语句中C. 函数参数中D. 以上都是(6)被调函数返回给主调函数的值称为。
CA. 形参B. 实参C. 返回值D. 参数(7) ,可以不进行函数类型说明。
DA. 被调函数的返回值是整型或字符型时B. 被调函数的定义在主调函数定义之前时C. 在所有函数定义前,已在函数外预先说明了被调函数类型D. 以上都是(8)被调函数通过语句,将值返回给主调函数。
DA. ifB. forC. whileD. return(9)被调函数调用结束后,返回到。
DA.主调函数中该被调函数调用语句处B.主函数中该被调函数调用语句处C.主调函数中该被调函数调用语句的前一语句D.主调函数中该被调函数调用语句的后一语句(10)以下对C语言函数的有关描述中,正确的是。
AA. 在C 中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B. C函数既可以嵌套定义又可递归调用C. 函数必须有返回值,否则不能使用函数D. C程序中有调用关系的所有函数必须放在同一个源程序文件中(11)C 语言中函数的隐含存储类型是。
CA. autoB. staticC. externD. 无存储类型(12)能把函数处理结果的两个数据返回给主调函数,在下面的方法中不正确的是。
AA. return 这两个数B. 形参用两个元素的数组C. 形参用两个这种数据类型的指针D. 用两个全局变量(13)C语言可执行程序从什么地方开始执行( )。
CA. 程序中第一条可执行语句B. 程序中第一个函数C. 程序中的main函数D. 包含文件中的第一个函数(14)有一个函数原型如下所示,则该函数的返回类型为( ) 。
Cabc(float x,float y);A. voidB. doubleC. intD. float2. 填空题(1) 变量的作用域主要取决于变量,变量的生存期既取决于变量,又取决于变量。
所处的位置,所处的位置,存储类型(2) 说明变量时,若省略存储类型符,系统默认其为存储类别,该存储类别的类型符为:。
动态,auto(3) 静态型局部变量的作用域是,生存期是。
它所在的局部,整个程序(4) 函数中的形参和调用时的实参都是数组名时,传递方式为,都是变量时,传递方式为。
址传递,值传递(5) 函数的形式参数的作用域为,全局的外部变量和函数体内定义的局部变量重名时,_________变量优先。
该函数中,局部(6) 若自定义函数要求返回一个值,则应在该函数体中有一条语句,若自定义函数要求不返回一个值,则应在该函数说明时加一个类型说明符。
return,void(7) 若函数的形式参数是指针类型,则实参可以是或。
指针,数组名(8) 函数的参数为char *类型时,形参与实参结合的传递方式为。
址传递(9) 函数的实参为常量时,形参与实参结合的传递方式为。
值传递(10) 下面这个函数的功能是求两个整数的积,并通过形参传回结果,请填空。
int int int* *resultvoid mul(___x,___y,___result){___=x*y;}3. 判断题(× )(1) 函数说明指的是在程序中设定一个函数模块。
(√ )(2) 形参只有在被调用时才分配存储空间。
(× )(3) 在C的函数中,最好使用全局变量。
(× )(4) 在调用函数时,实参传值给形参,调用结束时,形参值传给实参。
(√ )(5) 所有函数定义都是并行的,相互独立的。
(× )(6) 函数的隐含存储类型是extern。
(× )(7) 形参可以是常量、变量或表达式。
(× )(8) 函数调用可以作为一个函数的形参。
(√ )(9) C语言规定,实参应与其对应的形参类型一致。
(× )(10) 定义函数时,形参的类型说明可以放在函数体内。
4. 程序填空题(1) 对数组按值从大到小的顺序排序后输出,请填空。
#include <stdio.h>void main(){float a[7]={2,6,3,8,3,12,9};int i ;void sort(float*,int);;for(i=0;i<7;i++) printf("%f ",a[i]); printf("\n");}void sort( ){int i,j,k; float t;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if( ) k=j;{ t=*(p+i); *(p+i)=*(p+k); *(p+k)=t; }}}sort(a,7) float* p,int n *(p+k)<*(p+j) if(k!=i)(2) 下列函数在n 个元素的一维数组中,找出最大值、最小值并传送到调用函数,请填空。
#include <stdio.h>void find(float *p, int max, int min, int n){int k;*max=*p;for(k=1;k<n;k++){t=*(p+k);if( ) *max=t;if(t<*min) *min=t;}}float t; *min=*p; *max<tB卷5. 写出下列程序运行结果(1)main(){int i=1,p;p=fun(i,i+1);printf("%d\n",p);}int fun(int a,int b){int f;if(a>b)f=1;else if(a==b)f=0;elsef=-1;return f;}-1(2)键盘输入abcdef<CR> #include <stdio.h>void fun( ){char c ;if((c=getchar( ))!='\n')fun( ) ;putchar(c);}void main( ){ fun( ); }fedcba(3)#include <stdio.h>#define C 5int x=1,y=C;void main( ){int x;x=y++; printf("%d %d\n", x,y);if(x>4) { int x ; x=++y; printf("%d %d\n",x,y) ; } x+=y--;printf("%d %d\n",x,y);}5 67 712 6(4)#include <stdio.h>int c , a=4 ;func(int a , int b){ c=a*b ; a=b-1 ; b++ ; return (a+b+1) ; } void main( ){int b=2 , p=0 ; c=1 ;p=func(b , a) ;printf("%d,%d,%d,%d\n", a,b,c,p) ;}4,2,8,9(5)unsigned fun6(unsigned num){unsigned k=1;do { k*=num%10; num/=10; } while(num);return k;}void main( ){unsigned n=26;printf("%d\n", fun6(n));}12(6)#include <stdio.h>int max(int a,int b);main(){int x,y,z,t,m;scanf("%d,%d,%d",&x,&y,&z);t=max(x,y);m=max(t,z);printf("%d",m);}int max(int a,int b){if(a>b)return(a);elsereturn(b);}运行时若输入:10,15,9 则输出:___ 15运行时若输入:300,129,300 则输出:___ 300 (7)#include <stdio.h>long sum(int a,int b);long factorial(int n);main(){int n1,n2;long a;scanf("%d,%d",&n1,&n2); a=sum(n1,n2);printf("a=%1d",a);}long sum(int a,int b){long c1,c2;c1=factorial(a);c2=factorial(b);return(c1+c2);}long factorial(int n){long rtn=1;int i;for(i=1;i<=n;i++)rtn*=i;return(rtn);}运行时若输入:2,3 则输出:___ 8运行时若输入:0, 5 则输出:___ 121 (8)#include <stdio.h>int s();int x,y;main(){int n;x=1;y=2;n=s();printf("x=%d,y=%d,n=%d",x,y,n);}int s(){int z;x=3;y=4;z=x+y;return(z);}程序运行后输出:___ 3,4,7(9) 以下程序的输出结果是a=___,b=___,c=___。
#include <stdio.h>int func(int a,int *p);void main(){int a=1,b=2,c;c=func(a,&b);b=func(c,&a);a=func(b,&c);printf("a=%d,b=%d,c=%d",a,b,c); }int func(int a,int *p){a++;*p=a+2;return(*p+a);}36 16 19。