《C语言期末复习.docx》由会员分享,可在线阅读,更多相关《C语言期末复习.docx(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第一章C语言概述一、选择题I、C语言程序由什么组成()A、子程序 B、主程序和子程序 C、函数 D、过程2、源程序要正确地运行,必须要有什么函数()A、Printf函数 B、自定义的函数 C、main函数 D、不需要函数 3、指出下面哪些是合法的A、3ab B、int C、ABC D、a_3E、sum.aF、#abc G、_stu2 H、abc f二、问答题1、C语言程序由哪几部分组成? C语言程序结构有什么特点?参考答案一、选择题1、C 2、C 3、CDG二、问答题见教案第二章基本数据类型、运算符及表达式一、选择题1、C语言中的数据的基本类型包括()A、整型、实型、字符型和逻辑型B、整型、实
2、型、字符型和结构体C、整型、实型、字符型和枚举型D、整型、实型、字符型和指针型2、在C语言中,不合法的int型常量是()A、32767 B、0678C、OXABC D、32768L3、在C语言中,运算对象必须是整型数的运算符是()A、B、C、和D、*4、若已定义X和Y为double型,则表达式:x=l,y=x+3/2的值是()Scanf(d,%d,%d”,&a,&b,&c);If(ab)If(bc)Printf(umax=%dnc);ElsePrintf(max=%dn”,b);Else if(a 100|score TrueD、非。3、若K为整型,以下while循环体中的语句执行一次Whil
3、c(k=O)prinif(d”,k);k-;prinlf(n”);A、无限次B、。次C、1次D、2次4、设i和x都是int类型,则以下for循环For(i=0,x=0;i=9&x!=876;i+)scanfC%d,&x);A、最多执行10次B、最多执行9次C、是无限循环D、循环体一次也不执行5、逻辑运算符两侧运算对象的数据类型A、只能是。或1B、只能是。或非。正数C、只能是整型或字符型数据D、可以是任何类型的数据二、填空题1、C语言三个循环语句分别是语句,语句和语句2、至少执行一次循环体的循环语句是3、循环功能最强的循环语句是三、看程序写结果1、main () int k=l,n=263 ;d
4、o k*= n%10 ; n/= 10 ; while (n);printfCt%dn,k);)2、main()int i,j,p,s;s=0;for(i=l;i=4;i+)P=l; for(j=l;j=i;j+)P=P*j; s=s+p; )Printf(tts=%dn,s);3、main()int i=l,s=3;Dos+=i+;If(s%7=0)continue;Else +i; while(s=4;k-)switch (k)(case 1:Case 4:Case 7:S+;Break;Case 2:Case 3:Case 6:Break;Case 0:Case 5:S+=2; Brea
5、k; )Prinlf(s=%d”,s);四、编程题1001、用while语句计算s= Z n =i2、求s=l+2+3+4+,直到s的值不小于28888,求此n的值为多少?3、判断m是否为素数4、求Fibonacci数列前40个数。这个数列有如下特点:第1、2两个数为1, I .从第3个数 开始,该数是其前面两个数之和。5、打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为153= + 53 + 33参考答案一、选择题1、A 2、A 3、B 4、A 5、A二、填空题1、while do-while for2、do-while
6、3、for三、看程序写结果1、362、 s=333、i=84、s=4四、编程题1、#includeMain()int i,s;s=0;i=I;while(i=100)(s=s+i;i+;)Printf(ts=%dn,s);)2、#includeMain()int i,s=0;For(i=l;i+)s=s+i;If(s=28888) break;Printf(uni=%d,i);3、#includeMain()int m.n;Scanf(d”,&m);For(n=2;nm-1 )printfCvn%d is a prime numbcr!nm); else printf(4in %d is no
7、t a prime numberin,m);I4、main()long int fl,f2;Int i;fl=l;f2=l;for(i=l;i=20;i+)printfC%121d%121d,fl,f2);If(i%2= =0)printf(“n”);fl=fl+f2;f2=f2+fl;I#includeMain() int n,i,j,k:For(n=100;nl(X)0;n+)i=n/100;j=n/10-i*10;k=n%IO;if(n= =i*i*i+j*j*j+k*k*k) printf(u%dn,n);第六章 数组一、选择题1、在C语言中,引用数组元素时,其数组下标的数据类型允许是
8、A、整型常量B、整型表达式C、整形常最或整形表达式D、任何类型的表达式2、以下对一维整型数组a的正确说明是一A、int a(10);int n=10,an;C、int n;scanf(%d,&n);int an;D、#define SIZE 10int aSIZE;3、若有定义:则对数组a元素的正确引用是A、a10 B、a3.5 C、a(5) D、a10-104、以下能对一维数组a进行正确初始化的语句是。A、int al 0= 0,0,0,0,0;B、inta10=;C、int a = 0;D、int a10= 10*1;5、若有定义:ina34,则对数组a元素的正确引用是A、a24B、al,
9、3 C、a(5) D、aI0-106、以下能对二维数组a进行正确初始化的语句是A、inta曰1,0,1,5,2,3);B、ima3=l,2,3,4,5,6;C、inta24=l,2,3,4,5,6);D、inta3=lAl,),1,1);7、若有说明:inta34=0;则下面正确的叙述是A、只有元素a00可得到初值。B、此说明语句不正确C、数组a中各元素都可得到初值,但其值不一定为0D、数组a中每个元素均可得到初值()8、下面是对s的初始化,其中不正确的是A、chars5=“abc”;B、char s5=ta;,b,;c,;d,e,0,);C、char s5= ”;D、char s5=,abc
10、def*;二、程序填空1、以下程序把一个由小到大的有序数列放在a1到an中,a0用作工作单元,程序把读入 的x值插入到a数组中,插入后,数组中的数仍然的序。请填空,完善程序。#includeint al0=0,12,17.20,25,28,x,i,n=5;Printf(44enter a number);Scanf(%d,&x);a0=x;i=n;while(aix)a(1)=ai;(2) ;al(3)=x;n+;for(i=l;i=_(4);i+) printf(“4d”,ai);1三、编程题1、用选择法对10个整数排序(从小到大)2、有一篇文章,共有3行文字,每行有80个字符。要求分别统计
11、出其中英文大写字母,小 写字母,中文字母,中文字符,数字,空格及其他字符的个数。(提示:中文字符是两个 字节,且数值均大于128的字符)。3、将一个数组中的值按逆序重新存放。例如:原来顺序为8, 6, 5, 4, lo要求改为1, 4, 5, 6, 8。参考答案一、选择题1、A 2、D 3、A 4、A 5、A 6、B 7、D 8、A二、程序填空(1) i+1i=i-l+i(4) n二、编程题1、main()int i,j,minjemp,a11;Printf(uentcr data:n); For(i=l;i=10;i+) printf(*a%d=v,i);ScanfCl%d&aiJ);)Pr
12、intf(n”);For(i=l;i=10;i+)Printf(“5cT,aiD;For(i=l;i=9;i+) rnin=i;For(j=i+l;jaj) rnin=j; Temp=ai;ai=amin; amin=temp;Printf(44n(he sorted numberin);For(i=l;i=10;i+)Printf(5d”,ai);)2、main()int ij,upp,Iow,dig,spa,oth;Chartext38O;Upp=low=dig=spa=o(h=0;For(i=0;i3;i+)printf(unplease input line %d:n”,i+); Ge
13、ts(texti);For(j=0;j,A,&textilj=,a,&textij=,0,&textij=,9,) Dig+;Else if (textij=)Spa+;ElseOth+;)For(i=0;i3;i+)Printf(sn”,tcxti);PrintfCupper case:%dnupp);Printf(lkuppcr casc:%dn”,low);Prinlf(digil:%dn”,dig);Printf(uspace:%dirspa);Prinlf(other:%dn”,oth);3、#define N 5Main()int aN,i,tcmp;PrinlfCenler ar
14、ray a:n);For(i=0;iN;i+)Scanf(d”,&ai);Printf(uari-ay a:n);For(i=0;iN;i+)Printf(4d”,ai);For(i=0;iN/2;i+) (temp=ai; ai=aN-i-l;aN-i-l=temp;PrintfC4n now,array a:n);For(i=0;iN;i+)Printf(4d”,ai);Printf(un,*);1第七章 函数一、选择题1、在C语言函数的定义和引用中,以下描述正确的是A、必须有形式参数B、也可以没有形式参数C、数组名不能作为形式参数D、形式参数必须是变量名2、以下函数定义形式正确的是A、d
15、ouble fun(int x, int y)z=x+y;Return z;)B、myfun(int x,y)int z;Return z;IC、myfun (x,y)int x,y;Double z;Z=x+y;Return z;)D、double fun (x, y)double z;z=x+y;return z;)3、在C程序中,下面描述正确的是A、函数的定义可以嵌套,但函数的调用不可以嵌套B、函数的定义不可以嵌套,但函数的调用可以嵌套C、函数的定义和函数调用都可以嵌套D、函数的定义和调用都不可以嵌套4、若调用一个函数,且此函数中没有relurn语句,则正确的说法是A、该函数没有返回值B
16、、该函数返回若干个系统默认值C、能返回一个用户所希望的函数值D、返回一个不确定的值A、1B、2C、2.0D、2.55、若t为double类型,表达式t=l,t+5,l+的值就是()A、1B、6.0C、2.0D、 1.06、若有定义:inta=10, b=9, c=8;执行下面两条语句 c=(a-=(b-5); c=(a%l l)+(b=3);后, 变量b的值为()A、9B、4C、3D、27、设inta=12,则执行完语句a+=a-=a*a后,a的值是A、22B、264C、 144D、 -264二、问答题:1、简述匕和“a”的区别。参考答案一、选择题K C 2、D 3、A 4、D 5、D 6、C
17、 7、D二、问答题穹是字符常量”屋是字符串常量C语言规定:在每一个字符串的结尾加一个“字符串结束标志”,以便系统据此判断字符串 是否结束。C语言规定以字符,(T作为字符串结束标志。如果有个字符串china,实际上 在内存中是占内存不是5个字节,而是6个字节,最后一个是、(V。第三章顺序结构程序设计一、选择题1、putchar ()函数可以向终端输出一个A)整型变量表达式值B)实型变量值C)字符串D)字符或字符型变量值2、.已有如下定义和输入语句,若要求al,a2,cl,c2的值分别为10, 20, A和B,当从第一列 开始输入数据时,正确的数据输入方式是int al,a2; char cl,c
18、2;scanfr%d%c%d%c、,&a l,&c I,&a2,&c2);5、C语言规定,函数返回值的类型是由决定的A、return语句中的表达式类型B、调用该函数时的主调函数类型C、调用该函数时由系统临时D、在定义函数时所指定的函数类型6、以下不正确的说法是A、全局变量,静态变量的初值是在编译时指定的B、静态变量如果没有指定初值,则其初值为0C、局部变量如果没有指定初值,则其初值不确定D、函数中的静态变晨在函数每次调用时,都会重新设置初值二、填空题1、C语言函数返回类型的默认定义类型是 2、函数的实参传递到形参有两种方式:和3、在一个函数内部调用另一个函数的调用方式称为 。在一个函数内部直接
19、或间接调 用该函数成为函数 的调用方式4、C语言变量按其作用域分为 和5、凡在函数中未指定存储类别的局部变量,其默认的存储类别为三、看程序写结果1、#includcInt abc(int u,int v);Void main()int a=24,b=16,c;c=abc(a,b);printf(ttvalue=%d,c);Int abc(int u. int v)(int w;While(v)w=u%v;u=v;v=w;)Return u;)2、#includeintxl=30,x2=40;main()int x3=10,x4=20;sub(x3,x4);sub(x2,xl);primf(d,
20、%d.%d,%dn”,x3,x4,x I,x2);sub(in( x,int y)xl=x;x=y;y=xl;)3、#includeMain()int i=5;Prinlf(%dn”,sub(i);)sub(inl n)int a;If(n=l) return 1;a=n+sub(n-l);return (a);I4、#includeVoid fun()static int m;m+=2;printf(*%d m);)Main()int a;For(a= I ;a=4;a+) fun();Printf(“n”);)四、编程题1、编写一个函数,判断任一整数是否为素数,用main。函数调用并测试之
21、。2、用递归方法求n!3、有一个一维数组,内放10个学生成绩,写一个函数,求出平均分,最高分和最低分参考答案一、选择题1、B 2、D 3、B 4、A 5、D 6、A二、填空题1、整型2、值传递、地址传递3、递归、嵌套4、全局变量、局部变量5、自动局部变量二、看程序写结果1、Value=82、10,20,40,403、154、2468三、编程题1、#include#includeInt prime(int x)int i,flag=l;For(i=2:i=sqrt(x);i+)If(x%i=O) flag=O;If(nag=l)Return 1;ElseReturn 0;Main()int x;
22、Scanf(d”,&x);If(prime(x)= 1 )printf(M%d is a prime.n,x);Else printf(4t%d is not a primen.,x);2、float fac(int n)float f;If(n0) prinlf(nvO,dataerror!);Else if(n=0|n=l)f=l;Else f=fac(n-l)*n;Return(f);IMain()int n;Float y;Printf(input an interger number:,);Scanf(d”,&n);y=fac(n);printfC%d!=%IO.Of;n,y);3、
23、float max=0,min=0;float average(float array,int n)inti;Float aver,sum=arrayO;Max=min=array0;For(i=l ;imax)max=array i;El se i f(array i mi n)mi n=array i ;Suin=sum+arrayi;1aver=sum/n;rcturn(avcr);IMain()float ave,score 10;Int i;For(i=0;i10;i+)Scanfr%f;&scoreil);Ave=average(score, 10);Printf(t=a,&c=A
24、&cn2) swap(pl,p2);if(n I n3) swap(p l,p3);if(n1n3) sw叩(p2,p3);printf(;now,thc order is:%d,%d,%dn,nl,n2,n3);ISwap(int *pl,int *p2)int p;p=*p l;*p 1 =*p2;*p2=p;)2、main()int len;Char *str20;Printfflnput string:);Scanf(s”,str);Len=length(str);PrintffThe length of string is %d?len);1Length(char *p)int n;
25、N=0;While(*p!=,0,)n+;P+;IRcturn(n);I3、main()int a33,*p,i;PrintfCinput matrix:n);For(i=0;i3;i+)Scanf(u%d %d %d,&ariO,&air I ,&ai2);p=&a00;move(p);printf(now,matrix:n);for(i=0;i3;i+)printf(M%d %d %dn,ai0,ail,ai2);)Move(int *pointer)int i,j;For(i=0;i3;i+)For(j=i;j3;j+)t=*(pointer+3*i+j);*(pointer+3*i-t
26、j)=*(pointer+3*j+i);*(pointer+3*j+i)=t;)4、main()int i,n;Char *p,num20;Printffinput n:);ScanfC%d,&n);Printffplease input these numbers:n,);For(i=0;in;i+)Scanf(d”,&numi);P=&numO;Sort(p,n);Printf(unow,the sequence is:n);For(i=0;in;i+)Printf(%d”,numi);)Sorl(char p,int m)inti;Char temp,*pl,*p2;For(i=0;im
27、/2;i+)pl=p+i;p2=p+(m-l-i);tcmp=*pl;*pl=*p2;*p2=tcmp;第十章结构体与共用体一、选择题1、定义结构类型时,下列叙述正确的是一A、系统会按成员大小分配每个空间B、系统会按最大成员大小分配空间C、系统不会分配空间D、以上说法均不正确2、已知结构类型变量x的初始化值为“20”,30,40,35.5,请问合适的结构定义是一A、 Struct sint no;int x,y,z);B、 Struct schar no2;int x,y,z;C、 Struct sint no;float x,y,z;D、Struct schar no2;float x,y,
28、z;若程序中有定义struct abcint x;char y;);abc si,s2;则会发生的情况是A、编译时会有错误B、链接时会有错误C、运行时会有错误D、程序没有错误二、编程1、己有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号 升序排列。参考答案选择题1、C 2、D 3、A二、编程题1、#include#define null 0#define LEN sizeof(struct student)Struct studentlong num;Int score;Struct student *nexl;;Struct student listA.IistB
29、;Int n,sum=0;Main()struct student *creat(void)Struct student *inscrt(struct student *,struct student *);Void print(struct student *);Struct student *ahcad,*bhcad,*abh;PrintfCninpu( list a:rT);ahead=creat();sum=sum+n;printfCinput list b:n);hhead=creat();sum=sum+n;abh=inscrt(ahcad,bhcad);print(abh);IS
30、truct student *creat(void)struct student *pl,*pl,*head;n=0;pl=p2=(struct student *)malloc(LEN);printf(uinput number & scores of studcnt:nM);prinlf(uif number is O.stop inputing,n);scanf(ld,%d”,&p 1 -num,&p 1 -score);head=null;while(pl-num!=O)n=n+l;If(n=l)head=pl;Else p2-next=p I;P2=pl;p 1 =(struct s
31、tudent*)malloc(LEN); scanf(ld,%d”,&p I -num,&p I -score);p2-nexl=null;return(head);1Struct student *insert(strucl studenl*ah,struct *bh)struct student *pa 1 ,*pa2,*pb l,*pb2;pa2=pal=ah;pb2=pbl=bh;dowhile(pb 1 -numpa 1 -num)&(pa 1 -next!=null) pa2=pal;pl=pai-next;)If(pb I -numnum)if(ah=pal)ah=pbI;els
32、e pa2-next=pbl;pbl=pbl-ncxt;pb2-next=pa 1;pa2=pb2;pb2=pbI;)While(pal-next!=null)|(pal=null&pbl !null);If(pb l-numpal -num)&(pa 1 -next=null) pal-next=pbl;rcturn(ah);IVoid print(struct student 水head)struct student *p;Printf(un there are %d records:n,sum);p=head;if(p!=null)doprintfr%ld %dn,p-num.p-sco
33、re);p=p-next;While(p!=null);A) 10A 2OB/B) 10A20B/C) 10A20BZC) 10A20B/3、执行下列程序片段时输出结果是int x=13,y=5;printfC%d,x%=(y/=2);A) 3 B) 2 C) I D) 04、若定义x为double型变量,则能正确输入x值的语句是A) scan偿%r,x);B) scanfC%,&x);C) scanfr%lf;&x);D) scan%5.ir,&x);5、.已知i,j,k为int型变量,若从键盘输入:1,2,3回车,使I的值为1, j的值为2, k的 值为3,以下选项中正确的输入语句是一A)
34、 scanf(“2d%2d%2d”,&i,&j,&k);B) scanfT%d_%d_%d”,&i,&j,&k);C) scanf(%d,%d,%d”,&i,&j,&k);D) scanf(i=%d,j=%d,k=%d”,&i,&j,&k);6、有输入语句:scanf(uad,b=%d,c=M,&a,&b,&c); a 1, b 的值为 3, c 的值为2,则正确的数据输入方式是A) 132/B) 1,3,2/C) a= 1 b=3 c=2/D) a=l,b=3,c=2Z二、看程序写结果1、用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,cl=,Ac2=a问在键盘上如何输 入?(一表示空格)main () int a,b;float x,y;char cl,c2;scanf(a=%(Lb=%d,&a,&b);scanf( %f J*%e”,&x,&y);scanffJ %cJ* %c,&cl,&c2);第十一章位运算编程题I、设计一个函数,使给出一个数的原码,能得到该数的补码参考答案Main()unsigned int a;Unsigned int getbits(unsigned);Printf(ninput an