C语言作业(81页).doc
-C语言作业-第 81 页C语言第一章 C语言概述一、填空 1. *C语言中任何程序的运行总是从主函数开始,在( )函数中结束。 答:main函数2. *一个C语言程序总是从( )函数开始执行。 答:main()3. *C语言源程序的扩展名为( )。 答:*.c4*C语言源程序的扩展名为*.C、目标文件的扩展名为( )、可运行文件的扩展名为( )。 答:*.obj *.exe 5*C语言属于面向( )语言。 答:过程6. *C语言程序的注释可以出现在程序的任何地方,它总是以( ) 符号作为开始标记,以( )符号作为结束标记。 答:/* , */7. *C语言中规定标识符只能由字母、数字、下划线组成,且第一个字符必须是( )或( )。 答:字母,下划线8. *结构化设计中的三种基本结构是( )、( )和循环结构。 答:顺序, 选择9. * *程序开发的四个步骤是( )、 ( )链接和执行。 答:编辑, 编译二、单项选择题 (每题2分)1*在C程序中所用的变量使用前( ) (A)可以不定义 (B)先定义后使用 (C)随时定义随时用 (D) 其他 答:b2*C语言程序从main()函数开始执行,所以这个函数要写在( )。A) 程序文件的开始 B) 程序文件的最后C) 它所调用的函数的前面 D) 程序文件的任何位置 答:d3. * *下列关于C语言的叙述错误的是( )A) 大写字母和小写字母的意义相同B) 不同类型的变量可以在一个表达式中C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义 答:a4. *一个C程序的执行是从( )。 A)本程序的main函数开始,到main函数结束 B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C)本程序的main函数开始,到本程序文件的最后一个函数结束 D)本程序文件的第一个函数开始,到本程序main函数结束 答:a5. * *以下叙述正确的是( )。 A)在C程序中,main函数必须位于程序的最前面 B)C程序的每行中只能写一条语句 C)C语言本身没有输入输出语句 D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误 答:c6. * *以下叙述不正确的是( )。 A)一个C源程序可由一个或多个函数组成 B)一个C源程序必须包含一个main函数 C)C程序的基本组成单位是函数 D)在C程序中,注释说明只能位于一条语句的后面 答:d7. *一个C语言程序是由( ) 。A)一个主程序和若干子程序组成 B)函数组成 C)若干过程组成 D)若干子程序组成 答:B 第三章 数据类型、运算符与表达式一、填空 1、* *x=2,y=-3,z=3,则表达式x|y+z&&y-z的值为 ( )。 答: 2、*在C语言中实型变量分为两种类型,它们是( )和 ( )。 答: float double 3 * *、十进制11转化为八进制的值为( )。 答:134、* *十进制数159转换为八进制数是( ) 答:2375、* *已知int x=6; 表达式x%2+(x+1)%2的值是( )。 答:16、*C语言中char型变量在内存中占( ) 个字节的内存单元 答:17、*C语言的变量名:TEA与tea是( )同的。 答:不8、* *设x的值为15,n的值为2,则表达式x%=(n+=3)运算后,x的值为()。 答: 0 9、* *表达式( 5<3) && (2 | 8<4 ) 的值是( )。 答:假 010、* *十六进制数2a转换为十进制数是( )。 答:4211、* *计算 x 、 y 之和的平方,表达式应写作 ( ) 。 答:(x+y)*(x+y)12、* *执行语句“ a=5+(c=6); ”后,变量 a 、 c 的值依次为( ) 。 答:11. 613、* *设x是个实型变量。满足数学式|x|>4的c语言表达式是( )。 答:x>4 | x<-414、* *若s 是整型变量,则计算表达式 s=22/3%2 后s的值为( ) 。 答:115、*C语言用( )号括起来的单个或多个字符表示字符串常量。 答:双引号 16、*float x, y, z;是将x, y, z; 定义为 ( ) 答:浮点型数17、*目前常用C语言的一个整型变量的存储容量为( )个字节。 答:218、*无符号基本整型的数据类型符为( ),双精度实型数据类型符为( )。 答:unsigned int、double19、* *定义变量的完整语句格式是: ( ) ( ) 变量名1=初值1,变量名2=初值2,.;。 答:存储类型符、 数据类型符 20、* *设有下列运算符:<<、+、+、&&、<=,其中优先级最高的是( ),优先级最低的是( )。 答:+、&& 21、* “ = ” 是( )符号,不是等号。在语言中等于号用 “ ( ) ” 表示。 答:赋值、=22、* *表达式10/3的结果是( ),10.0/3的结果是( )。 答: 3、3.333333 23* *表达式10%3的结果是( ),3%10的结果是( )。 答:1、3 24. * *定义int x,y;执行y=(x=1,+x,x+2);语句后,x的值是( ),y的值是( )。 答:2、4二、单项选择题 (每题2分)1、*( )是不正确的字符常量。 (A)'n' (B)'1' (C)"a" (D)'/101' 答: C2、 *( )把x、y定义成float类型变量,并赋同一初值3.14。(A)float x, y=3.14; (B)float x, y=2*3.14; (C)float x=3.14, y=x=3.14; (D)float x=y=3.14; 答:D3、* *若有以下定义和语句:int u=010,v=0x10,w=10;printf(%d,%d,%dn,u,v,w);则输出结果是( )。(A)8,16,10 (B)10,10,10 (C)8,8,10 (D) 8,10,10 答:A4、*以下正确的字符常量是( ) (A)“x” (B) W (C) (D)XYZ 答:b5、 * 在C语言的算术运算符中只能用于整型数的运算符是( ) (A)+ (B)/ (C) % (D)* 答:c6、 *已知 int a; 那么 &a表示( ) (A)变量名 (B)变量a的地址 (C)变量a的值 (D)其他 答:b7、*不正确的标识符是() (A)_a2 (B)2ai (C)a2_i (D)Int 答:b8、*已知 int a=2,b=5; 则表达式a+5>b+3的值是( ) (A)0 (B)1 (C)不确定 ( D)表达式错误 答:a9、* *若变量已正确定义并赋值,下面符合C语言语法的表达式是 (A) a:=b+1 (B) a=b=c+2 (C) int 18.5%3 (D) a=a+7=c+b 答:b10、 * *若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是 (A) 1 (B) 2 (C) 2.0 (D) 2.5 答:c11、*若变量a、i已正确定义,且i已正确赋值,合法的语句是 (A) a=1 (B) +i; (C) a=a+=5; (D) a=int(i); 答:b12、* *以下不是c语言规定保留字的是( )。 (A)float (B)integer (C)signed (D) unsigned 答:b13 *、下列不正确的转义字符是 (A) '' (B)'" (C) '074' (D) '0 答:c14、* *若有以下定义: char a; int b; float c; double d; 则表达式a*b+d-c值的类型为 (A) float (B)int (C) char (D) double 答:d15、* *常数的书写格式决定了常数的类型和值, 0x1011 是 ( ) (A) 8 进制整型常量 (B)字符常量 (C) 16 进制整型常数 (D)2 进制整型常数 答:c16、* *在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为 A)char<int <1ong int<=float<double B)char=int<1ong int<=float<double C)char< int <1ong int=float=double D)char=int =1ong int<=float<double 答:A17、*若x,i,j和k都是int型变量,则执行下面表达式后x的值为 x=(i=4,j=16,k=32) A)4 B)16 C)32 D)52 答:C18、*假设所有变量均为整型,则表达式(a=2,b=5,b+,a+b)的值是: A)7 B)8 C)6 D)2 答:B19、* *下列四组选项中,均不是C语言关键字的选项是 A)define B)getc C)include D)while IF char scanf go type printf case pow 答:A 20、*下面四个选项中,均是C语言关键字的选项是 A)auto B)switch C)signed D)if enum typedef union struct include continue scanf type 答:B 21、* *下面四个选项中,均是不合法的用户标识符的选项是。 A) A B)float C)b-a D)一123 P_0 1a0 goto temp do 一A int INT 答:C22、*下面不正确的字符串常量是。 A)'abc' B)"12'12" C)"0" D)"" 答:A23、* *若有代数式3ae/bc,则不正确的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 答:c24、* *以下不正确的叙述是 A)在C程序中,逗号运算符的优先级最低 B)在C程序中,APH和aph是两个不同的变量 C)若a和b类型相同,在执行了赋值表达式a=b后b中的值将放人a中,而b中的值不变。 D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值。 答:D25、* *以下正确的叙述是: A)在C程序中,每行中只能写一条语句 B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数 C)在C程序中,无论是整数还是实数,都能被准确无误地表示 D)在C程序中,%是只能用于整数运算的运算符 答:D26 、* *以下符合C语言语法的赋值表达式是 A)d=9+e+f=d+9B) d=9+e,f=d+9 C)d=9十e,e+,d十9 D)d=9十e+=d十7 答:B27、* *已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'十'6'一'3'后,c2中的值为 A)D B)68 C)不确定的值 D)C 答:A28、* *设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为 A)int B) float C) double D)不确定 答:C29、*设有说明: char w; int x; f1oat y; double z;则表达式w* x+z一y值的数据类型为: A)float B)char C)int D)double 答:D30、* *若有以下定义,则能使值为3的表达式是: int k= 7,x =12; A) x%=(k%= 5) B) x%=(k一k%5) C) x%=k- k%5 D) (x%=k)一(k%=5) 答:D 第四章 顺序程序设计一、填空(每题2分)1、*在屏幕上输出整型变量a,b值,每个数占5位,输出数据前有说明字符的 printf()函数为( )。 答:printf(“%5d %5d”, a b )2、 *设char c=A,则语句printf(%c,c+32)结果为( ) 。 答:a3、*通过键盘输入整型变量a的scanf()函数为( )。 答:scanf(%d, &a)4、*已知 int a,b,c; a或者b两个中间有一个小于c的表达式是( )。 答: (a<=c)|(b<=c)5、* *已知 int x; 如果用scanf(“%f”,&x);给x赋值,错误的原因是( )。 答:类型不匹配6、*float a=3.54; printf("% 2.3f ",a);的输出结果是( ) 答:3.5407、* * * 若有定义语句 “ int a=25,b=14,c=19; ” ,以下语句的执行结果是( )。 if(a+<=25&&b-<=2&&c+) printf("*a=%d,b=%d,c=%dn",a,b,c); else printf("#a=%d,b=%d,c=%dn",a,b,c); 答:#a=26,b=13,c=198、* * *以下程序输入1 2 3<CR>后的执行结果是( )。 #include <stdio.h> main() int a,c; char b; scanf("%d%c%d",&a,&b,&c); printf("a=%d,b=%c,c=%dn",a,b,c); 答:a=1,b= ,c=29、* *以下程序输入123456<CR>后的执行结果是( )。 #include <stdio.h> main() int a,b; scanf("%2d%3d",&a,&b); printf("a=%d,b=%dn",a,b); 答:a=12,b=34510、* *若有说明int i,j,k;则表达式i=10,j=20,k=30,k*=i+j的值为( )。 答:900二、单项选择题 (每题2分)1、 *设变量定义为“int a, b;”,执行下列语句时,输入( ),则a和b的值都是10。 scanf("a=%d, b=%d",&a, &b);(A)10 10 (B)10, 10 (C)a=10 b=10 (D)a=10, b=10 答:B2、*若t为int类型,表达式t=1,t+5,t+的值是( )。(A)1 (B)6 (C)2 (D)1 答:C3、*设x、y均为整型变量,且x=10 ,y=3,则以下语句的输出结果是( ) printf("%d,%dn",x-,-y); (A) 10,3 (B) 9,3 (C) 9,2 (D)10,2 答:c 4、 * 阅读以下程序,当输入数据的形式为:25,13,10<回车>,正确的输出结果是()main()int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%dn”,x+y+z); (A)x+y+z=48 (B)x+y+z=35 (C)x+z=35 (D)不确定值 答:d5、*已知 int a=5,y; y=a+; 问a,y=? ( ) (A)a=6 , y=5 (B)a=6 , y=6 (C)a=6 , y=7 (D)a=5 , y=6 答:a6、*已知 int a =5; 赋值表达式a+=a*a的值为( ) (A)5; (B)10; (C)30; (D)50; 答:c7、*若有以下程序段,int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是(A) 0 (B) 0.5 (C) 1 (D) 2 答:a8、*putchar函数可以向终端输出一个: ( )A)整型变量表达式值 B)实型变量值 C)字符串 D)字符或字符型变量值 答:D9、*printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 ( )A)从左起输出该字串,右补空格 B)按原字符长从左向右全部输出 C)右对齐输出该字串,左补空格 D)输出错误信息 答:B 10、*已有定义 int a=-2;和输出语句:printf("%8lx",a);以下正确的叙述是: ( )A)整型变量的输出格式符只有%d一种 B)%x 是格式符的一种,它可以适用于任何一种类型的数据 C)%x 是格式符的一种,其变量的值按十六进制输出,但%8lx 是错误的 D)%8lx 不是错误的格式符,其中数字8规定了输出字段的宽度 答:D 11、*若x ,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是: ( )A) scanf(" %d%lx,%le",&x,&y,&z); B) scanf("%2d * %d%lf"&x,&y,&z ); C) scanf("%x %* d%o",&x,&y); D) scanf("%x%o%6.2f",&x,&y,&z); 答:D 12、*已有如下定义和输入语句 ,若要求a1,a2,c1,c2值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是 ( )int a1,a2; char c1,c2; scanf("%d%c%d%c",&a1,&c1,&a2,&c2); A)10A 20B< CR> B)10 A 20 B<CR> C)10A20<CR> D)10A20 B<cR>。 答:A 13、*已有定义int x; f1oat y;且执行scanf("%3d%f",&x,&y);语句,若从第一列开始输入数据12345 678(回车),则x 的值为( ) A)12345 B)123 。 C) 45 D) 345 答:B 14、*已有定义int x; f1oat y;且执行scanf("%3d%f",&x,&y);语句,若从第一列开始输入数据12345 678(回车),则y 的值为: ( ) A)无定值B)45.0000 C) 678.000000 D) 123.00000 答:B 15、*已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A,B,当从第一列开始输入数据时,正确的数据输入方式是: ( )int a1,a2; char c1,c2; scanf("%d%d",&a1,&a2); scanf("%c%c",&c1,&c2); A) 1020AB<CR> B)10 20<CR>AB<CR> C)10 20 AB<CR> D)10 20AB<CR> 答:D 16、*已有程序段和输入数据的形式如下,程序中输入语句的正确形式应当为( ) main() int a;float f; printf("nInput number:"); 输入语句 printf("nf=%f,a= %dn ,f,a); Input number: 4.5 2<CR> A )scanf("%d,%f",&a,&f); B)scanf("%f,%d",&f,&a) C)scanf("%d%f",&a,&f); D)scanf("%f%d",&f,&a); 答:D 17、*以下能正确地定义整型变量a,b和c 并为其赋初值5的语句是 ( ) A)int a=b= c= 5; B) int a,b, c= 5; C)a= 5,b=5,c=5; D) a= b= c=5; 答:A18、*已知ch是字符型变量,下面不正确的赋值语句是 ( )A)ch='a+b' B)ch='0' C)ch='7'+'9' D) ch=5+9; 答:A19、已*知ch是字符型变量,下面正确的赋值语句是 ( )A) ch= '123' B) ch= 'xff' C) ch= '08' D) ch="" 答:B20、*若有以下定义,则正确的赋值语句是: int a,b;float x; A) a=1,b=2, B)b+; C) a= b= 5 D) b= int(x); 答:B21、*设x 、y均为f1oat型变量,则以下不合法的赋值语句是( ) A)+x; B)y=(x%2)/10; C) x*=y+8; D)x=y=0; 答:B 22、*x,y,z均为int型变量,则执行语句x=(y=(z=10)+5)一5;后,x 、y 和之的值是: ( ) A) x=10 B) x=10 C) x=10 D) x=10 y=15 y=10 y=10 y=5 z=10 z=10 z=15 z=10 答:A 23、*逻辑运算符两侧运算对象的数据类型( )。 A)只能是0或1 B)只能是0或非0正数 C)只能是整型或字符型数据 D)可以是任何类型的数据 答:D 24、*下关于运算符优先顺序的描述中正确的是( )。 A)关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符 B)逻辑 运算符< 关系运算符< 算术运算符< 赋值运算符 C)赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符 D)算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符 答:C 25、*下列运算符中优先级最高的是( )。 A)< B)十 C)&& D)!= 答:B 三、阅读程序,写出程序运行结果(每题4分)1、*main() int a=1,b=2;a=a+b;b=a-b;a=a-b; printf("%d,%d n",a,b); 答:a=2 b=1 2、*main() int x=7,a=2,b=2,c; c=x/a%b; printf(c=%dn”,c); 答:13、*以下程序输入100<CR>后的执行结果是( )。 #include <stdio.h> main() int n; scanf("%o",&n); printf("n=%dn",n); 答:n=644、*以下程序输入x=1.23,y=50<CR>后的执行结果是( )。 #include <stdio.h> main() float x,y; scanf("x=%f,y=%f",&x,&y); printf("x=% 7.2f ,y=% 7.2f n",x,y); 答:x= 7.23,y=50.005、*阅读下列程序,写出程序的输出结果。 main() int x=100,a=10,b=20,ok1=5,ok2=0; if (a<b) if (b!=15) if (!ok1) x=1; else if(ok2) x=10; else x=-1; printf("%dn",x); 答:-1 6、*阅读下列程序,写出程序运行的输出结果。 main() int y=9; for (;y>0;y-) if(y%3=0) printf("%d",-y); continue; 答:852 7、*阅读下列程序: main() int a; char b; float c; printf("input a b c:"); scanf("%d%c%f",&a,&b,&c); printf("a=%d,b=%c,c=%fn",a,b,c); 程序运行后若输入“1234r1234.567(回车)”,写出程序的输出结果。 答:a=1234,b=r,c=1234.567017 8、*阅读下列程序: main() int a; float b,c; printf("input a b c:"); scanf("%2d% 3f % 4f ",&a,&b,&c); printf("a=%d,b=%f,c=%f",a,b,c); 答:a=12,b=345.000000,c=6789.000000 9、*阅读下列程序: main() int a; float b,c; scanf("%d%f%f",&a,&b,&c); printf("a=%d,b=%f,c=%f",a,b,c); 程序运行后若输入“12 345 6789 87654321(回车)”,写出程序的输出结果。 答:a=12,b=345.000000,c=6789.000000 第五章 选择结构程序设计一、填空 1、*能正确表示“当ch为小写字母为真,否则为假”的表达式是( )。 答: ch>a&&ch<z2、 *设y是int型变量,请写出判断y为5的倍数的关系表达式( ) 。 答:y%5=03、 *已知int a=1,b=2;表达式 (a<b ? a:b)的值是( )。 答:14、 *在switch语句中出现的break语句的功能是( )。 答:跳出switch语句5、*能正确表示“当A=5时布尔量BL为真,否则为假”的表达式是( )。 答: a=5 ?(BL=1):(BL=0)6、*已知 int a,b; a、b中有一个小于0的表达式是( )。 答: a*b<07、*在C语言中,表示逻辑量“真”用1,表示逻辑量“假”用( )。 答:0 8、*若x=5,y=10,则x>y和x<=y的逻辑值分别为( )和( )。 答:0、19、* C语言中的逻辑运算符按优先级别是( )、( ) 、( )。 答:!,&&,|10、*C语言中逻辑运算符( )的优先级高于算术运算符。 答:!11、*将下列数学式(A) a=b 或 a<c (B) |x|>4改写成C语言的关系表达式或逻辑表达式( )和( ) 答:(a=b)|(a<c),(x>4)|(x<-4)12、* 请写出以下程序的输出结果( )。 main() int a=100; if (a>100) printf(“%dn”,a>100); else printf(“%dn”,a<=100); 答:113、*当a=1,b=2,c=3时,以下if 语句执行后,a 、b 、c 中的值分别为( )、( )、 ( )。 if (a>c) b=a;a=c; c=b; 答:3 2 2二、单项选择题 (每题2分)1、*已知整型变量k的值为3,下面程序段执行的结果是( ) switch(k) case 1:putchar(A);break; case 2:putchar(B);break; case 3:putchar(C); case 4:putchar(D); default:putchar(E); (A) CDE (B) C (C) ABC (D) ABCD 答:a2、*以下程序段正确的是( ) (A)if(a>b) c=1 (B) if(a>b) c=1; else c=2; else c=2 (C) if(a>b) c=1; (D) if(a>b); c=1; else c=2; else c=2; 答:c3、*以下程序运行的结果是( ) main() int x=12,y; y=x>12 ? x+10 : x-12; printf(“y=%dn”,y); (A)y=0 (B) y=22 (C)y=12 (D)y=10 答:a4、*表示关系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 5、*假定所有变量均已正确说明,下列程序段运行后x的值是 a=b=c=0;x=35; if(!a)x-; else if(b); if(c)x=3; else x=4; (A)34 (B)4 (C) 35 (D) 3 答:d6、*当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)18 B)2 C)3 D)6 答:B 7、*以下程序的输出结果是: main() int a=100,x =10,y=20,ok