c语言第二章习题
第二章练习题
一、填空题
1、在C语言中的实型变量分为两种类型,它们是float型和()型。
2、若有定义:char c='\010';则变量c中包含的字符个数为()
3、已知字母a的ASCII码为十进制数97,且设ch为整型变量,则表达式ch='a'+'8'-'3'的值为()
4、在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为()个;一个int型数据在内存中所占的字节数为()个。
5、在C语言中,表示逻辑“假”值用数字()表示。
6、C语言中的标识符只能由字母、数字和()三种字符组成。
7、表达式8/4*(int)(2.5)/(int)(1.25*(3.7+2.3))的值为()
8、整型常量即整常数。可用三种形式表示:十进制整数、八进制整数以()开头、十六进制整数以()开关(注:请用小写字母)
9、请将75写成C语言八进制和十六进制表示(),()。
10、若有定义:int m=5,y=2;则计算表达式y+=y-=m*=y后的y值是()
11、若a是int型变量,则表达式(a=4*5,a*2),a+6的值为()。
12、若a,b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为(),b值为(),c值为()。
13、若a是int型变量,且a的初值为6,则计算表达式a+=a-=a*a后a的值为()
14、若a是int型变量,则计算表达式a=25/3%3 后a的值为()
15、若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为(),n的值为()
16、若有定义:int b=7;float a=2.5,c=4.7;则下面表达式的值为()
a+(int)(b/3*(int)(a+c)/2)%4
17、若有以下定义:int a=2,b=3;float x=3.5,y=2.5;则下面表达式的值为()(float)(a+b)/2+(int)x%(int)y
18、若有定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为()
(x+y)%2+(int)a/(int)b
19、所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为()
20、若有定义:int e=1,f=4,g=2;float m=11.29,n=4.0,k;则计算赋值表达式k=(e+f)/g+sqrt(n*1.2/g+m)后k的值是()
21、若x为int型变量,则执行以下语句后x的值是()
x=7; x+=x-=x+x;
22、当a=3,b=2,c=1时,表达式f=a>b>c的值是()
23、已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||AB的值是()
24、若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b-c*2的值是()
25、若a=1,b=4,c=3,则表达式!(a
26、若a=6,b=4,c=3,则表达式a&&b-c-1||!(c-3)的值是( )
27、设a=3,b=4,c=5,则表达式a||b+c&&b==c的值是( )
28、当m=2,n=1,a=1,b=2,c=3时,执行完d=(m=a!=b)&&(n=b>c)后,n的值为( ),m的值为( )
29、有int x,y,z;且x=3,y=-4,z=5,则表达式x-3&&y==(!x-3||z-5)的值为()
30、以下程序的运行结果是()
main()
{
if (2*2==5<2*2==4)
printf("T");
else
prinft("F");
}
31、若a=1,b=2,c=3,d=4,则表达式a>b?a:c>d?c:d的值为()
32、以下程序的运行结果是()
#inclue
main( )
{ int x=1,y,z:
x*=3+2; printf("%d,",x);
x*=y=z=5; printf("%d,",x);
x=y==z; printf("%d\n",x);
}
33、若运行时输入:100<回车>时,则以下程序的运行结果是()
main()
{ int a;
scanf("%d",&a);
printf("%s",(a%2!=0)?"no":"yes");
}
34、已有定义int i,j;float x;为将-10赋给i,12赋给j,410.34赋给x;则对应以下
scanf函数调用语句的数据输入形式是()
scanf("%d,%d,%f",&i,&j,&x);
35、在printf函数中,以八进制形式输出整数用%()格式,以十六形式输出整数用%()格式。(注:请用小写字母)
36、在printf函数中,输出长整型数据用%()格式,输出字符串用%()格式。(注:请用小写字母)
37、在printf函数中,以小数形式输出实型数据用%()格式,以指数形式输出实型数据用%()格式。(注:请用小写字母)
38、有以下语句:
int i=79; printf("%o",i);
实际输出()。
float x=333.1234567890; printf("%.2f",x);
实际输出()。
39、有以下语句:
int i=79; printf("%x",i);
实际输出()。
double y=333.1234567890; printf("%2.5f",y);
实际输出()。
40、有以下语句:
int i=7900; printf("%2d",i);
实际输出域宽为()。
float x=1.23456789; printf("%.5f",x);
实际输出为()。
二、选择题
1、下面正确的字符常量是()
A)“C”B)'12' C)'W' D)''
2、在C语言中,int、char、short三种类型数据在内存中所占用的字节数()A)由用户自己定义B)均为2个字节
C)是任意的D)由所用机器的机器字长决定
3、下面四个选项中,均是合法整型常量的选项是()
A)160 -0xffff 011 B)-0xcdf 01a 0xe
C)-01 986,012 0668 D)-0x48a 2e5 0x
4、下面四个选项中,均是不合法的整型常量的选项是()
A)--0f1 -0xffff 0011 B)-0xcdf 017 12,456
C)-018 999 5e2 D)-0x48eg -068 1a
5、下面四个选项中,均不是合法的浮点数的选项是()
A)160. 0.12 e3 B)123 2e4.2 e5
C)-.18 123e4 0.0 D)-e3 .234 1e3
6、下面四个选项中,均是合法的浮点数的选项是()
A)+1e+1 5e-9.4 03e2 B)-.60 12e-4 -8e5
C)123e 1.2e-.4 +2e-1 D)-e3 .8e-4 5.e-0
7、下面四个选项中,均是正确的八进制或十六进制数的选项是()
A)-10 0x8f -011 B)0abc -017 0xc
C)0010 -0x11 0xf1 D)0a12 -0x123 -0xa
8、下面四个选项中,均是正确的数值常量或字符常量的选项是()
A)0.0 0f 8.9e '&' B)"a" 3.9e-2.5 1e1 "\'"
C)'3' 011 0xff00 0a D)+001 0xabcd 2e2 50.
9、已知字母'A'的ASCII码为十进制65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,在内存中c2中的值为()
A) D B)68 C)不确定D)C
10、sizeof(float)是()
A)一个双精度型表达式B)一个整型表达式
C)一种函数调用D)一个不合法的表达式
11、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()
A)int B)float C)double D)不确定
12、下面四个选项中,均是非法常量的选项是()
A)‘as’-0fff '\0xa' B)'\\' '\01' 12,456
C)-0x18 01177 0xf D)0xabc '\0' 'ab'
13、以下正确地定义整型变量a,b和c并为它们赋初值5的语句是()
A)int a=b=c=5; B)int a,b,c=5;
C)int a=5,b=5,c=5; D)a=b=c=5;
14、若x,i,j和k都是int型变量,则计算下面表达式后,x的值为()
x=(i=4,j=16,k=32)
A) 4 B)16 C)32 D)52
15、假设所有变量均为整型变量,则表达式(a=2,b=5,b++,a+b)的值是()A)7 B)8 C)6 D)2
16、若有代数式(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
17、已知各变量的类型说明如下:
int k,a,b;
unsigned long w=5;
double x=1.42;
则以下不符合C语言语法表达式是()
A)x%(-3) B)w+=-2
C)k=(a=2,b=3,a+b) D)a==a-=(b=4)*(a=3)
18、已知各变量的类型说明如下:
int i=8,k,a,b; unsigned long w=5; double x=1.42,y=5.2;
则以下符合C语言语法的表达式是()
A)a+=a-=(b=4)*(a=3) B)a=a*3=2
C)x%(-3) D)y=float(i)
19、若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()
A)2.500000 B) 2.750000
C) 3.500000 D) 0.000000
20、设以下就是均为int类型,则值不等于7的表达式是()
A)(x=y=6,x+y,x+1) B)(x=y=6,x+y,y+1)
C)(x=6,x+1,y=6,x+y) D)(y=6,y+1,x=y,x+1)
21、已知ch是字符型变量,下面不正确的赋值语句是()
A)ch='a+b' B)ch='\0'
C)ch='7'+'9' D)ch=5+9
22、若有以下定义,则正确的语句是()
int a,b; float x;
A)a=1,b=2, B)b++;
C)a=b=5 D)b=int(x);
23、设x、y和z均为int型变量,则执行语句x=(y=(z=10)+5)-5;后,x,y和z 的值是()
A)x=10 y=15 z=10 B)x=10 y=10 z=10
C)x=10 y=10 z=15 D)x=10 y=5 z=10
24、逻辑运算符两侧运算对象的数据类型()
A)只能是0或1 B)只能是0或非0正数
C)只能是整型或字符型数据D)可以是任何类型的数据
25、以下关于运算符优先顺序的描述中正确的是()
A)关系运算符<算术运算符<赋值运算符<逻辑运算符
B)逻辑运算符<关系运算符<算术运算符<赋值运算符
C)赋值运算符<逻辑运算符<关系运算符<算术运算符
D)算术运算符<关系运算符<赋值运算符<逻辑运算符
26、已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y)的值是()
A)0 B)语法错误C)1D)“假”
27、设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=d>c)后n的值为()
A)1B)2 C)3 D)0
28、判断char型变量c1是否为小写字母的正确表达式为()
A)'a'<=c1<='z' B)(c1>=a)&&(c1<=z)
C)('a'>=c1)||('z'<=c1) D)(c1>='a')&&(c1<='z')
29、执行以下语句后b的值为()
int a,b,c;
a=b=c=0;
++a||++b&&++c;
A)1B)2C)错误D)0
30、执行以下语句后b的值为()
int a=5,b=6,w=1,x=2,y=3,z=4;
(a=w>x)&&(b=y>z)
A)6B)0 C) 1 D)4
31、若w、x、y、z、m均为int型变量,则执行下面语句后的m值是()
w=1;x=2;y=3;z=4;
m=(w m=(m m=(m A)1 B)2 C)3 D)4 32、以下不正确的叙述是() A)在C程序中,逗号运算符的优先级最低 B)在C程序中,APH和aph是两个不同的变量 C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b 中的值不变 D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值 33、以下符合C语言语法的表达式是() A)d=9=e+f=d+9 B)d=(9+e,f)=d+9 C)d=9+e,e++,d+9 D)d=9+e++=d+7 34、执行以下程序段后的输出结果是() int w=3,z=7,x=10; printf("%d,",x>10?x+100:x-10); printf("%d,",w++||z++); printf("%d,",!w>z); printf("%d\n",w&&z); } A)0,1,1,1 B)1,1,1,1 C)0,1,0,1 D)0,1,0,0 35、若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); 36、已有程序段和输出数据的形式,f为4.5,a 为2。程序中输入语句的正确形式应当为()(注: main() { int a;float f; printf("\ninput number:"); 输入语句 printf("\nf=%f,a=%d\n",f,a); } input number:4.5,2 A)scanf("%d,%f",&a,&f); B)scanf("%f,%d",&f,&a); C)scanf("%d%f",&a,&f); D)scanf("%f%d",&f,&a); 37、以下说法正确的是() A)输入项可以为一个实型常量,如scanf("%f",3.5); B)只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d"); C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f); D)当输入数据时,必须指明变量的地址,如scanf("%f",&f); 38、有输入语句:scanf("a=%d,b=%d,c=%d",&a,&b,&c); 为使变量a的值为1,b为3,c为2,从键盘输入数据正确形式应当是()A)132<回车> B)1,3,2<回车> C)a=1 b=3 c=2<回车> D)a=1,b=3,c=2<回车> 39、阅读以下程序,当输入数据的形式为:25,13,10 { int x,y,z; scanf("%d%d%d",&x,&y,&z); printf("x+y+z=%d\n",x+y+z); } A)x+y+z=48 B)x+y+z=35 C)x+z=35 D)其它情况 40、根据题目中已给出的数据的输入和输出形式,程序中输入输出语句的正确内容是() main() { int x;float y; printf("enter x,y:"); 输入语句 输出语句 } 输入形式enter x,y:2 3.4 输出形式x+y=5.40 A)scanf("%d,%f",&x,&y); printf("\nx+y=%4.2f",x+y) B)scanf("%d%f",&x,&y); printf("\nx+y=%4.2f",x+y) C)scanf("%d%f",&x,&y); printf("\nx+y=%6.1f",x+y); D)scanf("%d%3.1f",&x,&y); printf("\nx+y=%4.2f",x+y); 41、下面四个选项中,均是不合法的用户标识符的选项是____。 (A)A P_0 do (B)float la0 _a (C)b-a goto int (D)_123 temp INT 42、下列四个选项中,均是不合法的整型常量的选项是______。 (A)--0f1 -0xffff 0011 (B)-0xcdf 017 12,3456 (C)-018 999 5e2 (D)-0x48eg -068 03f 43、下面四个选项中,均是合法浮点数的选项是______。 (A)1e1 5e-9.4 03e2 (B)-.60 12e-4 -8e5 (C)123e 1.2e-.4 2e-1 (D)-e3 .8e-4 5.e-0 44、下面四个选项中,均是合法字符的选项是______。 (A)’\’’ ‘\\’ ‘\xf’ (B)’\’ ‘\017’ ‘\n’ (C)’\018’ ‘\f’ ‘xab’(D)’\0’ ‘\101’ ‘xlf’ 45、以下不正确的叙述是______。 (A)在C程序中,逗号运算符的优先级最低。 (B)在C程序中,APH和aph是两个不同的变量 (C)若a和b类型相同,在计算机了赋值表达式a=b后,b的值不变。 (D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数据。 三、判断对错 1、在C语言中,e_2和MAXNUMBER可以作变量名。() 2、2e-310和3e+2.3都是非法的C常量。() 3、在C语言程序设计中,Total与total是同一个变量。() 4、以下语句是正确的:() char x='a'; printf("%5o",x); 5、设有说明:char w;int x;float y;double z;则表达式w*x+z-y值的数据类型为float型。() 6、下列是正确的语句:() int i=2; i+=3+i*=2; 7、逻辑运算符两侧运算对象的数据类型只能是0或1。() 8、有以下语句,输出结果是:0 () int x=40,y=4,z=4; x=x==(y=z); printf("%d\n",x); 9、执行以下语句输出结果为:3,2 () int x,y; x=y=2; y=x++-1; printf("%d,%d",x,y); 10、下列是正确的语句:() int i; (i+3)++; 11、执行以下语句后,输出结果是:1 () int x=3; int y=z=4; printf("%d\n",(x>=y>=x)?1:0); 12、printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出错误信息。()13、下列是正确的语句:() int i; scanf("%d",i); 14、printf函数中用到格式符%5s,其中数字5表示输出的字符串占5列,如果字符串长度小于5,则输出按右对齐输出该字串,左补空格。() 15、有以下语句:() int a,b,c; scanf("%d,%d,%d",&a,&b,&c);为使a=3,b=4,c=5 正确的输入形式是:3 4 5<回车> 附寻:答案 一、填空题 1、double 2、1 3、102 4、4 2 5、0 6、下划线 7、0 8、0 0x 9、0113 0x4B 10、-16 11、26 12、6 4 2 13、-60 14、2 15、10 6 16、5.5 17、3.5 18、1 19、9 20、5.7 21、-14 22、0 23、0 24、0 25、1 26、1 27、1 28、0 1 29、0 30、F 31、4 32、5,25,1 33、yes 34、-10,12,410.34 35、o x 36、ld s 37、f e 38、117 333.12 39、4F 333.12346 40、7900 1.234567 二、选择题 1--5 CDADB 6--10 BCDBB 11--15 CACCB 16--20 CAAAC 21--25 ABADC 26--30 CBDDA 31--35 ADCCD 36--40 BDDDB 41--45 CDBAD 三、判断对错题 1--5 对对错对错6--10 错错对错错11--15 错错错对错 循环习题集锦 一.选择题 1.for(i=0;i<10;i++);结束后,i的值是;(10) A 9 B 10 C 11 D 12 2.下面程序的循环次数是:(D) int k=0; while(k<10) {if(k<1) continue; if(k==5) break; k++; } A. 5 B 6 C 4 D 死循环,不能确定循环次数3.下面程序的输出结果是(10) main() { int s,k; for(s=1,k=2;k<5;k++) s+=k; printf(“%d\n”,s); } A 1 B 9 C 10 D 15 4.要使下面程序输出10个整数,则在下画线处填入正确的数是:(c) for(i=0;i<= ;) printf(“%d\n”,i+=2); A 9 B 10 C 18 D 20 5.运行下面程序:(B) main() { int i=10,j=0; do { j=j+i; i--; }while(i>5); printf(“%d\n”,j); } 输出结果是: A 45 B 40 C 34 D 55 6.运行下面程序 #include “stdio.h” main() { int k=0,a=1; while(k<10) { for( ; ;) { if((k%10)==0) break; else k--; } k+=11; a+=k; } printf(“%d %d\n”,k,a); } 则输出的结果是(C) A 21 32 B 21 33 C 11 12 D 10 11 7.以下叙述正确的是:(D) A.do---while语句构成的循环不能用其他语句构成的循环来代替。B.do---while语句构成的循环只能用break语句退出。 C.用do---while语句构成的循环,在while 后的表达式为非零时结束循环。 D.用do---while语句构成的循环,在while后的表达式为零时结束循环。 8.有如下程序: main() { int x=3; do{ 《数据结构与算法》期末复习题 一、选择题。 1.在数据结构中,从逻辑上可以把数据结构分为 C 。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指 A 。 A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。 A.逻辑B.存储C.逻辑和存储D.物理 4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。 A.数据的处理方法B.数据元素的类型 C.数据元素之间的关系D.数据的存储方法 5.在决定选取何种存储结构时,一般不考虑 A 。 A.各结点的值如何B.结点个数的多少 C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。 6.以下说法正确的是 D 。 A.数据项是数据的基本单位 B.数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。 (1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进C.分析算法的易读性和文档性 (2)A.空间复杂度和时间复杂度B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性 8.下面程序段的时间复杂度是O(n2) 。 s =0; for( I =0; i 第二章:C程序的基本结构 一、单项选择题 1、以下不是C语言的特点的是________。 A)语言的表达能力强B)语言定义严格 C)数据结构系统化 D)控制流程结构化 2、TC编译系统提供了对C程序的编辑、编译、连接和运行环境,以下可以不在该环境下进行的环节是________。 A)编辑和编译 B)编译和连接 C)连接和运行D)编辑和运行 3、以下不是二进制代码文件是________。 A)标准库文件 B)目标文件C)源程序文件 D)可执行文件 4、下面个选项组中,均属于C语言关键字的一组是________。 A)auto,enum,include B)switch,typedef,continue C)signed,union,scanf D)if,struct,type 5、下面四组字符串中,都可以用作C语言标识符的是________。 A)print B)I \am C)signed D)if _maf scanf 3mf ty_pr mx_2d mx_ a.f x1# aMb6 AMB A&B 5XY 6、以下不属于流程控制语句的是_________。 A)表达式语句 B)选择语句 C)循环语句 D)转移语句 7、下面描述中,不正确的是________。 A)C语言的函数体由一系列语句和注释组成。 B)注释内容不能单独写在一行上。 C)C程序的函数说明部分包括对函数名、函数类型、形式参数等的定义和说明。 D)scanf和printf是标准库函数而不是输入和输出语句。 8、下面描述中,正确的是________。 A)主函数的花括号必须有,而子函数中的花括号是可有可无的。 B)一个C程序行只能写一个语句。 C)主函数是程序启动时的唯一入口。 D)函数体包含了函数说明部分。 二、填空题 1、一个完整的C程序至少要有一个________函数。(主函数) 2、标准库函数不是C语言本身的组成部分,它是由__________提供的功能函数。(编译系统) 3、C语言是以________为基本单位、整个程序由________组成。(函数函数) 4、常用的标准库函数有数学函数、字符函数和字符串函数、动态分配函数、随机函数和________函数等几个大类。(输入输出) 5、标准库函数存放在________文件中。(函数库) 6、目标程序文件的扩展名是________。(.obj) 7、程序连接过程是将目标程序、________或其它目标程序连接装配成可执行文件。(库函数) 8、因为源程序是________类型文件,所以用具有文本编辑功能的任何编辑软件程序完成编辑。(文本) 1. //输出a和b之间的所有素数, 10个素数为一行输出 #include while(a<2||b<2) { printf("重新输入n和m:"); scanf("%d%d",&a,&b); } if(a>b) { t=a;a=b;b=t; } printf("%d和%d之间共有%d个素数",a,b,shuChuSuShu(a,b)); printf("\n\n"); return 0; } 2. //用户输入2个数,输出这2个数之间所有的超素数 //超素数(质数)的概念:7193是素数,719是素数,71是素数,7是素数,则7193是素数#include 一、基本算法 1.交换(两量交换借助第三者) 例1、任意读入两个整数,将二者的值交换后输出。 main() {int a,b,t; scanf("%d%d",&a,&b); printf("%d,%d\n",a,b); t=a; a=b; b=t; printf("%d,%d\n",a,b);} 【解析】程序中加粗部分为算法的核心,如同交换两个杯子里的饮料,必须借助第三个空杯子。 假设输入的值分别为3、7,则第一行输出为3,7;第二行输出为7,3。 其中t为中间变量,起到“空杯子”的作用。 注意:三句赋值语句赋值号左右的各量之间的关系! 【应用】 例2、任意读入三个整数,然后按从小到大的顺序输出。 main() {int a,b,c,t; scanf("%d%d%d",&a,&b,&c); /*以下两个if语句使得a中存放的数最小*/ if(a>b){ t=a; a=b; b=t; } if(a>c){ t=a; a=c; c=t; } /*以下if语句使得b中存放的数次小*/ if(b>c) { t=b; b=c; c=t; } printf("%d,%d,%d\n",a,b,c);} 2.累加 累加算法的要领是形如“s=s+A”的累加式,此式必须出现在循环中才能被反复执行,从而实现累加功能。“A”通常是有规律变化的表达式,s在进入循环前必须获得合适的初值,通常为0。例1、求1+2+3+……+100的和。 main() {int i,s; s=0; i=1; while(i<=100) {s=s+i; /*累加式*/ i=i+1; /*特殊的累加式*/ } printf("1+2+3+...+100=%d\n",s);} 【解析】程序中加粗部分为累加式的典型形式,赋值号左右都出现的变量称为累加器,其中“i = i + 1”为特殊的累加式,每次累加的值为1,这样的累加器又称为计数器。 第二章作业 1 ①.本题要求编写程序,输出一个短句“Welcome to You!” #include 第二单元顺序程序设计 一.选择题 1.若m为float型变量,则执行以下语句后的输出为。 m=1234.123; printf("%-8.3f\n",m); printf("%10.3f\n",m); A. 1234.123 B. 1234.123 C. 1234.123 D. -1234.123 1234.123 1234.123 1234.123 001234.123 2.若x,y,z均为int型变量,则执行以下语句后的输出为。 x=(y=(z=10)+5)-5; printf("x=%d,y=%d,z=%d\n",x,y,z); y=(z=x=0,x+10); printf("x=%d,y=%d,z=%d\n",x,y,z); A. X=10,Y=15,Z=10 B. X=10,Y=10,Z=10 X=0,Y=10,Z=0 X=0,Y=10,Z=10 C. X=10,Y=15,Z=10 D. X=10,Y=10,Z=10 X=10,Y=10,Z=0 X=0,Y=10,Z=0 3.若x是int型变量,y是float型变量,所用的scanf调用语句格式为: scanf("x=%d,y=%f",&x,&y); 则为了将数据10和66.6分别赋给x和y,正确的输入应是:。 A. x=10,y=66.6<回车> B. 10 66.6<回车> C. 10<回车>66.6<回车> D. x=10<回车>y=66.6<回车> 4.已知有变量定义:int a;char c;用scanf(“%d%c”,&a,&c);语句给a和c输入数据,使30 存入a,字符‘b’存入c,则正确的输入是:。 A. 30’b’<回车> B. 30 b<回车> C. 30<回车>b<回车> D. 30b<回车> 5.已知有变量定义:double x;long a; 要给a和x输入数据,正确的输入语句是。若要输出a 和x的值,正确的输出语句。 A. scanf(“%d%f”,&a,&x); B. scanf(“%ld%f”,&a,&x); printf(“%d,%f”,a,x); printf(“%ld,%f”,a,x); C. scanf(“%ld%lf”,&a,&x); D. scanf(“%ld%lf”,&a,&x); printf(“%ld,%lf”,a,x); printf(“%ld,%f”,a,x); 6.若有定义double x=1,y;则以下的语句执行的结果是。 y=x+3/2; printf(“%f”,y); A.2.500000 B.2.5 C.2.000000 D.2 7.若a为整型变量,则以下语句。 第5章循环结构程序设计 练习题 1. 单项选择题 (1)语句while (!e);中的条件!e等价于 A 。 A. e==0 B. e!=1 C. e!=0 D. ~e (2)下面有关for循环的正确描述是 D 。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在for循环中,不能用break语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中 D 。 A. 不能使用do-while语句构成的循环 B. do-while语句构成的循环必须用break语句才能退出 C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是 A 。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格 C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 (5)以下程序段 C 。 int x=-1; do { x=x*x; } while (!x); A. 是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误 (6)下列语句段中不是死循环的是__C__。 第5章循环结构程序设计35 A. i=100; while (1) { i=i%100+1; if (i==20) break; } B. for (i=1;;i++) sum=sum+1; C. k=0; do { ++k; } while (k<=0); D. s=3379; while (s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while (a) { if (b) continue; c; } A. while (a) B. while (c) { if (!b) c; } { if (!b) break; c; } C. while (c) D. while (a) { if (b) c; } { if (b) break; c; } (8)以下程序的输出结果是_B___。 #include 2008-02-18 18:48 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码: main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k); } } ============================================================== 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2.程序源代码: main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0.1;bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15; if(i<=100000) C语言详解(第五版)程序设计项目答案第二章 1.编写一个程序,以每英里0.35的费率计算一个售货员的里程偿还金。程序中要求与用户进行如下方式的交互。 #include 1.定积分近似计算: /*梯形法*/ double integral(double a,double b,long n) { long i;double s,h,x; h=(b-a)/n; s=h*(f(a)+f(b))/2; x=a; for(i=1;i } 3.素数的判断: /*方法一*/ for (t=1,i=2;i 1.C语言中的简单数据类型包括( B )。 A.整型、实型、逻辑型B.整型、实型、字符型 C.整型、字符型、逻辑型D.整型、实型、逻辑型、字符型2.在C语言中,错误的short类型的常数是( A )。 A.32768 B.0 C.037 D.0Xaf 3.下列常数中不能作为C的常量的是( D )。 A.0x45 B.2.5e-2 C.3e2 D.0582 4.short类型的数据长度为2个字节,则unsigned short类型数据的取值范围是( B )。 A.0至255 B.0~65535 C.-32768~32767 D.-256~255 5.下面4个选项中,均是合法转义字符的选项是( A )。 A.'\'','\\','\n' B.'\','\017','\' C.'\018','\f','xab' D.'\\0,'101','x1f 6.在C语言中,数字029是一个( D )。 A.八进制数B.十六进制数 C.十进制数D.非法数 7.下列可以正确表示字符型常数的是( B )。 A."a" B.'\t' C."\n" D.297 8.以下( C )是错误的转义字符。 A.'\\' B.'\'' C.'\81' D.'\0' 9.C语言中short类型的变量a的值为-8,则a在内存中的存储形式是( A )。 A.1111 1111 1111 1000 B.100000000000 1000 C.000000000000 1000 D.1111 1111 1111 0111 10.将字符g赋给字符变量c,正确的表达式是( C )。 A.c="g" B.c=101 C.c='\147' D.c='0147' 11.字符串"\\\22a,0\n"的长度是( C )。 A.8 B.7 C.6 D.5 12.为求出s=10!的值,则变量s的类型应当为( C )。 A.short B.unsigned short C.long D.以上三种类型均可13.已知:unsigned short x=65535;,则执行以下语句输出是( D )。 printf("%d\n", x); A.65535 B.1 C.无定值D.-1 14.下面4个选项中,均是合法整型常量的选项是( A )。 A.160,-0xffff,011 B.-0xcdf,01a,0xe C.-01,986,012,0668 D.-0x48a,2e5,0x 15.下面4个选项中,均是不合法的整型常量的选项是( D )。 A.--0f1,-0xffff,0011 B.-0Xcdf,01a,0xe C.-018,999,5e2 D.-0x48eg,-068,03f 16.下面4个选项中,均是合法浮点数的选项是( B )。 A.+1e+1,5e-9.4,03e2 B.-.60,12e-4,-8e5 C.123e,1.2e-.4,+2e-1 D.-e3,.8e-4,5.e-0 第 5 章循环结构程序 设计 练习题 1.单项选择题 ( 1)语句 while (!e);中的条件!e等价于A。 A. e==0 B. e!=1 C. e!=0 D. ~e ( 2)下面有关for循环的正确描述是D。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在 for循环中,不能用break 语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中D。 A.不能使用do-while语句构成的循环 B. do-while 语句构成的循环必须用break 语句才能退出 C. do-while 语句构成的循环,当while 语句中的表达式值为非零时结束循环 D. do-while 语句构成的循环,当while 语句中的表达式值为零时结束循环 ( 4) C 语言中 while 和 do-while 循环的主要区别是A 。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格 C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 ( 5)以下程序段C。 int x=-1; do { x=x*x; } while (!x); A.是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误( 6)下列语句段中不是死循环的是__C__。 A.i=100; while (1) { i=i%100+1; if (i==20) break; } B.for (i=1;;i++) sum=sum+1; C.k=0; do { ++k; } while (k<=0); D.s=3379; while (s++%2+3%2) s++; C语言常用算法集合 1.定积分近似计算: /*梯形法*/ double integral(double a,double b,long n) { long i;double s,h,x; h=(b-a)/n; s=h*(f(a)+f(b))/2; x=a; for(i=1;i if(n==1||n==2) *s=1; else{ fib(n-1,&f1); fib(n-2,&f2); *s=f1+f2; } } 3.素数的判断: /*方法一*/ for (t=1,i=2;i 1.以下叙述中错误的是( )。 A) 使用三种基本结构构成的程序只能解决简单问题 B) 结构化程序由顺序、分支、循环三种基本结构组成 C) C语言是一种结构化程序设计语言 D) 结构化程序设计提倡模块化的设计方法 2.以下可以将任意一个两位整数n的个位数与十位数对换的表达式为() A) (n-n/10*10)*10+n/10 B) n-n/10*10+n/10 C) n/10+(n-n/10) D) (n-n/10)*10+(n/10) 3.以下叙述中错误的是 A) 算法正确的程序可以有零个输入 B) 算法正确的程序最终一定会结束 C) 算法正确的程序可以有零个输出 D) 算法正确的程序对于相同的输入一定有相同的结果 4.若有定义int x,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++) : (y ++)中的条件表达式(x-y) 等价的是( )。 A) (x-y<0||x-y>0) B) (x-y<0) C) (x-y>0) D) (x-y==0) 5.有以下程序 —#include 第二章练习题 一、填空题 1、在C语言中的实型变量分为两种类型,它们是float型和()型。 2、若有定义:char c='\010';则变量c中包含的字符个数为() 3、已知字母a的ASCII码为十进制数97,且设ch为整型变量,则表达式ch='a'+'8'-'3'的值为() 4、在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为()个;一个int型数据在内存中所占的字节数为()个。 5、在C语言中,表示逻辑“假”值用数字()表示。 6、C语言中的标识符只能由字母、数字和()三种字符组成。 7、表达式8/4*(int)(2.5)/(int)(1.25*(3.7+2.3))的值为() 8、整型常量即整常数。可用三种形式表示:十进制整数、八进制整数以()开头、十六进制整数以()开关(注:请用小写字母) 9、请将75写成C语言八进制和十六进制表示(),()。 10、若有定义:int m=5,y=2;则计算表达式y+=y-=m*=y后的y值是() 11、若a是int型变量,则表达式(a=4*5,a*2),a+6的值为()。 12、若a,b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为(),b值为(),c值为()。 13、若a是int型变量,且a的初值为6,则计算表达式a+=a-=a*a后a的值为() 14、若a是int型变量,则计算表达式a=25/3%3 后a的值为() 15、若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为(),n的值为() 16、若有定义:int b=7;float a=2.5,c=4.7;则下面表达式的值为() a+(int)(b/3*(int)(a+c)/2)%4 17、若有以下定义:int a=2,b=3;float x=3.5,y=2.5;则下面表达式的值为()(float)(a+b)/2+(int)x%(int)y 18、若有定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为() (x+y)%2+(int)a/(int)b 19、所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为() 20、若有定义:int e=1,f=4,g=2;float m=11.29,n=4.0,k;则计算赋值表达式k=(e+f)/g+sqrt(n*1.2/g+m)后k的值是() 21、若x为int型变量,则执行以下语句后x的值是() 练习2-1 答案选择题 1. C语言中的简单数据类型包括(B ) o A.整型、实型、逻辑型 B.整型、实型、字符型 C?整型、字符型、逻辑型 D.整型、实型、逻辑型、字符型 2. 在C语言中,错误的short类型的常数是(A )。 A. 32768 B. 0 C. 037 D. 0Xaf 3. 下列常数中不能作为C的常量的是(D ) o A. 0x45 B. -2 C. 3e2 D. 0582 4. short 类型的数据长度为2个字节,则unsigned short 类型数据的取值范围是( B) A. 0 至255 B. 0~65535 C. -32768~32767 D. -256~255 5. 下面4 个选项中,均是合法转义字符的选项是( A ) o A. '\'' ,'\\' ,'\n' B. '\' ,'\017' ,'\' C. '\018' ,'\f' ,'xab' D. '\\0 ,'101' ,'x1f 6. 在C语言中,数字029是一个(D ) o A.八进制数B?十六进制数C.十进制数 D.非法数 7.下列可以正确表示字符型常数的是( B ) o A."a" B.'\t' C."\n" D.297 8. 以下(C)是错误的转义字符。 9. C语言中short类型的变量a的值为-8,则a在内存中的存储形式是(A ) 10. 将字符g赋给字符变量c,正确的表达式是(C) o A.c="g" B.c=101 C.c='\ 1 47' 11.字符串"\\\22a,0\n" 的长度是( C ) o A.8 B.7 C.6 12.为求出s=10!的值,则变量s的类型应当为(C) o A.short B.unsigned short C.long 13.已知:unsigned short x=65535; ,则执行以下语句输出是( D) o printf("%d\n", x) ; A. 65535 B. 1 C.无定值 D. -1 14.下面4个选项中,均是合法整型常量的选项是( A ) o A.160,-0xffff ,011 B.-0xcdf ,01a,0xe C.-01 ,986,012,0668 D.-0x48a,2e5,0x 15.下面4个选项中,均是不合法的整型常量的选项是( D ) o A .--0f1 ,-0xffff ,0011 B.-0Xcdf ,01a,0xe C .-018,999,5e2 D.-0x48eg ,-068 , 03f 16.下面4个选项中,均是合法浮点数的选项是( B ) A.+1e+1,,03e2 B.,12e-4 ,-8e5 A.'\\' B.'\'' C.'\81' D.'\0' A.1111 1111 1111 1000 B.1000 C.000000000000 1000 D.1111 1111 1111 0111 D.c='0147' D.5 D.以上三种类型均 练习2-1答案 选择题 1.C语言中的简单数据类型包括( B )。 A.整型、实型、逻辑型B.整型、实型、字符型 C.整型、字符型、逻辑型D.整型、实型、逻辑型、字符型2.在C语言中,错误的short类型的常数是( A )。 A.32768 B.0 C.037 D.0Xaf 3.下列常数中不能作为C的常量的是( D )。 A.0x45 B.-2 C.3e2 D.0582 4.short类型的数据长度为2个字节,则unsigned short类型数据的取值范围是( B )。 A.0至255 B.0~65535 C.-32768~32767 D.-256~255 5.下面4个选项中,均是合法转义字符的选项是( A )。 A.'\'','\\','\n' B.'\','\017','\' C.'\018','\f','xab' D.'\\0,'101','x1f 6.在C语言中,数字029是一个( D )。 A.八进制数B.十六进制数 C.十进制数D.非法数7.下列可以正确表示字符型常数的是( B )。 A."a" B.'\t' C."\n" D.297 8.以下( C )是错误的转义字符。 A.'\\' B.'\'' C.'\81' D.'\0' 9.C语言中short类型的变量a的值为-8,则a在内存中的存储形式是( A )。 A.1111 1111 1111 1000 B. 1000 C.000000000000 1000 D.1111 1111 1111 0111 10.将字符g赋给字符变量c,正确的表达式是( C )。 A.c="g" B.c=101 C.c='\147' D.c='0147' 11.字符串"\\\22a,0\n"的长度是( C )。 A.8 B.7 C.6 D.5 12.为求出s=10!的值,则变量s的类型应当为( C )。 A.short B.unsigned short C.long D.以上三种类型均可 13.已知:unsigned short x=65535;,则执行以下语句输出是( D )。 printf("%d\n", x); A.65535 B.1 C.无定值D.-1 14.下面4个选项中,均是合法整型常量的选项是( A )。 A.160,-0xffff,011 B.-0xcdf,01a,0xe C.-01,986,012,0668 D.-0x48a,2e5,0x 15.下面4个选项中,均是不合法的整型常量的选项是( D )。 A.--0f1,-0xffff,0011 B.-0Xcdf,01a,0xe C.-018,999,5e2 D.-0x48eg,-068,03fC语言循环习题答案
数据结构与算法C语言版期末复习题
c语言程序设计第二章课后参考答案
C语言循环例题
非常全的C语言常用算法
C语言PTA平台习题与答案
第二章 C语言习题
(完整版)C语言循环结构练习题带答案
C语言经典算法100例(1---30)
C语言详解(第五版)第二章程序设计项目答案
C语言常用算法集合
C语言第二章习题带答案
C语言循环结构练习题带答案.doc
最新C语言常用算法集合汇总
C语言第二章习题
c语言第二章习题
C语言第二章习题带答案
C语言第二章习题带答案