电大 2014年7月 c语言 考试复习

时间:2019-05-12 15:01:23下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《电大 2014年7月 c语言 考试复习》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《电大 2014年7月 c语言 考试复习》。

第一篇:电大 2014年7月 c语言 考试复习

一、单选题(每小题2 分,共20 分)

1.程序运行中需要从键盘上输入多于一个数据时,各数据之间默认使用(D)符号作为 分隔符。

A.空格或逗号 c.逗号或分号 B.逗号或回车D.空格或回车

2.逻辑表达式(x>O && x<=10)的相反表达式为(A)。

A.x<=O 11 x>lOc.x<=O 11 x<=10B.x<=O && x>lOD.x>O && x>lO

3.当处理一个问题时的循环次数已知时,最好采用(A)语句来解决。

A.for B.whilec.do-while D.switch

4.假定i 的初值为0,则在循环语句“while(i

A.n-1c.n+1B.nD.n/2

5.假定一个二维数组的定义语句为“int a[3][4]={{3,4,{2,8,6}} 户,则元素a[l][l] 的值为(D)。

A.2C.6B.4D.8

6.在下列选项中,不正确的画数原型格式为(C)。

A.int FunctionCint a);B.void Function(char);

c.int Function(a 祷b);D.void int(double 赞a);

7.假定p 是一个指向float 类型的数据指针,则p+1 所指向的数据的地址比p 所指向的 数据的地址大(C)个字节。

A.1 B.2C4D8

8.假定有一条定义语句为”int m=7,铸p 户,则给p 赋值的正确表达式为(B)。

A.p=m B.p=&.mc.铸p=&.m D.p= 铃m

9.假定指针变量p 定义为“int 祷p=malloc(sizeof(i nt));”,要释放p 所指向的动态存储 空间,应调用的函数为(A)。

A.free(p)c.free(祷p)B.delete(p)D.free(&'p)

10.C 语言中的系统函数fopenO 是(D)一个数据文件的函数。

A.读取c.关闭B.写入D.打开

1.C语言源程序文件的缺省扩展名为(D)。

A.cppB.exeC.objD.c

2.设x 和y 均为逻辑值,则x &.&.y 为真的条件是(A)。

A.它们均为真B.其中一个为真C.它们均为假D.其中一个为假

3.在下列的符号常量定义中,正确的定义格式为(C)。

A.# define MlC.# define M3 10B.canst int M2 20D.canst char mark

4.for 循环语句能够被改写为(D)语句。

A.复合B.ifC.switch D.while

5.在下面的一维数组定义中,错误的定义格式为(C)。

A.int a[J === {l ,2, 3};C.int a[J;B.int a[lOJ==={O};D.int a[5J;

6.若有一个函数原型为“double * function()“,则其返回值类型为(B)。

A.实数型B.实数指针型C.函数指针型D.数组型

7.在C语言中,所有预处理命令都是以(B)符号开头的。

A., B.#C.衣U.@

8.假定整数指针p所指数据单元的值为30, p+ 1 所指数据单元的值为40,则执行 ,p++后,p所指数据单元的值为(A)。

A 40 B.30C.70 D.10

9.若要使p指向二维整型数组a[10][20],则p的类型为(D)。

A.mnt *B.m nt * *C.mnt*[20二D.mnt

(二)[20 〕

10.表示文件结束符的符号常量为(C)。

A.eof B.EofC.EOF U.feof由C语言目标文件连接而成的可执行文件的缺省扩展名为(B

A cppB exeC objD c

2.设有两条语句为“mt a~3;a 十二a * a;”,则执行结束后,a的值为(A

A 12B 18C 15D 27

3.带有随机函数调用的表达式rand()%2o 的值在(C)区间内。

A.1~19B 1~20C.0-49D.0-20

4.在for循环语句“for(i~0;i

A.nB.n+1C.n 一1D.n 一2

5.在下列的字符数组定义中,存在语法错误的是(D

A.char a[20] 二“abcdefg“;C.char a[15]={'1','2')

B.char a[]=”x+y 一55.“;D.char a[10]='5'

6.在下面的画数原型声明中,存在语法错误的是(C)

A.int AA(int a ,int b);C.int AA(int a;int b;);

B.int AA(i时,int);D.int AA(int a.int);

7.假定a 为一个数组名,则下面存在错误的表达式为(B).A.a[i]C.*aB.*a+ +D.*(a+ l)

8.假定有定义为”int a [IO].x,警pa=a;“,若要把数组a中下标为3的元素值赋给x,则不正确的赋值为(D).A.x=pa[3] B.x= *(a+3)C.x=a[3] D.x= *pa+3

9.字符串”y = % d n“的长度为(A

A.5C.4B.6D.3

10.向一个二进制文件中写人信息的画数为(D)。

A.fgetsO B.fputsOC.freadO D.fwriteO

二、填空题(每小题2 分,共26 分)

11.C 语言中的每条简单语句以;作为结束符。

12.C 程序中的所有预处理命令均以 #字符开头void

14.十进制数25 表示成符合C 语言规则的十六进制数为 0x19

15.关系表达式a>b 的相反式为 a<=b保留字来定义函数类型。

16.执行”typedef int DataType;“语句后,DataType 与int 保留字具有相同作用。

17.假定一维数组的定义为” char 祷a[8J 户,则该数组所占用的存储空间的字节数为32

18.假定二维数组的定义为“double a[MJ[NJ 户,则所有元素的列下标的取值范围在0~N-1

19.存储一个空字符串需要占用1个字节。

2:0.strcpy 函数用于把一个字符串拷贝到另一个字符数组空间中。

2: 1.程序中的每个编译单位是一个程序文件

2:2.假定a 是一个一维数组,则a[iJ 的指针访问方式为*(a +i)

2:3.执行int 叩= malloc(sizeof(i nt))操作得到的一个动态分配的整型对象为 *P。

11.用于输出表达式值的标准输出函数的函数名是 printf

12.C 语言中的每个程序文件在编译时可能出现有error 类型的错误,它属于(致命性/警告性)致命性

13.已知’A z’的ASCII码为65-90,当执行“tnt x二'C'+3;”语句后x的值为70 14 表达式(int)14.6 的值为 14假定不允许使用逻辑非操作符,则关系表达式x + y> 5 的相反表达式为x+y<=5 16 假定x一5,则执行 “a=(x? 10:20);” 语句后a的值为 10假定一维数组的定义为“char 二a [ M 〕;”,则该数组所占存储空间的字节数为 4*M

18.存储字符串”犷需要至少占用存储空间中的_2

19.strlen()函数用于计算一个字符串的 长度在C语言中,一个函数定义由函数头和 函数体 这两个部分组成。

21假定p所指对象的值为25,p 十I所指对象的值为 46,则执行表达式*(p++)后,p所指对象的值为 46

22.假定p是一个变量,则该变量的地址表示为 &p。

23.把间接访问表达式p->narne 改写成对应的直接访问表达式为('p).name

11.一个画数定义由 函数头 和函数体两部分组成。

12.执行“p:r;intf(”%c飞'F' 一2)产语句后得到的输出结果为 D

13.int 数据类型的长度为 4

14.表达式25/4 的值为 6

15.若x=5,y=10,则执行“if(x<=y)c=3;else c=8;”语句后,c 的值为 3

16.保留字case 和default 出现在(if/switch/for/while)语句中.switch

17.在画数调用中执行到return数的执行过程,返回到调用该画数的原来位置。return

18.假定二维数组的定义为“char arM][N] 户,则该数组共包含有个字符元素。M * N

19.存储字符' a ' 需要占用存储器的个字节空间。1

20.若一个字符串的长度为n,则存储它的字符数组的长度至少为 n+11.假定p 所指对象的值为25,p+1 所指对象的值为46,则执行表达式(铃p)十+ 后,p所指对象的值为 26

22.假定p 是一个指向整数对象的指针,则用表示该整数对象。*P

23.假定一个结构类型的定义为”struct B{int a[5];char b;} 户,则该类型的理论长度为 24

三、写出下到每个程序运行后的输出结果{每小题6 分,共30 分)

24.# includevoid main(){int i, s=O;for(i=l;s<15;i++)if(i%2= =0)s+ =i;print f(“s=%dn”,s);输出结果: S=20

25.# includevoid main(){int a[9J={36 , 25 , 48 , 24 , 55 , 40 , 18 , 66 , 20};int i=O , k=-l , x=40;while(a[iJ!=x && i<9)i++;if(a[iJ= =x)k=i;printf(“K= %dn” ,k);

输出结果: k=5

26.# includevoid SB(char ch){switch(ch){case 'A': case'a':print f('1');break;case 'B' : case'b':printf(“2”);break;default ,print f(“3”);break;void main(){char al = , a' ,a2 = 'B' ,a3 =f';SB(al);SB(a2);SB(a3);printf(“n”);

输出结果:123

27.# include# defjne M 6void main()int i ,xl=0 ,x2=0;int a[MJ={10 ,15 ,22 ,24 ,12 ,30};for(i=O;i

输出结果:4766

28.:# includestruct Worker {char name[15];int 吨的float pay;};void main(){ struct Worker x= {”wanghua“ ,48 ,2500};struct W orker y,*p;y=x;p=&.x;

piintf(”%d %7.2f n“ , y.age+p 一>age,p 一>pay+60);

输出结果: 962560.00

24.#includevoid rnain()mnt x=5switch(2,x一1){case :printf(”%d“,x);break;case;printf(”%d',2*x);break;case :printf(“% d”,3!x);break;default

:pprirnintft(f“(%”%s,s, ,I ,default“);

输出结果:default

25.# includevoid rnain(){mnt fi=1,f2,i;printf(” /c d“,11);Ior(i=1;i<4;i++)棍 f2=3,fi 十1;printf(”%d'',f2);11=12;

输出结果:1 4 13 40

26.#includevoid main()

mnt i,cI =0,c2 = 0;for(i=0;i<8;i 十+)i f(a 仁i〕% 2==I)cl++:else c2++;

print f(“% d,%d n”,ci,c2);}

输出结果:4,4

27.# include#includevoid rnain(){char s[]='123456789“;

mnt I,n= sirlen(s);for(i=0;i

输出结果:987654321

28.#includemnt LB(int*a,mnt n){mnt *p,s~1;for(p=a;p

retUrn S;}void main(){mnt a[ 〕= {1,2,3,4,5};mnt b=1.B(a,5);prlntf(', o=%dn“,b);} 输出结果:h=120

24.*1= includevoid mainO {int n=4, y=O;while(n-一)y+=3;printf(”y= %dn飞y);输出结果 y=12

25.*1= includevoid mainOint i , s=O;for(i=l;i<8;i++)if

输出结果 s=15

26.# includevoid mainO {char a[J=飞cdbfkmd飞int i1=0, i2=0, i=O;while(a[iJ){ if(a[i]<'d')i1++;else i2 十+;i 十十s printf(“%d%dr{' ,i1,i2);

输出结果 3 5

27.# includevoid mainO {int a [8J= 悦,8,12,16,20,24,钮,32};int * p=a, s=O;do {s+= 铃p;p+=3;}while(p

输出结果 s=48

28.# includestruct Worker { char name[15J;int age;double pay;};void mainO { struct Worker a[4J = {{“abc”,20,2400}, {飞efa飞' 50,3 6 00 },{“ghin飞40,1800} , {”jklt“, 36 ,2200}};int i;double s=O;for

输出结果 s=10000.00

四、写出下到每个函数的功能{每小题6 分,共12 分}

29.int WC(int a口,int n , int k){int i, c=O;for(i=O;i = k)c+ +;return c;函数功能: 统计并返回一维整型数组a[n] 中大于等于k 的元素的个数。

30.假定结构类型struct Worker 的定义体为: {char name[15J;int age;float pay;}。

void QA(struct Worker a[J , int n)mt 1;for(i=O;i

29.mnt FH(){mnt x,y=o;scanfC'%d”,&x);while(x>0)(y+=X;scanf(“%d”,&x);return y;函数功能:求出从键盘上输人的一批整数的总和,以小于等于。作为结束键盘输人的标志。

30.假定结点的结构类型用lntNode 表示,它的数值域为data,链接指针域为next, 请根 据下面函数定义写出相应的功能。

mnt FF(struct IntNode * f)//f 为指向一个单链表的表头指针mnt n=0if(f 一= NULL)return 0;while(f){n++;f=f 一> next;return n;}

函数功能:求出并返回由f所指向的单链表中所含结点的个数。

29.假定使用SF(30)调用下面画数,则得到的输出结果为void SF(int x){int i=2;while(x>= i){if(x%i= =0){printf(“%d”,i);x/=i;}i++;}}

函数功能2 3 5

30.假定结点的结构类型为IntNode,它的数值域为data,链接指针域为next,请指出下面函数的功能。void QC(struct IntNode 铃。{ Ilf 为一个单链表的表头指针while(f){printf(“%d ” ,f一>data);f=f 一>next;}}

函数功能遍历输出由表头指针f 所指向的单链表中每个结点的data 域的值。

五、按题目要求编写程序或函数{每小题6 分,共12 分}

31.编写一个程序,输出50 以内(含50)的、能够被3 或者5 整除的所有正整数。# include

void mainO{

mt 1;

for(i=3;i<=50;i++)

if(i%3= =0 11 i%5= =0)printf(“%d ” ,i);

printf(”n“);}

32.按照”int FF(int a口,int n)“ 的函数声明,编写出递归函数的定义,求出数组a 中所有n 个元素之积并返回。

int FF(int a[],int n)

{if(n<=O){printf(”n值非法n“),exit(l);}

if(n= = 1)return a[O];

else return a[n-1] *FF(a,n-1);}

31.根据函数原型”double Mean(double a[Mi[N],int m, mnt n)“,编写函数定义,要求返 回二维数组a[m][n」中所有元素的平均值。假定在计算过程中采用变量S存放累加值,采用

和i作为扫描数组的循环变量。

double Mean(double a[M][N],mrlt m,mnt n)

{ tnt i.j

double s=0.0

for(i = 0;i

for(j = 0;i

return s/(m,n);}

32.根据函数原型”mnt MM(int a[] ' mnt m)“,编写函数定义,计算并返回数组a[m]中所 有元素的最大值的平方值,假定用变量max保存最大值。

mnt MM(int a[j,mnt m)

{tnt t,max =a[0三;

for(i=1 i

if(a[i]>max)max =a[ i];

return max * max 1/6}

31.编写一个主函数,利用while 循环计算1+2+4+ „+21 0 的值,最后输出计算结果。假定计数变量用i表示,每次累乘2的变量用p 表示,每次累加一个数据项值的变量用sum void mainO

{int i=l , p=l , sum=l;

while(i<=10){p *=2;sum+=p;i++;}

printf(“SUM=%dn”, sum);}

32.根据函数原型”void DD(int a口,int n , int MM)"编写函数定义,幸IJ 用双重for 循环统计出数组a [ n]中任何两个不同元素的值等于MM值的配对个数,然后返回统计结果。如假定aCi] +a[j]等于MM,同时i手j,则为一个配对。

int DD(int a口,int n , int MM)

{int i ,j ,c=O;

for(i=O;i

for(j=i+1;j

if(a[iJ+a[jJ= =MM)c++;

return c;}

第二篇:C语言考试复习要点

C语言考试复习要点:

一. 题型:

1.选择题——最基本的知识点,概念——共20分

2.程序运行结果分析——10道程序题——共30分

(来源于课本例题和作业,复习的重点是多看课本程序和作业程序)

3.程序填空题——一个完整的程序挖掉一些空格——共四个程序,10个空格——共30分

4.编程题——有两道——一道课后作业,比较容易,8分——另外一道比较难,12分——共20分

二.

了。

2.第五章到第八章的内容是核心内容,要重点复习,题型覆盖所有题目。

3.第九章主要复习宏定义和宏替换。

4.第十章考的不多,集中在10.2和10.3两节。

复习策略: 1.第一章到第四章的内容比较少,基本是考概念一些小题,以选择题为主,浏览一下就行

第三篇:C语言考试

《C语言程序设计》课程考试题库

第一章 C语言概述

一、单项选择题

1、C 语言规定,必须用()作为主函数名。A.Function B.include C.main D.stdio 答案:C

2、()是C 程序的基本构成单位。

A.函数 B.函数和过程 C.超文本过程 D.子程序 答案:A

3、在 C 语言中,每个语句和数据定义是用()结束。A.句号 B.逗号 C.分号 D.括号

二、判断题

1、一个 C 程序可以包含任意多个不同名的函数,但有且仅有一个主函数。()答案:正确

2、C 语言规定: 在一个源程序中, main函数的位置必须在最开始。()答案:错误

3、在 C 程序中语句是以分号结束的。()

答案:正确

第二章 程序的灵魂——算法

一、单项选择题

1、一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是()A.有0个或多个输入 B.有0个或多个输出 C.有穷性 D.可行性 答案:B

2、以下叙述中正确的是()。A.C语言比其它语言高级。

B.C语言可以不用编译就能被计算机识别执行。

。C.C语言以接近英语国家的自然语言和数学语言作为语言的表达形式。D.C语言出现的,具有其它语言的一切优点。答案:C

3、以下叙述正确的是()。

A.C语言的源程序不必通过编译就可以直接运行。

B.C语言中的每条可执行语句最终都将被转换成二进制的机器指令。C.C语言源程序经编译形成的二进制代码可以直接运行。D.C语言中的函数不可以单独进行编译。答案:B 答案:B

二、判断题

1、C语言的书写格式不会影响程序的可读性。()答案:错误

2、C 语言程序实现与其他高级语言一样也要经过编辑、编译连接和运行这样的三步曲。(答案:正确

3、健壮的算法不会因为非法输入而出现莫名其妙的状态。()答案:正确

第三章 数据类型 运算符与表达式

一、单项选择题

1、下列字符串是标识符的是()。

A._HJ B.9_student C.long D.LINE 1 答案:A

2、()不是 C 语言提供的合法关键字。

A.switch B.print C.case D.default 答案:B

3、判断字符型变量 ch 为小写字母的表达式是()。

A.’a’<=ch<=’z’ B.(ch>=a)&&(ch<=z)C.(ch>=’a’)||(ch<=’z’)D.(ch>=’a’)&&(ch<=’z’)答案:D

4、在C 语言中,回车换行符是()。A.n B.t C.v D.b)答案:A

5、设整型变量 a 值为9,则下列表达式中使 b 的值不为4的表达式()。A.b=a/2 B.b=a%2 C.b=8-(3,a-5)D.b=a>5?4:2 答案:B

6、能正确表示 x 的取值范围在[0,100]和[-10,-5]内的表达式是()。A.(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)B.(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100)C.(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100)D.(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)答案:B 7、10+’a’+1.5-567.345/’b’的结果是()型数据。A.long B.double C.int D.unsigned float 答案:B

8、设 a、b 和 c 是 int 型变量,且 a=2,b=4,c=6,则下面表达式中值为 0 的是()。A.‘a’+ ‘b’ B.a<=b C.a||b+c&&b-c D.!((a

9、已知在ASCII字符集中,字母A的序号为65,下面程序的输出结果为()。main(){char c=’A’;int i=10;c=c+10;i=c%i;printf(“%c,%dn”,c,i);} A.75,7 B.75,5 C.K,5 D.因存在非图形字符,无法直接显示出来 答案:C

10、C 语言中最简单的数据类型包括()。

A.整型,实型,逻辑型 B.整型,实型,字符型 C.整型,字符型,逻辑型 D.整型,实型,逻辑型,字符型 答案:B

11、C 语言中,运算对象必须是整型数的运算符是()。A.% B.C.% 和 D.** 答案:A

12、下面程序的输出结果是()。mian(){int x=2,y=0,z;x*=3+2;printf(“%d”,x);x*=y=z=4;printf(“%d”,x);} A.8 40 B.10 40 C.10,4 D.8,4 答案:B

13、下面程序的输出结果是()。main(){int i,j;i=16;j=(i++)+i;printf(“%d”,j);i=15;printf(“%d %d”,++i,i);} A.32 16 15 B.33 15 15 C.34 15 16 D.34 16 15 答案:A

14、若已定义 X和 Y为double 类型,则表达式:x=1,y=x+3/2 的值为()。A.1 B.2 C.2.0 D.2.5 答案:C

二、判断题

1、在C 语言中,整型数据与字符型数据在任何情况下都可以通用。()

答案:错误

2、在C 语言程序中,AHP 和 ahp 分别代表两个不同的标识符。()

答案:正确

3、在C 语言中,int、char和 short 三种类型数据在内存中所占用的字节数都是由用户自 己定义的。()

答案:错误

4、在 C 程序中一行内可以写几个语句,一个语句可以分写在多行上。因此,并不是每一条 C 语句都必须有一个分号的。()

答案:错误

5、在 C 语言程序中,happy是正确的标识符。()

答案:正确

6、标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。()答案:正确

7、浮点型常量的指数表示中 ,e 是可以省略的。()答案:错误

第四章 最简单的C程序设计——顺序程序设计

一、单项选择题

1、C 语言中调用 printf 进行输出时需要注意,在格式控制串中,格式说明与输出项的个数必须相同,如果格式说明的个数小于输出项的个数,多余的输出项将()。A.不予输出 B.输出空格 C.照样输出 D.输出不定值或 0 答案:A

2、为了表示关系 x>=y>=z,应使用C 语言表达式()。A.(x>=y)&&(y>=z)B.(x>=y)AND(y>=z)C.(x>=y>=z)D.(x>=y)&(y>=z)答案:A

3、若已定义 int a=25,b=14,c=19;以下三项运算符(?:)所构成的语句的执行结果是()。a++<=25&&b--<=2&&c++?printf(“***a=%d,b=%d,c=%dn”,a,b,c):printf(“###a=%d,b=%d,c=%dn”,a,b,c)A.(***a=25,b=14,c=19)B.(***a=26,b=13,c=19)C.(###a=25,b=14,c=19)D.(###a=26,b=13,c=19)答案:D

4、以下程序的输出结果是()。main(){ int i=010,j=10,k=0x10;printf(“%d,%d,%dn”,i,j,k);} A.8,10,16 B.8,10,10 C.10,10,10 D.10,10,16 答案:A

5、以下程序的输出结果是()。#include main(){printf(“%dn”,NULL);} A.不确定的值 B.0 C.-1 D.1 答案:B

6、以下程序的输出结果是()。main(){ char c1='6',c2='0';printf(“%c,%c,%d,%dn”,c1,c2,c1-c2,c1+c2);} A.因输出格式不合法,输出出错信息 B.6,0,6,102 C.6,0,7,6 D.6,0,5,7 答案:B

7、设有如下定义:int x=10,y=3,z;则语句 printf(“%dn”,z=(x%y,x/y));输出结果是()。

A.3 B.0 C.4 D.1 答案:A

8、以下程序的输出结果是()。main(){ int x=10,y=10;printf(“%d %dn”,x--,--y);} A.10 10 B.9 9 C.9 10 D.10 9 答案:D

9、下面程序的输出结果()。main(){ int x;x=-3+4*5-6;printf(“%d”,x);x=3+4%5-6;printf(“%d”,x);x=-3*4%6/5;printf(“%d”,x);x=(7+6)%5/2;printf(“%d”,x);} A.11 1 0 1 B.11-3 2 1 C.12-3 2 1 D.11 1 2 1 答案:A

10、以下程序的输出结果是()。main(){ int a=-1,b=4,k;k=(++a<=0)&&!(b--<=0);printf(“%d %d %d”,k,a,b);} A.1 0 4 B.0 0 4 C.1 0 3 D.0 0 3 答案:C

二、判断题

1、C 程序有三种结构化程序设计方法,分别顺序结构、选择结构和循环结构。()

答案:正确

2、程序是按书写的顺序执行的。()

答案:错误

3、如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。()答案:正确

第五章 选择结构的程序设计

一、单项选择题

1、分析以下程序: main(){ int x=5,a=0,b=0;if(x=a+b)printf(“** **n”);else printf(“## ##n”);以上程序()。

A.有语法错,不能通过编译 B.通过编译,但不能连接 C.输出** ** D.输出## ## 答案:D

2、两次运行下面的程序,如果从键盘上分别输入 6 和4,则输出结果是()。main(){ int x;scanf(“%d”,&x);if(x++>5)printf(“%d”,x);else printf(“%dn”,x--); } A.7 和 5 B.6 和 3 C.7 和4 D.6和 4 答案:A

3、在C 的 if语句中,可用作判断的表达式是()。

A.关系表达式 B.逻辑表达式 C.算术表达式 D.任意表达式 答案:D

4、假定所有变量均已正确说明,下列程序段运行后 x 的值是()。a=b=c=0;x=35;if(!a)x=-1;else if(b);if(c)x=3;else x=4;A.34 B.4 C.35 D.3 答案:B

5、若有以下变量定义: float x;int a,b;则正确的 switch 语句是()。A.switch(x){ case 1.0:printf(“*n”);case 2.0:printf(“* *n”);} B.switch(x){ case 1,2:printf(“*n”);case 3:printf(“* *n”);} C.switch(a+b){ case 1:printf(“*n”);case 2*a:printf(“* *n”);} D.switch(a+b){ case 1:printf(“*n”);case 1+2:printf(“* *n”);} 答案:D

6、在 C 语言中,多分支选择结构语句为 switch(c)

{ case 常量表达式 1:语句 1;

„„

case 常量表达式 n-1:语句 n-1; default 语句 n;} 其中括号内表达式 c 的类型()。

A.可以是任意类型 B.只能为整型 C.可以是整型或字符型 D.可以为整型或实型 答案:C

7、当 a = 1, b = 3 , c = 5, d = 4时, 执行完下面程序段后 x的值为()if(a < b)

。if(c < d)x = 1;else if(a < c)if(b < d)x =2;else x = 3;else x = 6;else x = 7;A.1 B.2 C.3 D.6 答案:A

二、判断题

1、条件表达式不能取代一般if的语句。()答案:错误

2、在 if语句中,if子句与 else 子句都可以单独使用,构成了 if语句的两种缺省形式。()答案: 错误

3、在C语言中,逗号既可以作为运算符,也可以作为分隔符。()答案:正确

4、在 if语句中,不可以没有 else 子句。()

答案:错误

5、在switch语句中,每一个的case常量表达式的值可以相同。()答案:错误

6、在C 语言的 if语句中,用作条件判断的表达式只能是关系和逻辑表达式。()

答案:错误

7、在C 语言中 break 和 continue 都是循环中途退出语句,其中 break 语句用来跳出一层循环结构;continue 语句用来结束一次循环。()

答案:正确

第六章 循环结构程序设计

一、单项选择题

1、while 循环语句中,while 后一对圆括号中表达式的值决定了循环体是否进行,因此,进入 while 循环后,一定有能使此表达式的值变为(),否则,循环将会无限制地进行下去。

A.0 B.1 C.成立 D.2 答案:A

2、在 do-while 循环中,循环由 do 开始,用 while 结束,必须注意的是:在 while表达式后面的()不能丢,它表示 do-while 语句的结束。A.0 B.1 C.; D.,答案:C

3、for 语句中的表达式可以部分或全部省略,但两个()不可省略。但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。A.0 B.1 C.; D.,答案:C

4、程序段如下 int k=1;while(!k==0){k=k+1;printf(“%dn”,k);} 说法正确的是()。

A.while 循环执行 2 次 B.循环是无限循环 C.循环体语句一次也不执行 D.循环体语句执行一次 答案:B

5、以下 for循环是()。

for(a=0,b=0;(b!=123)&&(a<=4);a++)A.无限循环 B.循环次数不定 C.执行 4次 D.执行 5 次 答案:D

6、在下列程序中,while的循环次数是()。main(){ int i=0;while(i<10){if(i<1)continue;if(i= =5)break;i++;}......} A.1 B.10 C.6 D.死循环、不能确定次数 答案:D

7、执行下面的程序后,a 的值为()。main(){int a,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;} b-=5;} } A.7 B.8 C.9 D.10 答案:B

8、以下程序的输出结果()。main(){ int x=3;do {printf(“%3d”,x-=2);}while(--x);} A.1 B.3 0 C.1-2 D.答案:A

9、以下能正确计算 1×2×3ׄ×10的程序段是()A.do {i=1;s=1;s=s*i;i++;} while(i<=10);B.do {i=1;s=0;s=s*i;i++;} while(i<=10);C.i=1;s=1;do {s=s*i;i++;} while(i<=10);

死循环。D.i=1;s=0;do {s=s*i;i++;} while(i<=10);答案:C

10、下面有关 for循环的正确描述是()。A.for循环只能用于循环次数已经确定的情况 B.for循环是先执行循环体语句,后判断表达式 C.在 for循环中,不能用 break 语句跳出循环体

D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 答案:D

二、判断题

1、do-while循环的while后的分号可以省略。()答案:错误

2、在多层循环中, 一个break语句只向外跳一层。()

答案:正确

3、do-while循环至少要执行一次循环语句。()答案:正确

4、C语言中while和do-while循环的主要区别是while语句的循环体至少会被执行一次,而 do-while语句的循环体则可能一次也不执行。()

答案:错误

5、for语句作为循环控制语句时,其括号内各个表达式及其后的分号都可缺省。()

答案: 错误

6、C语言的三种循环不可以互相嵌套。()答案:错误

7、continue 只能用于循环体中。()答案:正确

第七章 数组

一、单项选择题

1、定义如下变量和数组: int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面执行语句的结果为()。for(i=0;i<3;i++)printf(“%3d”,x[i][2-i]);A.1 5 9 B.1 4 7 C.3 5 7 D.3 6 9 答案:C

2、在C 语言中,引用数组元素时,其数组下标的数据类型允许是()。A.整型常量 B.整型常量或整型表达式 C.整型表达式 D.任何类型的表达式 答案:B

3、以下对一维整型数组 a的正确说明是()。

A.int a(10);B.int n;scanf(“%d”,&n);int a[n];C.int n=10,a[n];D.#define SIZE 10 int a[SIZE];答案:D

4、若有说明语句:char c= ‘64’;则变量 C 包含()。A.1 个字符 B.2 个字符

C.3 个字符 D.说明不合法,C 值不确定。答案:A

5、判断字符串a和b是否相等,应当使用()。

A.if(a= =b)B.if(a=b)C.if(strcpy(a,b))D.if(strcmp(a,b))答案:D

6、下面程序的运行结果是()。main(){ int a[6],i;for(i=1;i<6;i++){ a[i]=9*(i-2+4*(i>3))%5;printf(“%2d”,a[i]);} } A.-4 0 4 0 4 B.-4 0 4 0 3 C.-4 0 4 4 3 D.-4 0 4 4 0 答案:C

7、若有说明:int a[3][4] = {0};则下面正确的叙述是()。A.只有元素 a[0][0]可以得到初值 0 B.此说明语句不正确

C.数组 a 中每个元素均可得到初值 0 D.数组 a 每个元素均可得到初值,但值不一定为 0 答案:C

8、下面几个字符串处理表达式中能用来把字符串str2复制到字符串str1后的是()。A.strcat(str1,str2);B.strcat(str2,str1);C.strcpy(str1,str2);D.strcmp(str1,str2);答案:C

9、若有二维数组 a[m][n],则数组中 a[i][j]之前的元素的个数为()。A.j*m+i B.i*n+j C.i*m+j+1 D.i*n+j+1 答案:D

10、设有 char str[10],下列语句正确的是()。A.scanf(“%s”,&str);B.printf(“%c”,str);C.printf(“%s”,str[0]);D.printf(“%s”,str);答案:D

二、判断题

1、字符串可以用来给数组赋值,在 C 程序的执行语句中可以直接用字符串给数组名赋值。

()

答案:错误

2、数组名也可作为函数参数使用,此时数组名代表数组的起始地址。()

答案:正确

3、数组在定义时没有必要指定数组的长度,其长度可以在程序中根据元素个数再决定。()

答案:错误

4、数组首地址不仅能通过数组中第一个元素的地址表示,也可以通过数组名来表示。()

答案:正确

5、C 语言中 , 字符串常量存放在字符数组中要有一个结束符 , 该结束符是0。()答案:错误

6、在对数组全部元素赋初值时,不可以省略行数,但能省略列数。()答案:错误

7、数组名能与其它变量名相同,数组名后是用方括号括起来的常量表达式,不能用圆括号。()答案:正确

第八章 函数

一、单项选择题

1、以下函数定义正确的是()。

A.double fun(int x, int y)B.double fun(int x;int y)C.double fun(int x, int y);D.double fun(int x , y)答案:A

2、C 语言规定,简单变量作实参,它与对应形参之间的数据传递方式是()。A.地址传递 B.单向值传递 C.双向值传递 D.由用户指定传递方式 答案:B

3、以下关于C语言程序中函数的说法正确的是()。A.函数的定义可以嵌套,但函数的调用不可以嵌套; B.函数的定义不可以嵌套,但函数的调用可以嵌套; C.函数的定义和调用均不可以嵌套; D.函数的定义和点用都可以嵌套。答案:B

4、一个数据类型为 void 的函数中可以没有 return 语句,那么函数的被调用时()A.没有返回值 B.返回一个系统默认值 C.返回值由用户临时决定 D.返回一个不确定的值 答案:D

5、以下说法不正确的是()。

A.实参可以是常量、变量或表达式 B.形参可以是常量、变量或表达式 C.实参可以是任意类型 D.形参应与其对应的实参类型一致 答案:B

6、以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#define N 10 void arrin(int x[N]){ int i=0;while(i

A.x+i B.&x[i+1] C.x+(i++)D.&x[++i] 答案:C

7、下列说法正确的是()。

A.一个函数的函数体必须要有变量定义和执行部分,二者缺一不可 B.一个函数的函数体必须要有执行部分,可以没有变量定义

C.一个函数的函数体可以没有变量定义和执行部分,函数可以是空函数 D.以上都不对 答案:C。

8、若用数组名作为函数调用的实参,传递给形参的是()。A.数组的首地址 B.数组第一个元素的值 C.数组中全部元素的值 D.数组元素的个数 答案:A

9、如果在一个函数中的复合语句中定义了一个变量,则该变量()。A.只在该复合语句中有效 B.在该函数中有效 C.在本程序范围内有效 D.为非法变量 答案:A

10、有以下程序

void f(int x,int y){ int t;if(x

A.3,4,5 B.5,3,4 C.5,4,3 D.4,3,5 答案:C

二、判断题

1、C 程序可以由若干个源文件组成,因此最小的功能单位是源文件,最小编译单位的是函数。()

答案:错误

2、C 程序中函数不可以嵌套定义但可以嵌套调用。()答案: 正确

3、在函数内的复合语句中定义的变量在本函数范围内有效。()

答案:错误

4、C 语言规定,简单变量做实参时,与其对应的形参之间是单向的值传递。()答案: 正确

5、数组名也可作为函数参数使用,此时是地址传递。()

答案:正确

6、C 语言本身没有输入输出语句,输入输出操作都是通过调用库函数来实现的。()

答案:正确

7、函数形参的存储单元是动态分配的。()答案:正确

第九章 预处理命令

一、单项选择题

1、C 语言中,宏定义有效范围从定义处开始,到源文件结束处结束,但可以用()来提前解除宏定义的作用。

A.# ifdef B.endif C.# undefine D.# undef 答案:D

2、以下不正确的叙述是()。

A.预处理命令都必须以“#”号开始

B.在程序中凡是以“#”号开始的语句行都是预处理命令行 C.C 语言在执行过程中对预处理命令行进行处理 D.# define ABCD是正确的宏定义 答案:C

3、在文件包含预处理语句(# include)的使用形式中,当之后的文件名用“”(双引号)括起时,寻找被包含文件的方式是()。A.直接按系统设定的标准方式搜索目录

B.先在源程序所在目录搜索,再按系统设定的标准方式搜索 C.仅仅搜索源程序所在目录 D.仅仅搜索当前目录 答案:B

二、判断题

1、预处理命令的前面必须加一个“#”号。()答案:正确

2、宏替换不占用运行时间。()答案:正确

3、C语言的编译系统对宏命令的处理是在对源程序中其它语句正式编译之前进行的。()答案:正确

第十章 指针

一、单项选择题

1、变量的指针,其含义是指该变量的。

A.值 B.地址 C.名 D.一个标志 答案:B

2、设有说明 int(*ptr)[M];其中 ptr是()。A.M 个指向整型变量的指针

B.指向 M 个整型变量的函数指针

C.一个指向具有 M 个整型元素的一维数组的指针

D.具有 M 个指针元素的一维指针数组,每个元素都只能指向整型量 答案:C

3、如下程序的执行结果是()。# include main(){ static int a[ ]={1,2,3,4,5,6};int *p;p=a;*(p+3)+=2;printf(“%d,%dn”,*p,*(p+3));} A.1,3 B.1,6 C.3,6 D.1,4 答案:B

4、若有以下定义,则对 a数组元素的正确引用是()。int a[5], *p=a;A.*&a[5] B.a+2 C.*(p+5)D.*(a+2)答案:D

5、若有定义: int a[2][3];则对 a 数组的第i行第j列(假设 i,j 已正确说明并赋值)元素值的正确引用为()。

A.*(*(a +i)+j)B.(a+i)[j] C.*(a+i+j)D.*(a +i)+j 答案:A

6、设有下面的程序段: char s[ ]=“china”;char *p;p=s;则下列叙述正确的是()。A.s 和 p 完全相同

B.数组 s 中的内容和指针变量 p 中的内容相等 C.s 数组长度和 p 所指向的字符串长度相等 D.*p与s[0]相等 答案:D

7、若有下列说明和语句:int a[4][5],(*p)[5];p = a;则对a 数组元素的正确引用是()。

A.p+1 B.*(p+3)C.*(p+1)+3 D.*(*p+2)答案:B

二、判断题

1、在定义指针型变量时指定的基类型为该指针变量所能指向的变量类型。()

答案:正确

2、指针变量,只能作为函数的形参,不可以作函数的实参。()答案:正确

3、由于指针变量存储的是地址,指针变量被定义之后可以指向任一类型的变量。()

答案:错误

第十一章 文件

一、单项选择题

1、若用 fopen()函数打开一个新的二进制文件,该文件可以读也可以写,则文件打开模式是()。

A.“ab+” B.“wb+” C.“rb+” D.“ab” 答案:B

2、若 fp 是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是()。A.EOF B.0 C.非零值 D.NULL 答案:C

3、以下叙述中不正确的是()。

A.C 语言中的文本文件以 ASCII 码形式存储数据 B.C 语言中对二进制位的访问速度比文本文件快 C.C 语言中,随机读写方式不使用于文本文件 D.C 语言中,顺序读写方式不使用于二进制文件 答案:D

二、判断题

1、文件指针用于指向文件,文件只有被打开后才有对应的文件指针。(答案:正确

2、文件指针和位置指针都是随着文件的读写操作在不断改变。()

答案:错误

3、以“r”方式打开一个文件时,文件指针指向文件首。()答案: 正确)

第四篇:C语言复习大纲

1、C语言程序常见的书写格式;

2、printf()和scanf()函数常用的方法,主要包括格式控制符;

3、常见的基本类型(现学过3种)以及表示数据的范围(大致的)。

4、熟练掌握以下几类运算符的运算规律:算术运算符、关系运算符、逻辑运算符、条件运

算符、自增自减运算符、逗号运算符、简单赋值运算符以及复合的赋值运算符。

5、C程序三种结构。

6、数组(主要是字符和一维)定义、初始化以及引用和函数的定义、以及引用。

7、常见的数组字符串处理函数(包括stccpy()和strcmp())。

8、常见的转义字符的表示及含义作用(如nrtb等)。

9、C语言标识符规则(主要有3条)。

10、break语句和continue语句的功能和使用。

11、逻辑值“真”“假”的判定。

12、if和else配对原则。

13、数组长度与有效下标的关系。

14、熟练掌握三种结构语句的执行流程,特别是循环语句。

15、熟练掌握求最大(小)值、判断素数以及排序等基本算法和程序实现。

建议:除了上述的知识点之外,老师上课用的PPT过一遍,平时实验作业再做一遍。

第五篇:c语言程序设计复习

第一章C语言概述

一、选择题:

1、一个C程序的执行是从(A)。A本程序的main函数开始,到main函数结束

B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C本程序的main函数开始,到本程序文件的最后一个函数结束 D本程序文件的第一个函数开始,到本程序main函数结束

2、在 C 语言中,每个语句必须以(D)结束。A.回车符 B.冒号 C.逗号 D.分号

3、C 语言规定:在一个源程序中,main函数的位置(C)。A.必须在最开始 B.必须在系统调用的库函数的后面 C.可以任意 D.必须在最后

4、一个C 语言程序是由(B)。

A.一个主程序和若干子程序组成 B.函数组成 C.若干过程组成 D.若干子程序组成

5、下列说法中错误的是(D)。

A.主函数可以分为两个部分:主函数说明部分和主函数体 B.主函数可以调用任何非主函数的其他函数 C.任何非主函数可以调用其他任何非主函数 D.程序可以从任何非主函数开始执行

6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将(C)。A.生成可执行目标文件 B.生成目标文件 C.输出运行结果 D.自动保存源文件

二、填空题:

1、C 语言只有 32 个关键字和 9 种控制语句。

2、每个源程序有且只有一个 main 函数,系统总是从该函数开始执行C语言程序。

3、C 语言程序的注释可以出现在程序中的任何地方,它总是以 * 符号作为开始标记,以 */ 符号作为结束标记。

4、C 语言中,输入操作是由库函数 scanf 完成的,输出操作是由库函 数 printf 完成的。

5、系统默认的C 语言源程序文件的扩展名是.c,经过编译后生成的目标文件的扩展名是.obj,经过连接后生成的可执行文件的扩展名是.exe。

6、C 语言的标识符只能由字母、数字和 下划线 三种字符组成。

第三章数据类型、运算符和表达式

一、选择题:

1、以下选项中,不正确的 C 语言浮点型常量是(C)。A.160.B.0.12 C.2e4.2 D.0.0

2、以下选项中,(D)是不正确的 C 语言字符型常量。A.'a' B.'x41' C.'101' D.“a”

3、在 C 语言中,字符型数据在计算机内存中,以字符的(C)形式存储。A.原码 B.反码 C.ASCII 码 D.BCD码

4、若x、i、j和k都是int型变量,则计算下面表达式后,x的值是(C)。x=(i=4,j=16,k=32)A.4 B.16 C.32 D.52

5、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为(B)。A.算术运算、赋值运算、关系运算 B.算术运算、关系运算、赋值运算 C.关系运算、赋值运算、算术运算 D.关系运算、算术运算、赋值运算

6、若有代数式,则不正确的C语言表达式是(C)。A.a/b/c*e*3 B.3*a*e/b/c C.3*a*e/b*c D.a*e/c/b*3

7、表达式!x||a==b 等效于(D)。

A.!((x||a)==b)B.!(x||y)==b C.!(x||(a==b))D.(!x)||(a==b)

8、设整型变量 m,n,a,b,c,d 均为1,执行(m=a>b)&&(n=c>d)后, m,n 的值是(A)。A.0,0 B.0,1 C.1,0 D.1,1

9、设有语句 int a=3;,则执行了语句 a+=a-=a*=a;后,变量 a 的值是(B)。A.3 B.0 C.9 D.-12

10、在以下一组运算符中,优先级最低的运算符是(D)。A.* B.!= C.+ D.=

11、设整型变量 i 值为2,表达式(++i)+(++i)+(++i)的结果是(B)。A.6 B.12 C.15 D.表达式出错

12、若已定义 x 和 y为double 类型,则表达式 x=1,y=x+3/2 的值是(C)。A.1 B.2 C.2.0 D.2.5

13、sizeof(double)的结果值是(A)。A.8 B.4 C.2 D.出错

14、设a=1,b=2,c=3,d=4,则表达式:a

15、设a 为整型变量,不能正确表达数学关系:1010 && a<15 D.!(a<=10)&&!(a>=15)

16、设 f是实型变量,下列表达式中不是逗号表达式的是(D)。A.f= 3.2, 1.0 B.f>0, f<10 C.f=2.0, f>0 D.f=(3.2, 1.0)

17、表达式18/4*sqrt(4.0)/8值的数据类型是(C)。A.int B.float C.double D.不确定

18、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句 C2=’A’+’6’-‘3’;后c2中的值是(A)。A.D B.68 C.不确定的值 D.C

19、以下用户标识符中,合法的是(B)。A.int B.nit C.123 D.a+b 20、C 语言中,要求运算对象只能为整数的运算符是(A)。A.% B./ C.> D.*

21、若有说明语句:char c='72';则变量c在内存占用的字节数是(A)。A.1 B.2 C.3 D.4

22、字符串“ABC”在内存占用的字节数是(B)。A.3 B.4 C.6 D.8

23、要为字符型变量 a赋初值,下列语句中哪一个是正确的(B)。A.char a=“3”;B.char a=’3’;C.char a=%;D.char a=*;

24、下列不正确的转义字符是(C)。A.B.' C.074 D.

二、填空题:

1、C 语言中的逻辑值“真”是用 1 表示的,逻辑值“假”是用 0 表示的。

2、若x和n都是int型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为 0。

3、设 c='w',a=1,b=2,d=-5, 则表达式 'x'+1>c, 'y'!=c+2,-a-5*b<=d+1, b==a=2的值分别为 1、0、1、1。

4、设 float x=2.5,y=4.7;int a=7;,表达式 x+a%3*(int)(x+y)%2/4的值为 2.5。

5、判断变量 a、b 的值均不为 0 的逻辑表达式为a!=0&&b!=0。

6、求解赋值表达式 a=(b=10)%(c=6),表达式值、a、b、c 的值依次为 4,4,10,6。

7、求解逗号表达式 x=a=3,6*a 后,表达式值、x、a 的值依次为18,3,3。

8、数学式a/(b*c)的 C 语言表达式 a/b/c。

三、编程题:

1、设长方形的高为 1.5,宽为 2.3,编程求该长方形的周长和面积。

2、编写一个程序,将大写字母 A转换为小写字母 a。1. main(){float x=1.5,y=2.3;printf(“area is %6.2fn”,x*y);} 2.main(){char c=’A’;printf(“%d”,c+32);}

顺序结构答案

一、单项选择题 AADAB CCBBD

二、程序改错题 1.正确的程序为 # include “stdio.h” main(){ char c ; getchar(c);putchar('07');/*鸣笛*/ putchar();} 2. 正确的程序为 main(){ int a,b,s,l;scanf(“%d,%d”,&a,&b);s=a*b;l=2*(a+b);printf(“l=%d,s=%dn”, l ,s);}

三、写出程序运行结果 1. 68 2.x=4 y=11

四、编程题 1.main(){ int a,b,c,sum;float ave;scanf(“%d%d%d”,&a,&b,&c);sum=a+b+c;ave=sum/3.0;printf(“sum=%d,ave=%.2fn”,sum,ave);}

五、选做题 1.void main(){ float a,b,temp;printf(“input a and b:”);scanf(“%d,%d”,&a ,&b);temp = a;a = b;b = temp;printf(“a=%d , b=%dn”, a , b);} 选择结构答案

一、单项选择题

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 Fail Pass Pass

三、阅读程序,写出运行结果 1.10, 4, 3;-1 3 6 1

四、程序设计题 1.main(){ int a,b,x,y;scanf(“%d %d”,&a,&b);x=a*a+b*b;if(x>100){y=x/100;printf(“%d”,y);} else printf(“%d”,a+b);}

2.if结构 main(){ float t;char c;printf(“input score,max as 100:n”);scanf(“%f”,&t);if(t>=90)ch=’A’;else if(t>=80)ch=’B’;else if(t>=70)ch=’C’;else if(t>=60)ch=’D’;else ch=’E’;

printf(“Grade=%dn”,ch);} switch结构 main(){float t;char c;printf(“input score,max as 100:n”);scanf(“%f”,&t);switch(t/10){ case 10: case 9: ch=’A’;break;case 8: ch=’B’;break;case 7: ch=’C’;break;case 6: ch=’D’;break;case 5: ch=’E’;} printf(“Grade=%dn”,ch);}

五、选做题 1.main(){ int a,b,c,t;scanf(“%d%d%d”,&a,&b,&c);if(a

2.switch((s>0)&&(s<=10)){case 1: switch((s>=3)&&(s<=6)){ case 1: x=2;break;case 0: switch(s>1)||(s>8)){ case 1: x=3;break;case 0: x=1;break;} } break;case 0: x=0;break;}

循环结构答案

一、选择题

1.B 2.A 3.A 4.C 5.A 6.B 7.A 8.C 9.D 10.D

二、填空题 1.x1 x1/2-2 2.ch=getchar()ch>=’A’&&ch<=’Z’ 3.s=s+t*i t=-t

三、阅读下列程序,写出程序运行的输出结果 1.852 2.8921 3.5 4.SUM=2468

四、程序改错 1.main(){ int i=200,n=0;/*n用来记录每行已打印数的个数*/ while(i<=300){if(i%7==0){ //break;printf(“%5d”,i);n=n+1;if(n==5)/*满5个换行*/ { printf(“n”);n=0;} } i++;} }

2).main(){ int i,s=0,t=1;for(i=1;i<=7;i++){ t=t*i;s=s+t;} printf(“sum=%dn”,s);}

五、程序设计题 1.main(){int x,g,s,b;for(x=100;x<1000;x++){ b=x/100;s=x%100/10;g=x%10;if((g*g*g+s*s*s+b*b*b)==x)printf(“%dn”,x);} }

2.main(){ int i,s=0,f=1;for(i=2;i<80;i++){s=s+f*(i-1)/i;f=-f;} printf(s=%fn”,s);}

六、选做题 1.main(){ float s=0,m=2.0,n=1.0,p;int i;for(i=1;i<=20;i++){s=s+m/n;p=m;m=m+n;n=p;} printf(s=%fn”,s);}

2.#include main(){ int i,j,k,s=1;for(i=1;i<=20;i++)for(j=1;j<=50;j++){ k=100-i*5-j*2;if(k>=0){ printf(“%2d %2d %2d”,i,j,k);s=s+1;if(s%5==0)printf(“n”);} } }

第7章 数组习题 A卷

1.单项选择题(1)int a[4]={5,3,8,9};其中 a[3]的值为()。D A.5 B.3 C.8 D.9(2)以下 4 个字符串函数中,()所在的头文件与其他 3 个不同。A A.gets B.strcpy C.strlen D.strcmp(3)以下 4 个数组定义中,()是错误的。D A.int a[7];B.#define N 5 long b[N];C.char c[5];D.int n,d[n];(4)对字符数组进行初始化,()形式是错误。B A.char c1[ ]={'1', '2', '3'};B.char c2[ ]=123;C.char c3[ ]={ '1', '2', '3', ''};D.char c4[ ]=“123”;(5)在数组中,数组名表示()。A A.数组第 1 个元素的首地址 B.数组第 2 个元素的首地址 C.数组所有元素的首地址 D.数组最后 1 个元素的首地址

(6)若有以下数组说明,则数值最小的和最大的元素下标分别是()。B int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12};A.1,12 B.0,11 C.1,11 D.0,12(7)若有以下说明,则数值为 4 的表达式是()。D int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12};char c=’a’, d, g;A.a[g-c] B.a[4] C.a['d'-'c'] D.a['d'-c](8)设有定义:char s[12] = “string”;则printf(“%dn”,strlen(s));的输出是()。A A.6 B.7 C.11 D.12(9)设有定义:char s[12] = “string”;则printf(“%dn ”, sizeof(s));的输出是()。D A.6 B.7 C.11 D.12(10)合法的数组定义是()。A A.char a[ ]= “string ”;B.int a[5] ={0,1,2,3,4,5};C.char a= “string ”;D.char a[ ]={0,1,2,3,4,5}(11)合法的数组定义是()。D A.int a[3][ ]={0,1,2,3,4,5};B.int a[ ][3] ={0,1,2,3,4};C.int a[2][3]={0,1,2,3,4,5,6};D.int a[2][3]={0,1,2,3,4,5,};(12)下列语句中,正确的是()。D A.char a[3][ ]={'abc', '1'};B.char a[ ][3] ={'abc', '1'};C.char a[3][ ]={'a', “1”};D.char a[ ][3] ={ “a”, “1”};(13)下列定义的字符数组中,输出 printf(“%sn”, str[2]);的输出是()。C static str[3][20] ={ “basic”, “foxpro”, “windows”};A.basic B.foxpro C.windows D.输出语句出错

(14)下列各语句定义了数组,其中哪一个是不正确的()。C A.char a[3][10]={“China”,“American”,“Asia”};B.int x[2][2]={1,2,3,4};C.float x[2][ ]={1,2,4,6,8,10};D.int m[][3]={1,2,3,4,5,6};(15)数组定义为 int a[3][2]={1,2,3,4,5,6},值为6的数组元素是()。B A.a[3][2] B.a[2][1] C.a[1][2] D.a[2][3](16)下面的程序中哪一行有错误()。D #include main(){ float array[5]={0.0};//第A行 int i;for(i=0;i<5;i++)scanf(“%f”,&array[i]);for(i=1;i<5;i++)array[0]=array[0]+array[i];//第B行 printf(“%fn”,array[0]);//第C行 } A.第A行 B.第B行 C.第C行 D.没有

(17)下面哪一项是不正确的字符串赋值或赋初值的方式()。A.char *str;str=“string”;B.char str[7]={'s','t','r','i','n','g'};C.char str1[10];str1=“string”;D.char str1[]=“string”,str2[]=“12345678”;(18)若有以下说明和语句,则输出结果是哪一项()。C(strlen(s)为求字符串s的长度的函数)char s[12]=“a book!”;printf(“%d”,strlen(s));A.12 B.8 C.7 D.11(19)若有以下说明和语句,则输出结果是()。B(strlen(s)为求字符串s的长度的函数)char sp[]=“tv0willn”;printf(“%d”,strlen(sp));A.14 B.3 C.9 D.字符串中有非法字符(20)若有以下说明和语句,则输出结果是()。C char str[]=“"c:abc.dat”“;

C printf(”%s“,str);A.字符串中有非法字符 B.”c:abc.dat“ C.”c:abc.dat“ D.”c:abc.dat“

2.填空题

(1)C 语言中,数组的各元素必须具有相同的,元素的下标下限为,下标必须是正整数、0、或者。但在程序执行过程中,不检查元素下标是否。数据类型,0,符号常量,越界

(2)C 语言中,数组在内存中占一片 的存储区,由 代表它的首地址。数组名是一个 常量,不能对它进行赋值运算。连续,数组名,地址

(3)执行 static int b[5], a[ ][3] ={1,2,3,4,5,6};后,b[4] =,a[1][2] =。0,6(4)设有定义语句 static int a[3][4] ={{1},{2},{3}};则 a[1][0]值为,a[1][1] 值为,a[2][1]的值为。2,0,0(5)如定义语句为 char a[ ]= ”windows“,b[ ]= ”95“;,语句 printf(”%s“,strcat(a,b));的输出结果为。Windows95(6)根据以下说明,写出正确的说明语句:men是一个有10个整型元素的数组。step是一个有4个实型元素的数组,元素值分别为1.9,-2.33, 0, 20.6。grid是一个二维数组,共有4行,10列整型元素。

int mesh[10];float step[4] = {1.9,-2.33, 0, 20.6};int grid[4][10];(7)array是一个一维整形数组,有10个元素,前6个元素的初值是9,4,7,49,32,-5,正确的说明语句为:

。该数组下标的取值范围是从___到___(从小到大)。用scanf函数输入数组的第二个元素表示为:。用赋值语句把39存入第一个元素表示为:。把第六个和第四个元素之和存入第一个元素表示为:。

int array[10] = {9,4,7,49,32,-5};0 9 scanf(”%d“,&array[1]);array[0] = 39;array[0]= array[5]+array[3];(8)写出以下初始化数组的长度:①int chn[3];数组chn的长度为___。②float isa[]={1.0,2.0,3.0,4.0,5.0};数组isa的长度为___。③int doom[8];数组doom的长度为___。④float pci[4][2];数组pci的长度为___。

⑤int ast[3][3];数组ast的长度为___。⑥int att[3][4];数组att的长度为___。⑦float dell[][3]={{1,4,7},{2,5},{3,6,9}};数组dell的长度为___。6 20 16 32 18 24 36(9)若有以下整型的a数组,数组元素和它们得值如下所示: 数组元素: a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 元素的值: 9 4 12 8 2 10 7 5 1 3 ①请写出对该数组的说明,并赋以上初值。②该数组的最小下标值为___,最大下标值为___。

③写出下面各式的值:a[a[9]]的值为___ ;a[a[4]+a[8]]的值为___。int a[10]={9,4,12,8,2,10,7,5,1,3};0 9 8 8(10)字符串”abn12/“"的长度为___。10

3.判断题

(×)(1)C允许对数组的大小作动态定义,即可用变量定义数组的大小。(×)(2)字符数组不要求它的最后一个字符为‘’,甚至可以不包含‘’。(×)(3)数组定义 int a[10];也可以写成 int a(10)。(√)(4)在对全部数组元素赋初值时,可以不指定数组长度。(×)(5)定义s为5×6(5行6列)的数组可写成 float a[5,6];(√)(6)数组定义 int a[10];表示数组名为a,此数组有10个元素。

(×)(7)数组定义 int a[10];表示数组名为a,此数组有10个元素,第10个元素为a[10]。

(√)(8)static char c[]={“a book”};与static char c[]=“a book”;等价。(×)(9)static char c[]={'a' ,' ','b','o','o','k',''};与 static char c[]={'a' ,' ' ,'b','o','o','k'};等价。(×)(10)设已有说明:static char c1[10],c2[10];下面程序片段是合法的。c1={“book”};c2=c1;

4.程序填空题

(1)输入 20 个数,输出它们的平均值,输出与平均值之差的绝对值为最小的数组元素。请填空。

#include void main(){ float a[20],pjz=0,s,t;int i,k;for(i=0;i<20;i++)pjz+=a[i];s=fabs(a[0]-pjz);for(i=1;i<20;i++)if(fabs(a[i]-pjz)

(2)以下程序以每行 10个数据的形式输出 a 数组,请填空。void main(){ int a[50],i;printf(”输入50个整数:“);for(i=0;i<50;i++)scanf(”%d“,);for(i=1;i<=50;i++){ if()printf(”%3dn“ ,);printf(”%3d“,a[i-1]);} } &a[i] i%10==0 a[i-1]

(3)下面程序的功能是输出数组 s 中最大元素的下标,请填空。void main(){ int k, p;int s[ ]={1,-9,7,2,-10,3};for(p=0,k=p;p<6;p++)if(s[p]>s[k]);printf(”%dn“ ,k);} k=p

(4)这个程序输入了20个数存放在一个数组中,并且输出其中最大者与最小者、20个数的和及它们的平均值。请填空。void main(){ char array;int max,min,average,sum;int i;for(i=0;i<;i++){ printf(”请输入第%d个数:“,i+1);scanf(”%d“,);} max=array[0];min=array[0];for(i=0;i<=;i++){ if(maxarray[i])sum=;} average =;printf(”20个数中最大值是%d,“,max);printf(”最小值是%d,“,min);printf(”和是%d,“,sum);printf(”平均值是%d.n“,average);} [20] 20 &array[i] 19 max=array[i];min=array[i];sum+array[i] sum/20 B卷

5.阅读程序,分析程序的功能。(1)#include #include void main(){ char s[80];int i;for(i=0;i<80;i++){ s[i]=getchar();if(s[i]=='n')break;} s[i]='';i=0;while(s[i])putchar(s[i++]);putchar(‘n’);} 从键盘输入一个字符串,并逐一输出

(2)#include #include void main(){ char str[10][80], c[80];int i;for(i=0;i<10;i++)gets(str[i]);strcpy(c, str[0]);for(i=1;i<10;i++)if(strlen(c)

(3)#include #include void main(){ char a[10][80], c[80];int i, j, k;for(i=0;i<10;i++)gets(a[i]);for(i=0;i<9;i++){ k=i;for(j=i+1;j<10;j++)if(strcmp(a [j], a[k])<0)k=j;if(k!=i){strcpy(c,a[i]);strcpy(a[i], a[k]);strcpy(a[k],c);} // 字符串交换 } for(i=0;i<10;i++)puts(a[i]);} 从键盘输入若干字符串,并将它们按大到小顺序排好再输出

(4)阅读程序,写出运行结果 #include void main(){ int a[6]={12,4,17,25,27,16},b[6]={27,13,4,25,23,16},i,j;for(i=0;i<6;i++){ for(j=0;j<6;j++)if(a[i]==b[j])break;if(j<6)printf(”%d “,a[i]);} printf(”n“);} 4 25 27 16

(5)阅读程序,写出运行结果。#include void main(){ char a[8],temp;int j,k;for(j=0;j<7;j++)a[j]='a'+j;a[7]='';for(j=0;j<3;j++){ temp=a[6];for(k=6;k>0;k--)a[k]=a[k-1];a[0]=temp;printf(”%sn“,a);} } gabcdef fgabcde efgabcd

(6)阅读下列程序,写出程序运行的输出结果。#include #include void main(){ char str1[ ]=”*******“;for(int i=0;i<4;i++){ printf(”%sn“,str1);str1[i]=' ';str1[strlen(str1)-1]='';} } ******* ***** *** *

(7)该程序的运行结果是: min= ,m= ,n=。void main(){ float array[4][3]={ {3.4,-5.6,56.7}, {56.8,999.,-.0123}, {0.45,-5.77,123.5}, {43.4,0,111.2} };int i,j;int min;int m,n;min = array[0][0];m=0;n=0;for(i=0;i<3;i++)for(j=0;j<4;j++)if(min > array[i][j]){ min = array[i][j];m=i;n=j;} printf(”min=%d,m=%d,n=%dn“,min,m,n);}-5.77 2 1

(8)写出下面这个程序的输出结果: void main(){ char str[]=”ABCDEFGHIJKL“;printf(”%sn“,str);屏幕上显示 printf(”%sn“,&str[4]);屏幕上显示 str[2]=str[5];printf(”%sn“,str);屏幕上显示 str[9]='';printf(”%sn“,str);屏幕上显示 } ABCDEFGHIJKL EFGHIJKL ABFDEFGHIJKL ABFDEFGHI

(9)读懂下面的程序并填空。void main(){ char str[80];int i=0;gets(str);while(str[i]!=0){ if(str[i]>='a'&&str<='z')str[i]-=32;i++;} puts(str);} 程序运行时如果输入 upcase, 屏幕显示 程序运行时如果输入 Aa1Bb2Cc3, 屏幕显示 UPCASE AA1BB2CC 第8章 函数习题 A卷

1.单项选择题

(1)C 语言总是从 函数开始执行。A A.main B.处于最前的 C.处于最后的 D.随机选一个

(2)函数在定义时,省略函数类型说明符,则该函数值的类型为。A A.int B.float C.long D.double(2)以下 函数,真正地没有返回值。B A.int a(){int a=2;return(a);} B.void b(){printf(”c“);} C.int a(){int a=2;return a;} D.以上都是(3)在 C 语言中,有关函数的说法,以下正确的是。A A.函数可嵌套定义,也可嵌套调用 B.函数可嵌套定义,但不可嵌套调用 C.函数不可嵌套定义,但可嵌套调用 D.函数不可嵌套定义,也不可嵌套调用(4)以下函数调用语句中,含有实参的个数为。C fun((2,3),(4,5+6,7));A.1 B.2 C.5 D.6(5)函数调用可以在。D A.函数表达式中 B.函数语句中 C.函数参数中 D.以上都是(6)被调函数返回给主调函数的值称为。C A.形参 B.实参 C.返回值 D.参数(7),可以不进行函数类型说明。D A.被调函数的返回值是整型或字符型时 B.被调函数的定义在主调函数定义之前时 C.在所有函数定义前,已在函数外预先说明了被调函数类型 D.以上都是(8)被调函数通过 语句,将值返回给主调函数。D A.if B.for C.while D.return(9)被调函数调用结束后,返回到。D A.主调函数中该被调函数调用语句处 B.主函数中该被调函数调用语句处

C.主调函数中该被调函数调用语句的前一语句 D.主调函数中该被调函数调用语句的后一语句(10)以下对 C语言函数的有关描述中,正确的是。A A.在 C 中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B.C函数既可以嵌套定义又可递归调用 C.函数必须有返回值,否则不能使用函数

D.C程序中有调用关系的所有函数必须放在同一个源程序文件中(11)C 语言中函数的隐含存储类型是。C A.auto B.static C.extern D.无存储类型

(12)能把函数处理结果的两个数据返回给主调函数,在下面的方法中不正确的是。A A.return 这两个数 B.形参用两个元素的数组 C.形参用两个这种数据类型的指针 D.用两个全局变量(13)C语言可执行程序从什么地方开始执行()。C A.程序中第一条可执行语句 B.程序中第一个函数 C.程序中的main函数 D.包含文件中的第一个函数

(14)有一个函数原型如下所示,则该函数的返回类型为()。C abc(float x,float y);A.void B.double C.int D.float

2.填空题

(1)变量的作用域主要取决于变量,变量的生存期既取决于变量,又取决于变量。所处的位置,所处的位置,存储类型

(2)说明变量时,若省略存储类型符,系统默认其为 存储类别,该存储类别的类型符为:。动态,auto(3)静态型局部变量的作用域是 ,生存期是。它所在的局部,整个程序

(4)函数中的形参和调用时的实参都是数组名时,传递方式为,都是变量时,传递方式为。址传递,值传递

(5)函数的形式参数的作用域为,全局的外部变量和函数体内定义的局部变量重名时,_________变量优先。该函数中,局部

(6)若自定义函数要求返回一个值,则应在该函数体中有一条 语句,若自定义函数要求不返回一个值,则应在该函数说明时加一个类型说明符。return,void(7)若函数的形式参数是指针类型,则实参可以是 或。指针,数组名(8)函数的参数为 char *类型时,形参与实参结合的传递方式为。址传递(9)函数的实参为常量时,形参与实参结合的传递方式为。值传递

(10)下面这个函数的功能是求两个整数的积,并通过形参传回结果,请填空。int int int* *result void mul(___x,___y,___result){ ___=x*y;}

3.判断题

(×)(1)函数说明指的是在程序中设定一个函数模块。(√)(2)形参只有在被调用时才分配存储空间。(×)(3)在C的函数中,最好使用全局变量。

(×)(4)在调用函数时,实参传值给形参,调用结束时,形参值传给实参。(√)(5)所有函数定义都是并行的,相互独立的。(×)(6)函数的隐含存储类型是extern。(×)(7)形参可以是常量、变量或表达式。(×)(8)函数调用可以作为一个函数的形参。

(√)(9)C语言规定,实参应与其对应的形参类型一致。(×)(10)定义函数时,形参的类型说明可以放在函数体内。

4.程序填空题

(1)对数组按值从大到小的顺序排序后输出,请填空。#include 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

(2)下列函数在 n 个元素的一维数组中,找出最大值、最小值并传送到调用函数,请填空。#include void find(float *p, int max, int min, int n){ int k;*max=*p;for(k=1;k

5.写出下列程序运行结果(1)main(){ int i=1,p;p=fun(i,i+1);printf(”%dn“,p);} int fun(int a,int b){ int f;if(a>b)f=1;else if(a==b)f=0;else f=-1;return f;}-1

(2)键盘输入 abcdef #include void fun(){ char c;if((c=getchar())!='n')fun();putchar(c);} void main(){ fun();} fedcba(3)#include #define C 5 int x=1,y=C;void main(){ int x;x=y++;printf(”%d %dn“, x,y);if(x>4){ int x;x=++y;printf(”%d %dn“,x,y);} x+=y--;printf(”%d %dn“,x,y);} 5 6 7 7 12 6(4)#include 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,%dn“, 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(”%dn“, fun6(n));} 12(6)#include 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);else return(b);} 运行时若输入:10,15,9 则输出:___ 15 运行时若输入:300,129,300 则输出:___ 300(7)#include 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 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 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 第九章 预处理

A部分(本、专科必做)

一、选择题

以下不正确的叙述是(D)

A、宏替换不占用运行时间。B、宏名无类型。

C、宏替换只是字符替换。D、宏名必须用大写字母表示。C语言的编译系统对宏命令的处理(D)

A、在程序运行时进行的。B、在程序连接时进行。C、和C程序中的其它语句同时进行编译的。D、在对源程序中其它语句正式编译之前进行的。

3、以下程序的输出结果是(C)。A、15 B、100 C、10 D、150 #define MIN(x,y)(x)<(y)?(x):(y)void main(){ int I,j,k;i=10;j=15;k=10*MIN(i,j);printf(“%dn”,k);}

4、以下叙述中正确的是(D)

用#include包含的文件的后缀必须是“.h”。

若一些源程序中包含某个头文件;当该文件有错时,只需对该头文件进行修改,包含此头文件的所有源程序不必重新进行编译。宏命令行可以看作是一行C语句。预处理是在编译之前进行的。

5、以下叙述中正确的是(C)A、源程序中所有的行都参加编译。B、宏定义常量与const定义常量是一样的。

C、宏定义可以嵌套定义,即在宏定义中的字符串可以引用另一个宏定义的标识符。D、以上都不正确。

二、填空题

以下程序中for 循环执行的次数是 6。#define N 2 #define M N+1 #define NUM(M+1)*M/2 void main(){ int i;for(i=1;i<=NUM;i++);printf(“%dn”,i);}

2、以下程序的输出结果是 x=93。#define A 3 #define B(a)((A+1)*a)void main(){ int x;x=3*(A+B(7));printf(“x=%dn”,x);}

B部分(本科必做)

编程:请写出一个宏定义MYALPHA(c),用以判断c是否是字母字符,若是,得1,否则,得0。

解:#define MYALPHA(c)((c>=’A’&&c<=’Z’)||(c>=’a’&&c<=’z’)?1:0)第十章 指针

A部分(本、专科必做)

一、选择题

1、若有定义:int x,*pb;则以下正确的表达式是(A)A、pb=&x B、pb=x C、*pb=&x D、*pb=*x

2、以下程序的输出结果是(B)

A、因变量无定义输出不定值 B、0 C、-1 D、1 #include void main(){printf(“%dn”,NULL);}

3、以下程序的输出结果是(B)

A、5,2,3 B、-5,-12,-7 C、-5,-12,-17 D、5,-2,-7 #include void sub(int x,int y,int *z){*z=y-x;} void main(){ int a,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf(“%d,%d,%dn”,a,b,c);}

4、以下程序的输出结果是(C)A、4 B、6 C、8 D、10 #include void main(){ int k=2,m=4,n=6;int *pk=&k,*pm=&m,*p;*(p=&n)=*pk*(*pm);printf(“%dn”,n);}

5、已知指针p的指向(图一)的a[1],则执行语句*p++;后,*p的值是(B)。A、20 B、30 C、21 D、31 a[0] a[1] a[2] a[3] a[4] 10 20 30 40 50(图一)

6、已知指针p的指向(图一)的a[1],则表达式*++p的值是(B)。A、20 B、30 C、21 D、31

7、已知指针p的指向(图一)的a[1],则表达式++*p的值是(C)。A、20 B、30 C、21 D、31

8、以下程序的输出结果是(D)。A、23 B、24 C、25 D、26 #include void prtv(int *x){printf(“%dn”,++*x);} void main(){ int a=25;prtv(&a);}

9、以下程序的输出结果是(B)。

A、运行出错 B、100 C、a的地址 D、b的地址 #include void main(){ int **k,*a,b=100;a=&b;k=&a;printf(“%dn”,**k);}

10、以下程序运行后,输出结果是(D)。A)8 B)7 C)6 D)5 #include ss(char *s){ char *p=s;while(*p)p++;return(p-s);} main(){ char *a=”abded“;int i;i=ss(a);printf(”%dn“,i);}

二、填空题

1、若有定义:char ch;(1)使指针p指向变量ch的定义语句是 char *p=&ch。

(2)若已定义char *p;,使指针p指向变量ch的赋值语句是 p=&ch。(3)在(1)的基础上,通过指针p给变量ch读入字符的scanf调用语句是 scanf(“%c”,p)。

(4)在(1)的基础上,通过指针p给变量ch赋字符’a’的语句是*p=’a’。(5)在(1)的基础上,通过指针p用格式输出函数输出ch中字符的语句是printf(“%c”,*p)。

2、以下程序输出的是 C。void main(){ int i=3, j=2;char *a=”DCBA“;printf(”%c%cn“,a[i],a[j]);}

3、以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。void exchange(int *x, int *y){ int t;t=*y;*y= *x;*x= t;}

B部分(本科必做)程序填空:

1、下面程序的输出结果是 A B C D B C D C D D。char b[]=”ABCD“;void main(){ char *chp;for(chp=b;*chp: chp+=2)printf(”%s“,chp);printf(”n“);} 下面是一个字符串连接函数,请补充完整。void mystrcat(char *s1,char *s2){ char *p,*q;for(p=s1;*p;p++);for(q=s2;*q;q++)*p++=*q;*p=’’;} 第十一章 结构体与共用体 A部分(本、专科必做)

一、选择题

1、设有如下定义: struct sk {int a;float b;}data,*p;若有p=&data;,则对data中的a域的正确引用是(B)。A)(*p).data.a B)(*p).a C)p->data.a D)p.data.a

2、根据以下定义,能输出字母M的语句是(D)。

A、printf(“%cn”,class[3].name);B、printf(“%cn”,class[3].name[1]);C、printf(“%cn”,class[2].name[1]);D、printf(“%cn”,class[2].name[0]);struct person{char name[9];int age;};struct person class[10]={“John”,17,”Paul”,19,”Mary”,18,”Adam”,16,};

3、以下程序的输出结果是(D)。A、0 B、1 C、3 D、6 #include void main(){ struct emplx{int x;int y;}enum[2]={1,3,2,7};printf(“%dn”,enum[0].y/enum[0].x*enum[1].x);}

4、若有以下说明及语句,则值为6的表达式是(D)。A、p++->n B、p->n++ C、(*p).n++ D、++p->n struct st{int n;struct st *next;};struct st a[3],*p;a[0].n=5;a[0].next=&a[1];a[1].n=7;a[1].next=&a[2];a[2].n=9;a[2].next=’’;p=&a[0];

5、已知字符0的ASCII码的十进制的值是48,且数组的第0个元素在低位,以下程序的输出结果是(B)。A、39 B、9 C、38 D、8 void main(){ union{int i[2];long k;char c[4];}r,*s=&r;s->i[0]=0x39;s->i[1]=0x38;printf(“%xn”,s->c[0]);}

6、以下程序输出的结果是(C)。A、32 B、16 C、8 D、24 typedef union{long x[2];int y[4];char z[8];}MYTYPE;MYTYPE them;void main(){ printf(“%dn”,sizeof(them));}

7、设有以下语句 typedef struct S { int g;char h;} T;则下面叙述中正确的是(B)。

A)可用S定义结构体变量 B)可以用T定义结构体变量 C)S是struct类型的变量 D)T是struct S类型的变量

8、有以下说明和定义语句 struct student { int age;char num[8];};struct student stu[3]={{20,”200401“},{21,”200402“},{109,”200403"}};struct student *p=stu;以下选项中引用结构体变量成员的表达式错误的是(D)。A)(p++)->num B)p->num C)(*p).num D)stu[3].age

二、填空题

1、为了建立结构体(含有两个成员,data是数据成员,next是指向自身结构体的指针成员),请填空: Struct link { char data;struct link *next;}

2、把类型int另取一个类型名称INT,则以下应填:

下载电大 2014年7月 c语言 考试复习word格式文档
下载电大 2014年7月 c语言 考试复习.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    c语言期末复习

    谁能出线 电视台举办“超级学生”才艺大赛,由于报名人数狂多,所以要先进行分组预赛。按规定,每10名学生为一个预赛小组,评委打出分数(0~100分),各小组第一名可以进入下一轮;如果有多......

    C语言考试平台

    一 A+B Problem Time Limit:1000MS Memory Limit:65536K Total Submit:2153 Accepted:1096 Description Calculate a+b Input Two integer a,b (0......

    c语言期末复习试题

    下面程序运行时,如果从键盘上输入3,5,程序输出的结果是(C)。 void main(void) { int a,b,*pa,*pb; pa=&a; pb=&b; scanf("%d,%d",pa,pb); *pa=a+b; *pb=a+b; printf("a=%......

    2009年C语言考试(B)--

    课程名称:C语言程序设计广东工业大学考试试卷(B) 试卷满分 100分 考试时间:09年 5月 6日(第12周 星期三)注:所有答案要写在答题纸上一、单项选择题(共40分,每题2分) 1、一个可执行C程......

    大学C语言考试知识点

    1. 开始——程序——VC ++ 6.0 ——文件——新建——文件——C++ source file (C源文件) 2. 标准C 语言的后缀名.c 3. /* example1.1 The first C Program*/ 注释文字 不......

    C语言程序设计考试大纲

    《C语言程序设计》考试大纲 Ⅰ考试性质 普通高等学校本科插班生招生考试是由专科毕业生参加的选拔性考试。高等学校根据考生的成绩,按已确定的招生计划,德、智、体全面衡量,择......

    C语言程序设计考试系统

    《C语言程序设计》考试系统 C language progamme design examination system 马国富刘波 (安阳工学院 计算机工程系,河南 安阳455000) Ma GuoFu,liu bo (Department of Compute......

    大一C语言重点(大一学生复习必备)

    大一C语言重点。。。复习必备。。。。 总体上必须清楚的: 1)程序结构是三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和 switch) 2)读程序都要从main入口, 然......