C语言期末复习题答案.doc

上传人:s****u 文档编号:12806804 上传时间:2020-05-25 格式:DOC 页数:19 大小:143.50KB
返回 下载 相关 举报
C语言期末复习题答案.doc_第1页
第1页 / 共19页
C语言期末复习题答案.doc_第2页
第2页 / 共19页
C语言期末复习题答案.doc_第3页
第3页 / 共19页
点击查看更多>>
资源描述
基本数据类型一、选择题 1下列数据中,不正确的数值或字符常量是( )。A0.825e2 B5L C0xabcd D o132以下字符中,不正确的C语言转义字符是( )。 A B018 /p19 /8进制里没有8以上的数字Cxaa Dt 3已知大写字母A的A SCII码值是65,小写字母a的A SCII码是97,则用八进制表示的字符常量101是( )。 A字符A B字符a C字符e D非法的常量 4以下选项中可作为C语言合法整数的是( )。 A10110B B0386 C0Xffa Dx2a2 5以下符合C语言语法的实型常量是( )。 A1.2E0.5 B3.14.159E C.5E3 DE15 /p186已定义ch为字符型变量,以下赋值中错误的是( )。 Ach=; Bch=62+3; Cch=NULL; Dch=xaa; 7已定义c为字符型变量,则下列赋值中正确的是( )。 Ac=97; Bc=97; Cc=97; Dc=a; 8C语言中最基本的数据类型包括( )。 A整型、实型、逻辑型 B整型、实型、字符型 /P14图2.1 C整型、字符型、逻辑型 D整型、实型、逻辑型、字符型 9在C语言中,合法的字符常量是( )。 A. 084 B x43 C ab D 010已知在ASCII代码中,字母A的序号为65,以下程序的输出结果是( )。 #include main( ) char c1=A , c2=Y ; printf(%d,%dn , c1 , c2) ; A输出格式非法,输出错误信息 B65, 90 CA, Y D65, 89二、填空题 1C语言中,常量包括_整型常量、_实型常量_、字符型常量_和_字符串常量_。 2C语言中,数据类型包括基本类型、构造类型、指针类型、空类型。 3字符串ab在C语言中表示为 “ab” 。4. C语言中的变量实际代表内存中的一个存储单元_。/P165. 在C语言中,整数可用10进制数、8进制数与16进制数3种来表示,以0x打头的是 16 进制数,以0打头的是 8 进制数。 /P176若有说明语句:char c=035;则变量c包含 1 个字符。三、简答题1C语言的基本数据类型有几种/3,分别是什么,并指出各种数据类型的关键字?intfloatchar/2. 常量和变量的区别是什么?/不变/变 3. 在程序中如何使用变量?/先定义,后使用4字符和字符串表示形式有什么区别?a和a有什么不同?9和9有何不同?空字符0和空格字符 有何区别?/” 字符:一个字节 。字符串:最少两个(双引号里面字符个数+1)运算符与表达式一、选择题1在下列运算符中,优先级最高的运算符是( )。 /P28A0; /+只能为变量,i+1是表达式8设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是( )。 A6.500000 B6 C5.500000 D6.000000 /P22P239若有以下程序: /26main() int k=2,i=2,m ; m=(k+=i*=k); printf(%d,%dn,m,i); 执行后的输出结果是( )。 A8,6 B8,3 C6,4 D7,4 10若有定义: int a=8, b=5, c; 执行语句c=a/b+0.4;后,c的值为( )。 A1.4 B1 C2.0 D2 11下列选项中哪个是合法的标识符( )。/P14Achar B5abc Ct_a D_*m2二、填空题 1C语言中的表达式包括算术表达式、关系表达式、逻辑表达式、逗号表达式、条件表达式和赋值表达式。/P242C语言中的结合方向有自左向右和_自右向左。3若有定义:int a=0;则执行赋值语句a+=a*=a% =a-=15;后变量a中的值是_0_。/P26 4printf(% dn,(int)(2.5+3.0)/3);的输出结果是_1_。/5/3=15设int x=9; 执行 x+=3+x%(-3);后x的值为 12 。6假设变量a为整型,则执行a=3+5,a*4;printf(% dn,a);后的输出结果是_8。7条件:“0x0&x8)|(x65的值为 0 。/76 15/P2712设a=0,b=1,c=2,则表达式a|b+c&b=c的值是 0 。/P29三、计算下列各表达式的值。15/2+5.0/2+7%6 /5.5 /2+2.5+12a=3,b=4,c=5,a+bc&b=c/03a=3*5,a*4,a+5/204521/0 四、编程题1输入一个整数,取出它的个位数部分。/n%102输入一个浮点数,分别输出它的整数部分和小数部分。 顺序结构程序设计一、选择题1请选出合法的C语言赋值语句( )。 Aa=b=58 B(i+1)+ ; Ca=58, b=58 Dk=(int)a+b ; /分号结束2以下选项中,不正确的赋值语句是( )。At=t+1; Bn1=(n2=(n3=0); Ck=i=j; Da=b+c=1; 3若有定义:int a,b,c;,要给变量a,b,c输入数据,正确的输入语句是( )。 Ascanf(% d% d% d,& a,& b,& c); Bscanf(% D% D% D ,& a,& b,& c); Cread(a,b,c); Dscanf(% d% d% d,a,b,c);4 阅读程序: #include main( ) int a ; float b , c; scanf(% 2d% 3f% 4f , & a , & b , & c); /p41 printf(na=% d , b=% f , c=% f , a , b , c); 若运行时从键盘上输入987654321,则程序的输出结果是( )。 Aa=98 , b=765 , c=4321 Ba=98 , b=765.000000 , c=4321.000000 Ca=98 , b=765.0 , c=4321.0 Da=98.0 , b=765.0 , c=4321.0 5已知字母A的A SCII码为十进制的65,下面程序的输出结果是( )。 #include main( ) char ch1 , ch2 ; ch1=A +5-3 ; ch2=A +6-3 ; printf(% d , % cn , ch1 , ch2) ; A67 , D BB , C CC , D D不确定的值 6设有如下定义: int x=10 , y=3 , z ; 则语句: printf(% dn , z=(x% y , x/y) ; 的输出结果是( )。 A1 B0 C4 D3 7 若有以下定义和语句: char c1=b , c2=e ; printf(% d,% cn , c2-c1 , c2-a+A ) ; 则输出结果是( )。 A2 , M B3 , E C2 , E D输出结果不确定 8以下叙述中正确的是( )。 A输入项可以是一个实型常量,例如: scanf(% f , 3.5) ; B只有格式控制,没有输入项,也能正确输入数据到内存,例如: scanf(a=% d , b=%d) C输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如: scanf(% 4.2f , &d) ; D当输入数据时,必须指明变量地址,例如: scanf(% f , &f) ;二、填空题 1结构化程序设计所规定的三种基本控制结构是顺序结构、选择结构、循环结构结构。2输出字段宽为4的十进制数应使用%4d,字段宽度为6的十六进制数应使用%6x,八进制整数应使用%6o,字段宽度为4的字符应使用%4c,字段宽度为8,保留3位小数的实数应使用%8.3f,字段宽度为5的字符串应使用%5s。/p373若有定义:int x=0;,则执行赋值语句:x=(x=3+5,x*5);后,变量x中的值是_40_。 4下面程序的输出结果是_17,21,11_。 #include main( ) int k=17 ; printf(% d , % o , % x n , k , k , k) ; 5若有定义:int a=0,b=0,c=0;用下面语句输入时 scanf(% d,& a); scanf(% d,& b); scanf(% d,& c); 从键盘输入: 1045 则执行输入语句后,变量a的值是 10 ,变量b的值是_4_,变量c的值是_5_。 /p40三、编程题 /p361编写程序,输入两个整数,求出它们的商数和余数并进行输出。 2从键盘输入一个字符,输出这字符的A SCII码的值。 3用x,y,z表示长方体三边边长,编写程序求其表面积a和体积v,然后进行输出。其中x,y,z通过键盘输入。 4编写程序,从键盘上输入两个电阻的值,求它们并联和串联的电阻值,输出结果保留两位小数。【提示】并联和串联的电阻值计算公式如下: 并联电阻 串联电阻RS=R1+R2 选择结构程序设计一、选择题1对于条件表达式(m )?(a+):(a-)来说,其中的表达式m等价于( )。 A m =0 B m =1 C m!=0 D m!=1 2下述程序( )。 main() int x=0,y=0,z=0; if(x=y+z) /x=y+z /x=y+zprintf(#); else printf(*); A有语法错误,不能通过编译 B输出* C可以编译,但不能通过连接,因而不能运行 D输出#3下列条件语句中,功能与其他语句不同的是( )。 Aif(a) printf(% dn, x); else printf(% dn, y); Bif(a=0) printf(% dn, y); else printf(% dn, x); Cif (a!=0) printf(% dn, x); else printf(% dn, y); Dif(a=0) printf(% dn, x); else printf(% dn, y);4有以下程序: main() int a=5, b=4, c=3, d=2; if(abc) printf(% dn, d); else if(c1=d) = 1) printf(% dn, d+1); else printf(% dn, d+2); 执行后输出结果是( )。 A2 B3 C4 D编译时有错,无结果5有以下程序: main() int a=3, b=4, c=5, d=2; if(ab) if(bc) printf(% d, d+ +1); else printf(% d, +d +1); printf(% dn, d); 程序运行后的输出结果是( )。 A2 B3 C43 D44 6以下程序 int i,a=3,b=2; i=(-a=b+)?-a:+b; /b+执行 ,+b不执行printf(i=%d a=%d b=%d,i,a,b); 输出结果是( )。 A i=1 a=1 b=3 Bi=3 a=2 b=3 Ci=4 a=1 b=4 Di=4 a=2 b=4 7以下能够正确判断char型变量c是否为大写字母的表达式是( )。 A (A =c) B (A =c) C (A =c) D 以上答案都不对 /(c=a)&(c=z)8有如下程序 main() int x=1,a=0,b=0; switch(x) case 0: b+; case 1: a+;/a=1/breakcase 2: a+;b+; /a=2 b=1 printf(a=%d,b=%dn,a,b); 该程序的输出结果是( )。 A a=2,b=1 B a=1,b=1 C a=1,b=0 D a=2,b=28h 二、填空题 1条件:“20x30或x20)&(x30)|(xc);b=a;a=c;c=b; 语句后a=1,b=3,c=3。 /if的语句为;3设“a=1, b=2,c=3,d=4;”则表示式“ab?a:cd?c:d”的值是 4 。 4 以下程序运行的输出结果是 0 。 main() int p=30; printf(%dn,(p/320?p/10:p%3); 5写出运行结果。#include main() int x=0,y=0,z=0; if(x=y+z) printf(!); else printf(#);结果:_#_。6下列程序的功能是把从键盘上输入的整数取绝对值后输出。 main() int x; scanf(%d,_&x _); if(x0) _x=-x_; printf(%dn,x); 7写出运行结果。#include main() int x=0,a=0,b=1;switch(x) case 0: a+,b+; break; case 1: a+; case 2:b+;printf(“a=%d,b=%dn”,a,b);结果:_a=1,b=2_。三、编程题 1编程实现,输入一个整数,判断该数的奇偶性(输出相应的标志:even偶数,odd奇数)。 2编程实现,输入一个平面上的点,判断它是否落在单位圆上,并显示相应的信息。3编程实现,给定一个整数,判断它是否能同时被3、5、7整除。4编写程序,从键盘输入3个整数,按由小到大次序输出这3个数。5编写程序,输入一个x值,计算分段函数的值。循环结构程序设计一、选择题1在C语言中,为了结束由while语句构成的循环,while后一对圆括号中表达式的值应该为( )。A 0 B 1 Ctrue D非02如下程序段执行后输出()。main()int num =0;while(num =2) num +;printf(% d ,num );A1 2 3 4 B1 2 C1 D1 2 33下面程序段执行时()。x=-1;do x=x*x;while(!x);A循环体将执行一次 B循环体将执行两次C循环体将执行无限次 D提示有语法错误4以下的for循环( )。for(x=0,y=0;(y!=123)&(x4);x+); A执行3次 B执行4次C循环次数不定 D是无限循环5执行语句:for(i=1;i+4;)后,变量i的值是( )。A3 B4 C5 D不定6下面的程序段执行后sum的值是()。main()int i,sum ;/sum没有赋初值for(i=1;i100)break;/没有循环增量i+Bfor(;);/ for(;)相当于while(1)Cint k=1000;do+k;while(k=10000);/k=1001=100) break; s+=i; i+;功能相同的语句是( )。Afor(;i100;i+) s=s+i; Bfor(;i=100;i+) s+=i;Cfor(;i=100;i+,s=s+i);二、填空题1这个while循环的输出结果是 1 4 9 16 25 。i = 0;while (i 5) i+;printf(%d , i * i);2有以下程序: #include main() char c; while(c=getchar()!=?) putchar(-c); 程序运行时,如果从键盘输入:B ?C?,则输出结果为 A 。3假定a和b为int型变量,执行下面程序段后b的值为 8 。a=1;b=10;dob-=a;a+; while(b-0);4若所有变量都已正确定义,下列程序的输出结果是 YESYES 。for(i=0;i2;i+) printf(“YES”); printf(“n”);5执行下列程序后,输出“*”号的个数是6 。#include”stdio.h”main() int i,j; for(i=1;i5;i+) for(j=2;j=i;j+) putchar(*);三、编程题1计算1-3+5-7+-99+101的值。 2编写程序从输入的三个数中找出最大值和最小值。3编写程序,判断从键盘输入的一个整数是否是素数,是素数就输出“This is a prime number”,不是素数就输出“This is not a prime number”。4求10到100之间的全部素数。5编写程序输出如下所示的图形。*数组一、选择题(1) 在C语言中,引用数组元素时,其数组下标的数据类型允许是 。A)整型常量 B)整型表达式C)整形常量或整形表达式 C)任何类型的表达式(2) 以下对一维整型数组a的正确说明是 。A)int a(10) ; B)int n=10,an;C)int n; D)#define SIZE 10 scanf(“%d”,&n); int aSIZE;int an;( 3) 若有定义:int a10,则对数组a元素的正确引用是 。A)a10 B)a3.5 C)a(5) D)a10-10(4) 以下能对一维数组a进行正确初始化的语句是 。A)int a10=0,0,0,0,0; B)int a10= ;C)int a = 0 ; D)int a10=10*1 ; (5) 若有定义:int a34,则对数组a元素的正确引用是 。A)a23 B)a1,3 C)a(5) D)a10-10(6) 以下能对二维数组a进行正确初始化的语句是 。A)int a2=1,0,1,5,2,3 ;B)int a3=1,2,3,4,5,6 ;C)int a24=1,2,3,4,5,6 ;D)int a3=1,0,1,1,1 ;(7) 若有说明:int a34=0;则下面正确的叙述是 。A)只有元素a00可得到初值0B)此说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0D)数组a中每个元素均可得到初值0(8) 若有说明:int a4=0,0;则下面不正确的叙述是 。A)数组a的每个元素都可得到初值0B)二维数组a的第一维大小为1C)因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1D)只有元素a00和a01可得到初值0,其余元素均得不到初值0(9) 若二维数组a有m列,则计算任一元素aij在数组中位置的公式为。(设a00位于数组的第一个位置上)A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+1(10) 若有说明:int a3=1,2,3,4,5,6,7;则数组a第一维大小是 。A)2 B)3 C)4 D)无确定值(11) 下面程序段的输出结果是 。int k,a33=1,2,3,4,5,6,7,8,9;for (k=0;k3;k+) printf(“%d”,ak2-k);A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7(12)下面是对s的初始化,其中不正确的是 。A)char s5=“abc”; B)char s5=a,b,c;C)char s5=” ”; D)char s5=”abcdef”;(13)下面程序段的输出结果是 。char c5=a,b,0,c,0printf(“%s”,c);A)ab B)ab C)ab c D)abc(14)判断字符串a和b是否相等,应当使用 。A)if (a=b) B)if (a=b)C)if (strcpy(a,b) D) if (strcmp(a,b)(15)下列四种数组定义中,合法的数组定义是( )。 A) char a =“hello” ; B) int a4=4,3,2,1,0;C) char a=“hello” ; D) char a5= “hello” ; (16)已知数组float a43;该数组行下标的范围是( )。A) 03 B) 13 C) 02 D) 12二、写出运行结果。1.#include main()int i,t,a5=1,2,3,4,5;for(i=0;i2;i+) t=ai; ai=a4-i; a4-i=t; for(i=0;i5;i+)printf(%2d,ai);printf(n); 结果:5 4 3 2 1。2. #include main() int i,j,row,col,min; int a34=1,2,3,4,9,8,7,6, 1, 2,0,5; min=a00; row=0; col=0; for(i=0;i3;i+) for(j=0;j4;j+) if(aijmin) min=aij; row=i; col=j; printf(min=%d,row=%d,col=%dn,min,row,col); 结果:min=0,row=2,col=2。三、编程题。1. 用数组求Fibonacci数列前20个数,Fibonacci数列指的是这样一个数列:1,1,2,3,5,8,13,21这个数列从第三项开始,每一项都等于前两项之和。#include void main() int fib20=1,1; int i; for(i=2;i20;i+) fibi=fibi-1+fibi-2; for(i=0;i20;) printf(%5d ,fibi); i+; if(i%5=0) printf(n); getch();2. 将输入数组an中的n个元素,再输入另一个数x,查看a中是否有值为x的元素,若有,则输出其下标,若没有,则输出-1。3. 求数组int an中奇数的个数和平均值,以及偶数个数和平均值。函数 一、选择题(1)C 语言规定:源程序中main函数的位置( )。A必须在最开始 B必须在系统调用的库函数的后面C必须在后面 D可以任意(2)以下正确的说法是( ) 。A实参和与其对应的形参各占用独立的存储单元B实参和与其对应的形参共占用一个存储单元C只有当实参和与其对应的形参同名时才共占用相同的存储单元D形参时虚拟的,不占用存储单元(3)对于C程序的函数,下列叙述中正确的是( )。A函数的定义不能嵌套,但函数调用可以嵌套B函数的定义可以嵌套,但函数调用不能嵌套C函数的定义和调用均可以嵌套D函数的定义和调用均不能嵌套 (4)下列宏定义语句中,不正确的是( )。A#define Y 1 B#include “math.h”C#include D#define PI=3.14 (5)若调用一个函数,且此函数中没有return语句,则正确的说法是( ) 。A该函数没有返回值B该函数返回若干个系统默认值C能返回一个用户所希望的函数值D返回一个不确定的值(6)若用数组名作为函数调用的实参,传递给形参的是。A数组的首地址 B数组中第一个元素的值C数组中的全部元素的值 D数组元素的个数(7)关于函数声明,以下不正确的说法是。A如果函数定义出现在函数调用之前,可以不必加函数原型声明B如果在所有函数定义之前,在函数外部已做了声明,则各个主调函数不必再做函数原型声明C函数在调用之前,一定要声明函数原型,保证编译系统进行全面的调用检查D标准库不需要函数原型声明(8)函数定义时,形参是整型变量,则函数调用时,实参不可以是 ( )。 A整型常量 B字符型常量 C数组名 D整型表达式二.填空(1)C语言函数返回类型的默认定义类型是 int 。(2)函数的实参传递到形参有两种方式: 值的传递 和 地址的传递 。(3)在一个函数内部调用另一个函数的调用方式称为 函数的嵌套调用 。在一个函数内部直接或间接调用该函数称为函数 递归调用 的调用方式。(4)从变量的作用域来分,变量可以分为 局部变量和 全局变量 。(5)若函数定义为int data( ) float x=3.7;return(x); 则函数返回的值是_3_。三、编程题1. 请编写程序,运用函数调用的方法计算分段函数y的值。要求数据的输入和输出在主函数中完成,而计算分段函数的值在子函数中完成。#include float fdhs(float x); void main() float x,y; scanf(%f,&x); y=fdhs(x); printf(%f,y); getch();float fdhs(float x) float y; if(x7) y=x*x; else if(x12) y=10; else y=x*x*x-1; return y; 编写一个判断一个数是否是素数的函数,是素数就输出“This is a prime number”,不是素数就输出“This is not a prime number”。2.#include #include int isprime(int n); void main() int n,m; scanf(%d,&n); m=isprime(n); if(m=1) printf(This is a prime number); else printf(This is not a prime number); getch();int isprime(int a) int i; if(a=1) return 0; for(i=2;i=sqrt(double)a);i+) if(a%i=0) return 0; break; return 1; 3. 编写一个函数,计算下面算式前100项之和,并将计算结果返回到主调函数。1+1/3+1/5+1/7+.#include float fun1(int n); void main() printf(%f,fun1(200); getch();float fun1(int n) int i; float sum=0; for(i=1;in;i+=2) sum+=1.0/i; return sum;4. 编写一个函数,计算n的阶乘,并将计算结果返回到主调函数输出。#include long int fun1(int n); void main() int n; scanf(%d,&n); printf(%ld,fun1(n); getch();long int fun1(int n) int i; long int fab=1; for(i=1;i=n;i+) fab*=i; printf(%ldt,fab); return fab;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!