c语言第二章习题

c语言第二章习题
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,正确的输出结果为()main()

{

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 错错错对错

C语言循环习题答案

循环习题集锦 一.选择题 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{

数据结构与算法C语言版期末复习题

《数据结构与算法》期末复习题 一、选择题。 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语言程序设计第二章课后参考答案

第二章: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、因为源程序是________类型文件,所以用具有文本编辑功能的任何编辑软件程序完成编辑。(文本)

C语言循环例题

1. //输出a和b之间的所有素数, 10个素数为一行输出 #include #include #include int panDuanSuShu(int x) //判断x是否是素数 { int i,m,flag; //flag为1表示是素数,flag为0表示不是素数 m=(int)sqrt(x); if(x==2) { flag=1;} else { for(i=2;i<=m;i++) { if(x%i==0) { flag=0; break; } } if(i>m) { flag=1; } } return flag; } int shuChuSuShu(int a,int b) { int i,k=0;//i是循环变量,k表示已经输出了k个素数 for(i=a;i<=b;i++) { if(panDuanSuShu(i)==1) { printf("%6d",i); k++; if(k%10==0) { printf("\n");} } } printf("\n"); return k; } int main() { int a,b,t;

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 #include #include int isPrime(int n)//判断某数是否是素数 { int i,f,m=(int)sqrt(n); if(n==1) f=0; else { for(i=2;i<=m;i++) { if(n%i==0) break; } if(i>m) f=1; else f=0; } return f; } int supperPrime(int n)//判断某数是否是超素数 { int t=n; while(t>0) { if(isPrime(t)==1) t=t/10; else break; }

非常全的C语言常用算法

一、基本算法 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,这样的累加器又称为计数器。

C语言PTA平台习题与答案

第二章作业 1 ①.本题要求编写程序,输出一个短句“Welcome to You!” #include int main() { printf("Welcome to You!\n"); return 0; } ②.本题要求编写程序,计算华氏温度100°F对应的摄氏温度。计算公式:C=5×(F?32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。 fahr = 100, celsius = 计算所得摄氏温度的整数值 #include int main() { int fahr = 100; int celsius = 5*(fahr-32)/9; printf("fahr = 100,celsius = %d\n",celsius); return 0; } 第二章作业2 ①求整数均值本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。 在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位 #include int main() { int a,b,c,d,Sum; double Average; scanf("%d %d %d %d",&a,&b,&c,&d); Sum = a + b + c + d; Average = (a + b + c + d)/4.0; printf("Sum = %d,Average = %.1f\n",Sum,Average); return 0; } ②整数四则运算本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内 输入在一行中给出2个正整数A和B。 在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。 #include int main() { int a; int b; scanf("%d %d",&a,&b); printf("%d + %d = %d\n",a,b,a+b); printf("%d - %d = %d\n",a,b,a-b); printf("%d * %d = %d\n",a,b,a*b);

第二章 C语言习题

第二单元顺序程序设计 一.选择题 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为整型变量,则以下语句。

(完整版)C语言循环结构练习题带答案

第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 main() { int i; for (i=4;i<=10;i++) { if (i%3==0) continue; COUT<

C语言经典算法100例(1---30)

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语言详解(第五版)第二章程序设计项目答案

C语言详解(第五版)程序设计项目答案第二章 1.编写一个程序,以每英里0.35的费率计算一个售货员的里程偿还金。程序中要求与用户进行如下方式的交互。 #include #include int main(void) {float mile_1,mile_2,miles,consume,payment; printf("MILEAGE REIMBURSEMENT CALCULATOR\n"); printf("Enter begainning odometer reading>\n"); scanf("%f",&mile_1); printf("Enter endding odometer reading>\n"); scanf("%f",&mile_2); printf("Enter consume per mile>\n"); scanf("%f",&consume); miles=mile_2-mile_1; payment=miles*consume; printf("You traveled%f miles.At%f per mile,your reimbursement is%f",miles,consume,payment); system("pause"); return(0); } 2.编写一个程序,用于辅助设计水力发电大坝。提示用户输入大坝高度,以及水流量。如果水由重力所做的功有90%转化为电能,测算会有多少M瓦的功率。 #include #include int main(void) {double density,weight,gravitational_acceleration, efficiency,height,water_flow_rate,work,electricity_power; printf("Please type in the density of water>"); scanf("%lf",&density); printf("Please type in the gravitational_acceleration>"); scanf("%lf",&gravitational_acceleration); printf("Please type in the height of the water>"); scanf("%lf",&height); printf("Please type in the efficiency of the transformation\nfrom water to electricity>"); scanf("%lf",&efficiency); printf("Please type in the water_flow_rate>"); scanf("%lf",&water_flow_rate); weight=density*water_flow_rate; work=weight*height*gravitational_acceleration; electricity_power=work*efficiency/1000000; printf("The electric energy production is%fW",electricity_power); system("pause"); return0; }

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

} 3.素数的判断: /*方法一*/ for (t=1,i=2;i0;n/=10) k=10*k+n%10; return k; } /*求回文数*/ int f(long n) { long k,m=n; for(k=0;n>0;n/=10) k=10*k+n%10; if(m==k) return 1; return 0; } /*求整数位数*/ int f(long n) { int count; for(count=0;n>0;n/=10) count++; return count; }

C语言第二章习题带答案

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

C语言循环结构练习题带答案.doc

第 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语言常用算法集合汇总

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;i0;n/=10) k=10*k+n%10; return k; } /*求回文数*/

C语言第二章习题

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 main() { int a; a = (int)1.99*3; printf("%d\n", a); } 程序的运行结果是() A) 3 B) 5 C) 6 D) 结果不确定 6.请选出合法的C语言赋值语句:() A) a=b=58 B) i++; C) a=58,b=58 D) k=int(a+b) 7.假设在程序中a,b,c均被定义成整型,并且已赋大于1的值,则下列能正确表 示代数式 1/abc 的表达式是:() A) 1/a*b*c B) 1/(a*b*c) C) 1/a/b/(float)c D) 1.0/a/b/c 8.请选出以下语句的输出结果:() printf("%d\n",strlen("\t\"\065\xff\n"));//srelen()为求字符串长度的函数,返回字节数。

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的值是()

C语言第二章习题带答案

练习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.以上三种类型均

C语言第二章习题带答案

练习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,03f

相关文档
最新文档