当前位置:文档之家› C语言复习题-2014

C语言复习题-2014

C语言复习题-2014
C语言复习题-2014

C语言复习题(2014)

一、选择题

请把答案填写在下面的横线上,否则不能得分。

1. B

2. D

3. C

4. D

5. A

6. B

7. A

8. D

9. C 10. D

11. C 21. A 31. C 41. B 51. A 12. B

22. D

32. A

42. D

52. B

13. D

23. B

33. B

43. C

53. B

14. B

24. C

34. A

44. C

54. A

15. D

25. C

35. C

45. D

55. C

16. C

26. B

36. D

46. D

56. A

17. D

27. B

37. B

47. D

57. B

18. D

28. A

38. D

48. C

58. A

19. A

29. D

39. A

49. D

59. B

20. C

30. A

40. C

50. C

60. C

61. D 62. C 63. C

1.下列关于C程序的说法错误的是(

A)一个程序必须有一个main函数)。

B)函数首部后面必须有分号

C)可以使用“/* */”来注释一段代码D)每个语句的末尾必须有分号

2.下列关于C程序的说法错误的是(

A)stdio.h是输入输出头文件)。

B)一个C语句必须以分号结束

C)VC6.0中可以使用“//”来注释一行3.下列选项中,不能作为C语言标识符的是(D)#define命令不是预处理命令)。

A)_total B)p405 C)$123 D)abc 4.若有“float x=123.41; printf("%4.2f",x);”,则执行后的输出结果为()。

A)12.3 B)12.34 C)123.4 D)123.41

5.下列选项中,不能正确表示分式4

3

的C语言表达式是()。

A)4/3 B)4/3.0 C)1.0*4/3 D)4/(float)3 6.若有定义“int x,y;”,则表达式“x=1,y=x+3/2”的值为()。

A)1 B)2 C)2.0 D)2.5

7.下列关于C程序的说法错误的是()。

A)C语言程序的基本组成单位是语句C)每条语句必须以分号结束B)C语言程序中一行可以写多条语句D)一个语句可以写在多行上

8.以下关于标识符的说法错误的是()。

A)标识符由字母、数字和下划线组成C)首字符必须是字母或下划线B)标识符不能与系统的关键字同名

D)不区分大小写,s和S是同一个变量

9.表达式7%4+7/2的值是()。

A)4 B)4.5 C)6 D)6.5

10.已知变量a和b是int型,若有语句“scanf("a=%d,b=%d",&a,&b);”,使a的值是5,b的值是

8,则正确的输入是()。

A)5 8↙B)5,8↙C)a=5 b=8↙D)a=5,b=8↙

11.若有定义“int a; float b;”,执行“scanf("%3d%f",&a,&b);”语句时,从键盘输入:

1234 567.8↙,则a和b的值分别是(A)1234和567.800000

C)123和4.000000 )。

B)123和567.800000

D)234和567.800000

12.执行“printf ("%f%%",1.0/3);”语句后,正确的输出结果是()。

A )0.3

B )0.333333%

C )0.3%

D )0.003%

13. 若要定义符号常量 PI 代表 3.14,正确的预处理命令是(

)。

A )#define PI 3.14; C )define PI 3.14

B )#define PI=3.14

D )#define PI 3.14 14.

15. 以下变量定义及初始化语句中正确的是(

A )double a=0.5;b=1.5; C )int a=b=0;

以下关于算法的描述中不正确的是(

)。 )。

B )char a=97,b='b'; D )float a=1,b=&a;

A )算法中每一个步骤的含义都应该是确定的

B )算法中每一个步骤都应该能有效执行

C )正确的算法应在有限步骤内结束

D )正确的算法都必须有输入和输出

16. 当一个关系表达式成立时,该表达式的值为(

)。 A )-1

B )0

C )1

D )不确定的非 0 值

17. 关于 if 语句的说法正确的是(

)。

A )双分支语句中有可能两个分支都不执行

B )if 多分支语句中不能没有最后的 else

C )if 语句中可以使用 continue 语句

D )else 总是与前面最近的、没有与其它 else 配对的 if 配对 18. 要判断 x 是否满足表达式“-1≤x ≤1”,正确的 C 语言表达式是(

)。

A )-1<=x<=1

B )-1≤x ≤1

C )x>=-1||x<=1

D )x>=-1&&x<=1

19. 若有程序段“int x=10; while(x!=0) x=x-1;”,执行完该程序段后 x 的值是( )。

A )0

B )-1

C )10

D )9 20. 若有定义“float x,*p=&x;”,能正确输入一个值给 x 的语句是( )。

A )scanf("%f",x);

B )scanf("%lf",&x);

C )scanf("%f",p);

D )scanf("%lf",&p); 21. 以下选项中,对变量的定义和初始化正确的是( )。

A )int a,*p=&a;

B )int a,*p=*a;

C )int a,p=&a;

D )int a,*p=a;

22. 逻辑运算符两侧运算对象的数据类型为(

A )只能是 0 或者 1 C )只能是整型或字符型数据 )。

B )只能是 0 或非 0 正数 D )可以是任何类型的数据

23. 在 c 语言中,执行完语句“for (i=1;i<=10;i++);”后,i 的值是(

)。

A )10

B )11

C )1

D )不确定

24. 定义了指向某个变量的指针,其含义是指针变量里存放的是该变量的( )。 A )值 B )名 C )地址 D )一个标志 25. 若有语句“int *pt, a=4; pt=&a;”,则下面均代表地址的一组选项是(

) A )a,pt

B )&a,*pt

C )&a,pt

D )*pt,&pt

26. 若有语句“float *p,m=3.14;”,想要建立如下图所示的存储结构,则正确的赋值语句是(

p

m

)。

A )p=m;

B )p=&m;

C )*p=m;

D )*p=&m;

27. 有语句“int a=3, b=5, *p, *q; p=&a; q=&b;”,若要实现下图中所示的存储结构,则可以使用的

赋值语句是(

)。

A )*p=*q;

B )p=q;

C )p=*q;

D )*p=q;

28. 以下程序段中有个语句是错误的,则下列说法正确的是(

)。

int *p, i; char *q, ch; p=&i; q=&ch; *p=4; p=q;

A )p 和 q 的类型不一致,不能执行语句 p=q

B )*p 中应该存放地址值,因此不能执行*p=4

C )q 虽然指向了具体的存储单元,但是该单元中没有具体的值,所以不能执行 p=q

D )q 没有指向具体的存储单元,所以不能执行 p=q 29. 若输入字符串:abcde<回车>,则以下 while 循环体将执行(

while((ch=getchar( ))=='e')

printf("*"); )次。

A )5

B )4

C )6

D )0

30. 若 i ,j 已定义为 int 类型,则以下循环嵌套程序段中循环体一共要执行的次数是(

for (i=5;i>0;i--)

for (j=0;j<4;j++) { ... } )。

A )20

B )25

C )24

D )30

31. 关于函数的说法不正确的是(

A )C 语言用函数实现模块的功能 )。

B )可根据需要自己来编写函数

C )可以在一个函数内定义另一个函数

D )一个函数可以没有参数

32. C 程序中,若对函数类型未加显式说明,则函数类型默认为(

)。

A )int

B )void

C )double

D )int *

33. 在函数内部定义的局部变量,若不对其存储类型进行说明,则默认为( )。 A )static B )auto C )extern

D )以上均不对

34. 若函数 fun 被调用 3 次,则最后一次的输出结果为(

void fun( ) {

int a=1; a+=2;

printf("a=%d\n",a); } )。

A )a=3

B )a=5

C )a=7

D )a=9

35. 若函数 fun 被调用 3 次,则最后一次的输出结果为(

void fun( ) {

static int a=1; a+=2;

)。

printf("a=%d\n",a);

}

A)a=3 B)a=5 C)a=7 D)a=9 36.如果在一个函数中的复合语句中定义了一个变量,则该变量()。

A)在该函数中有效

C)在本程序范围内均有效

37. C语言规定,函数返回值的类型是由(

A)调用该函数时系统临时决定

C)return语句中的表达式类型决定

38. putchar函数可以向终端输出一个(

A)整型变量表达式值

C)字符串)。

)。

B)为非法变量

D)只在该复合语句中有效

B)在定义该函数时所指定的类型决定

D)调用该函数时主调函数类型决定

B)实型变量值

D)字符或字符型变量值

39.执行以下程序段的输出结果是(

void fun(int x, int y)

)。

{ x=10; y=20; }

void main( )

{ int a=1, b=2;

fun(a, b);

printf("%d, %d\n", a,b);

}

A)1,2 B)10,20 C)10,2 D)1,20

40.执行函数调用“fun('5')”得到的返回值为(

int fun(char ch)

{ return(ch>='0'&&ch<='9'); }

)。

A)-1 B)0 C)1 D)2

41.关于局部变量的说法正确的是()。

A)有效范围是从定义开始到程序结束的所有函数

B)有效范围是从定义开始到函数结束

C)形参不是局部变量,而是全局变量

D)复合语句中不能定义局部变量

42.关于变量属性的说法错误的是()。

A)动态变量是在函数开始执行时分配内存单元,函数执行完毕后立即释放

B)静态变量是在函数的执行过程中始终占用同一内存单元,程序执行结束时才释放

C)全局变量都是静态变量,只有局部变量才有动态变量

D)动态变量若不赋初值,系统会自动赋值为0

43.若有变量定义“int x=5,*p=&x;”,则执行函数调用“fun(p);”时,传递给fun函数的是()。

A)指针变量p的地址

C)变量x的地址

44.以下数组的定义形式正确的是()。B)指针变量*p的值D)变量x的值

A)int k=5,a[k]; B)int a[ ]; C)char c[]={'a'}; D)char a(10);

45.以下一维数组的定义及初始化中,错误的是(

A)int a[3]={0};

C)static int a[3];

)。

B)int a[3]={1,1,1}; D)int n=3,a[n]={0};

46.若有定义“int a[ ][3]={0,1,2,3,4,5,6,7};”,则元素a[1][2]的值为()。

A)1 B)2 C)4 D)5

47.若有说明语句“int a[2][4]={{1},{2,3}};”,则数组元素a[1][1]的值为()。

A)0 B)1 C)2 D)3

48.若有定义“char s1[20],s2[ ]="China";”,为使s1的值与s2相同,下列选项中正确的是()。

A)s1=s2; B)strcmp(s1,s2); C)strcpy(s1,s2); D)strcpy(s2,s1);

49.为了比较字符串s是否大于t,条件表达式应该写成()。

A)s>t B)strcmp(s,t)<0 C)strcmp(s,t)==0 D)strcmp(s,t)>0

50.若有语句“int a[10],*p=&a[2];”,则执行语句“p=p+4;”后,p指向的数组元素是()。

A)a[4] B)a[5] C)a[6] D)a[7]

51.执行以下程序段的输出结果是(

char s[ ]="Program",*ptr;

for (ptr=s; *ptr!='g'; ptr++)

printf("%c",*ptr);

)。

A)Pro B)Prog C)Proram D)程序有错误

52.对以下说明语句的正确理解是()。

int a[10]={6,7,8,9,10};

A)将5个初值依次赋给a[1]至a[5]

B)将5个初值依次赋给a[0]至a[4]

C)将5个初值依次赋给a[6]至a[10]

D)因为数组长度与初值的个数不相同,所以此语句不正确

53.以下给字符数组str定义和赋值正确的是(

A)char str[10]; str={"China! "};

C)char str[10]; strcpy(str, "abcdefghijkl");

)。

B)char str[ ]={"China!"};

D)char str[10]={"abcdefghijkl"};

54.当接受用户输入的含有空格的字符串时,应使用()函数。

A)gets B)getchar C)scanf D)printf 55.执行以下程序段的输出结果是(

int a[ ]={1,8,2,8,3,8,4,8,5,8};

printf("%d,%d\n",a[4]+3,a[4+3]);

)。

A)6,6 B)8,8 C)6,8 D)8,6

56.以下说法正确的是(

A)p[i]等价于*(p+i)

C)p[i]等价于p+i )。

B)&p[i]等价于*(p+i)

D)p[i]等价于*p+i

57.设有定义“double a[10], *s=a”,以下能够代表数组元素a[2]的是()。

A)(*s)[2] B)*(s+2) C)*s[2] D)*s+2

58.执行下面程序段的输出结果是(

char s[ ]="Prog";

char *p;

)。

for (p=s;p

A)Progrogogg B)Prog C)gorP D)ProgProPrP 59.若有定义“struct Student{int no; char name[20]; int score;}stu,*p=&stu;”,关于结构体的使用不正确的是()。

A)scanf("%s",https://www.doczj.com/doc/ae18770254.html,);

C)p->score=98;

60.已知如下定义,则下面叙述不正确的是(B)printf("%d,%s,%d\n",stu); D)strcpy((*p).name,"LiMing"); )。

3. 为了计算表达式 (x + y )

struct stu{ int a; float b;}stutype; A )struct 是结构体类型的关键字 B )struct stu 是用户定义的结构体类型 C )stutype 是用户定义的结构体类型名 D )a 和 b 都是结构体成员名

61. 当定义一个结构体变量时,系统为它分配的内存空间是(

)。

A )结构体中一个成员所需的内存容量

B )结构体中第一个成员所需的内存容量

C )结构体中占内存容量最大者所需的容量

D )结构中各成员所需内存容量之和

62. 定义结构体类型“struct s{ int x; float f; }a[3];”,则执行语句“printf("%d",sizeof(a));”的输出 结果是(

)。

A )4

B )12

C )24

D )8

63. 执行下列程序段的输出结果是(

struct c{int x; int y;}s[2]={1,3,2,7}; printf("%d", s[0].x*s[1].x); )。

A )14

B )6

C )2

D )21

二、填空题(参考答案见第 20 页)

请把答案填在下面的横线上,否则不能得分。 1. C 语言程序的基本单位是____________。

2. 要求运算对象必须是整型的运算符是____________。

2014.6

,需要用到的数学函数是____________。(写出函数名)

4. 若要计算实数 x 的绝对值,则要用到的数学函数是____________。(写出函数名)

5. 结构化程序的三种基本控制结构是____________、选择结构和循环结构。

6. C 语言程序设计中,单行注释以____________符号作开始标记。

7. C 语言程序设计中,多行注释以____________符号作开始标记,以____________符号作为结束 标记。

8. C 语言的标识符只能由字母、____________和____________组成,且第一个字符必须为字母或 ____________。

9. C 语言中一个实数常量默认为____________类型。 10. C 语言中求字节的运算符是____________。

11. 若有 C 语言语句“scanf("%d,%d",&a,&b);”,如果要给变量 a 输入 5,变量 b 输入 6,则在程 序执行时,应该输入____________,然后回车。 12. C 语言中表示换行的转义字符是____________。

13. C 语言程序书写格式自由,一行可以写几个语句,一个语句也可以写在多行上。每条语句的最 后必须有一个____________符号表示语句的结束。

14. 若有定义“int a=2,b=3,x; x=a>b?a:b;”,则 x 的值为____________。

15. switch 语句中,为了在其它条件都不满足时执行某个操作,应该使用____________子句。

16.如果循环体不需要执行任何操作,此时应使用____________语句作为循环体。

17.若要提前终止循环语句的执行,应该使用____________语句。

18.若有定义“int a,*p=&a;”,要通过指针变量p来输入a的值,请填空。

scanf("%d",____________);

19.若有定义“int x,*p;”,为了让p指向x,应该执行的操作是____________。

20.判断闰年的逻辑表达式为y%4==0&&y%100!=0______y%400______0。

21.关系表达式的值是一个逻辑值,只有____________种取值。

22.设“a=1,b=2,c=3,d=4,m=n=1”,执行完“(m=a>b)&&(n=c>d)”后,n的值为____________。

23. C语言提供了3种基本循环结构:while循环、do-while循环和____________循环。

24. for语句中有3个表达式,各表达式间用____________分隔。

25.除了给指针变量赋地址值外,还可以给指针变量赋空值,给指针变量p赋空值的语句是

____________。

26.能表述“10

27.程序段“int k=10;while(k=0) k=k-1;”,则循环体语句将会执行____________次。

28.设i,j,k均为int型变量,执行完语句“for (i=0,j=10;i<=j;i++,j--) k=i+j;”后,k的值为

____________。

29.设x为int型变量,请写出一个关系表达式,用以判断x同时为3和7的倍数时,关系表达式的值为真。____________

30.为了使函数能返回一个确定的值,必须使用____________语句。

31.定义一个函数没有返回值,则函数类型应为____________。

32.指针作为函数实参时,实际传递的是某个变量的____________。

33.普通变量做参数时,实参与形参占有____________的内存单元。

34.程序在调用一个函数的过程中,该被调函数又可以调用其它函数,这种情况称之为函数的

____________调用。

35.一个C源程序中至少应包括一个____________函数。

36.如果在程序中用到函数sqrt,则在程序开始处应使用命令:#include <____________>(请填上

应该包含的文件名)。

37.从作用域的角度,变量可分为局部变量和____________。

38.若有定义“int i,*p;”,为了使p指向i,则能实现该功能的语句是____________。

39.在C程序中,指针变量p1指向整型变量a,如需要让指针变量p2也指向整型变量a,则对应的语句为____________或者____________。

40.若有定义“static int a[10]={1,2,3};”,则a[3]的值为____________。

41.一维数组中,下标的取值是从____________开始的。

42.若有定义“int a[3][4];”,则该数组的最后一个元素是____________。

43.若有定义“char *p="ABCD";”,执行“puts(p+2);”的输出结果为____________。

44.若有定义“int a[10],*p1=&a[5],*p2=&a[2];”,则p1-p2=____________。

45.若有定义“int a[10];”,则*(a+5)表示____________。

46.设int a[2][3]={{2},{3}};则数组元素____________的值为3。

47.若有定义:double xx[3][5];,则xx数组中行下标的最大取值为____________。

48.若有定义:char s1[20],s2[ ]="China";,则执行语句:strcpy(s1,s2+2);后,字符数组s1中存放的字符串为____________。

49.字符串用一维字符数组形式进行存储,它以____________结尾。

50.有语句“char c[ ]={"I am a student"};”;该字符串的长度是____________,c[3]=____________。

51.若有定义“char str[10];”,用str存储一个字符串时,则该字符串的最大长度为____________。

52.若有定义:int a[10], *p=&a[3];,则p[4]表示的数组元素是a[____________]。

53.连接两个字符串的库函数为____________。

54.在C语言中,二维数组在内存中的存放顺序是____________。

55.若二维数组a有m列,则在a[i][j]前的元素个数为____________。

56.若有枚举类型定义“enum weekday{Sun=7, Mon, Tue, Wed=0, Thu, Fri, Sat};”,则枚举常量Mon 的值为____________。

57.若有结构体类型的定义“struct test{ char x; int y; float z;};”,则该结构体类型的变量所占字节

数为____________。

58.若有结构体类型的定义“struct test{ int x; int y;}tt,*p=&tt;”,通过指针p引用结构体变量tt的成员x的方法有____________和____________。

三、程序填空题

注:以下参考答案仅用于参考,若干答案也可以写成其它等价的形式。

1.下列程序段要从键盘输入两个变量x、y的值,并交换x和y。请填空。

int x,y,temp;

scanf("%d%d", ____________); // &x,&y

temp=x;

____________; // x=y

y=temp;

printf("x=%d,y=%d\n", x,y);

2.下面的程序段用于读入一个华氏温度,计算并输出对应的摄氏温度,华氏温度转换为摄氏温度

的公式为:C = 5

9

(F - 32)。请填空。

double C,F;

printf("Input F:\n");

scanf("____________",&F); ______________________; // %lf

// C=5.0/9*(F-32)

printf("C=%.2f\n",C);

3.下面的程序段用于计算周期为T秒的人造卫星离地面的平均高度,其中:地球质量M=6×1024kg,地球半径R=6.371×106m。人造卫星离地面的平均高度H的计算公式为:

- 2 ≤ x ≤ 3) ( y = ?2x - 1

?3 lg (3x + 5)- 11 (x > 3)

H =

3

6.67 ?10 -11 MT 2

4π 2

- R

#define PI 3.1415926 #define M 6E24 #define R 6.371E6 double T,H,x; printf("Input T: "); scanf("%lf",&T);

x=______________________; H=____________-R; // 6.67E-11*M*T*T/(4*PI*PI) // pow(x, 1.0/3)

printf("H=%lf\n", H);

4. 下面的程序段用于从键盘输入 3 个正整数,找到最大数并输出。请填空。

int a,b,c,max;

scanf("%d%d%d",&a,&b,&c); ____________; if (____________)

// max=a

// maxmax

max=b; if (c>max)

max=c;

printf("max=%d\n",max);

5. 有如下分段函数,根据输入的 x 值计算 y 值,并输出。请填空。

?- e 2 x +1 + 3 (x < -2) ?

?

double x,y; scanf("%lf",&x); if (x<-2)

y=-exp(2*x+1)+3; ____________ (x<=3)

y=2*x-1; else

y=3*____________-11; // else if

// log10(3*x+5)

printf("y=%lf\n",y);

6. 闰年是指能被 4 整除,但不能被 100 整除;或者能被 400 整除的年份。请填空。

int year;

scanf("%d",&year);

if (____________&&year%100!=0____________year%400==0)

// year%4==0、||

printf("leap year.\n"); else

printf("not leap year.\n");

7. 从键盘读入一个百分制成绩,将其转换为对应的五级制并输出。请填空。

int score;

scanf("%d",&score); //输入一个0-100之间的分数

____________(score/10) // switch { case 10:

case 9: printf("A\n"); ____________;

case 8: printf("B\n"); break;

case 7: printf("C\n"); break;

case 6: printf("D\n"); break;

____________: printf("E\n");

}

8.下面的程序段用于计算10!。请填空。

int i,s;

s=____________;

for (i=1;i<=10;i++)

____________; // break

// default

// 1

// s=s*i

printf("10!=%d\n",s);

9.从键盘输入若干字符,以回车结束,统计其中大写字母、空格及其它字符的个数。请填空。

char ch;

int upper=0,space=0,other=0;

while ((ch=____________)!='\n')

if (________________________) //大写字母upper+=1; // getchar( )

// ch>='A' && ch<='Z'

else if (____________) space+=1;

else //空格

//其它字符

// ch==' '或ch==32

other+=1;

printf("upper=%d, space=%d, other=%d\n",upper,space,other);

10.下面的程序段输出九九乘法表。请填空。

for (i=1; i<=9; i++)

{

for (j=1;j<=____________;j++)

printf("%d*%d=%-3d",j,i,j*i); ____________; // i

// printf("\n")

}

11.下面的程序段用于输出101到200之间的所有素数。请填空。

int m,k,i;

for (m=101;m<=200;m+=2)

{

k=(int)sqrt(m);

for (i=2;i<=k;i++)

}

if (____________)

break;

if (i==____________)

printf("%-4d",m);

// m%i==0

// k+1

12.输出所有的水仙花数。水仙花数是指一个3位数,其各位数字的立方和等于该数本身,例如153=13+53+33。请填空。

int a,b,c,i;

for (i=100; i<=999; i++)

{

a=____________;

b=i%100/10;

c=i%10;

if (i____________a*a*a+b*b*b+c*c*c)

printf("%d ",i);

}

13.从键盘输入一个正整数,计算其最高位数字。请填空。

int x;

scanf("%d",&x);

while (____________)

x=____________; // i/100 // ==

// x>=10 // x/10

printf("最高位数字为:%d\n",x);

14.国民生产总值(GDP)每年递增7.5%,编写程序计算并输出需要多少年国民生产总值才能翻一番。请填空。

int year=0;

double a=1;

while (____________) // a<2

{ a=a*____________; // (1+0.075)

year++;

}

printf("经过%d年翻一番!\n",year);

15.编写函数fun求m n。请填空。

____________ fun(int m, int n) // double

{ int i; double t=1;

for (i=1;i<=n;i++)

____________;

return t;

}

16.函数fun用于计算n!(1≤n≤18)。请填空。

double fun(____________)

{

double r=1;

int i;

for (i=1;i<=n;i++)

r=r*i;

____________; // t=t*m // int n

// return(r)

}

17.若要通过函数调用语句“swap(&a,&b);”交换a、b的值,下面是函数swap的定义。请填空。

void swap(int *pa, ____________) // int *pb

{

int t;

t=*pa;

*pa=*pb;

____________; // *pb=t

}

18.以下程序的功能是,从键盘输入两个整数a、b,调用函数swap交换a、b的值,最后输出交换后的结果。请填空。

void swap(int *p1, int *p2)

{

int t;

t=*p1; ____________; *p2=t; }

void main( )

{

int a,b;

scanf("%d%d",&a,&b);

swap(____________); // *p1=*p2 // &a,&b

printf("a=%d,b=%d\n", a,b);

}

19.下面的程序段是用冒泡法对数组a中的10个整数按从小到大排序。请填空。

int a[10]={8,6,4,9,7,3,5,1,2,0},i.j,t;

for (i=0; i<9; i++)

for (j=0; j<____________; j++)

if (____________)

{ t=a[j]; a[j]=a[j+1]; a[j+1]=t; }

20.以下程序段将一个一维数组中的数逆序存放。请填空。

int a[10],i,j,t;

for (i=0;i<10;i++)

scanf("%d", &a[i]);

for (i=0,j=9;i

// a[j]>a[j+1] // i++,j--

{ t=a[i];

____________; // a[i]=a[j]

a[j]=t;

}

for (i=0;i<10;i++)

printf("%d", a[i]);

21.下面的程序段把矩阵A中的元素转置后存放到矩阵B中。请填空。

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}, ____________, i, j;

for (i=0; i<3; i++)

for (j=0; j<4; j++)

// b[4][3]

b[j][i]=____________; // a[i][j]

22.输入一个M行M列的二维数组,分别计算两条对角线上的元素之和。M为符号常量,请填空。

#define N 5

void main( )

{

int a[N][N],i,j,s1=0,s2=0;

printf("input a %d*%d matrix:\n",N,N);

for (i=0;i

for (j=0;j

{ scanf("%d",____________);

if (____________) s1+=a[i][i];

if (i+j==N-1)

s2+=a[i][j]; // &a[i][j] // i==j

}

printf("sum is %d and %d\n",s1,s2);

}

23.输入一串字符,统计其中数字字符的个数。请填空。

char s[50];

int i,count=0;

gets(s);

for (i=0; ____________;i++)

if (____________)

count+=1;

printf("%d\n",count);

24.输入6个字符串,找出最大的字符串并输出。请填空。

char str[6][50];

int i,k;

for (i=0; i<6; i++)

gets(____________);

k=0;

for (i=1; i<6; i++)

if (strcmp(str[i],str[k])>0)

____________; // s[i]!='\0'或*(s+i)!='\0' // s[i]>='0'&&s[i]<='9'

// str[i]

// k=i

printf("the largest string is: %s\n",str[k]);

25.函数copy_string用于把字符串from拷贝到to中。请填空。

void copy_string(char *to, char *from)

{

while (____________) *to++=*from++; *to=____________; // *from!='\0' // '\0'

}

四、编程题

注:每个程序的编写方法有多种,下面给出的只是其中一种,以供参考。

1.输入一行字符,统计其中空格的个数。

#include void main( ) #include void main( )

- 1 ≤ x ≤ 10) ( ? 2 x -1

?3 lg (3x - 1)- 13 (x > 10) y = ?ln (2x )- 1 ≤ x < 10) (1 (x ≥ 10) ? 3x + 5

{

char ch; int count=0;

while ((ch=getchar( ))!='\n')

if (ch==' ')

{

char ch; int count=0; scanf("%c",&ch); while (ch!='\n')

}

count+=1;

printf("%d\n",count);

{

if (ch==' ')

count+=1; scanf("%c",&ch); }

printf("%d\n",count);

}

2. 设有分段函数:

?x 3 - 1 (x < -1) y = ?3e + 5

?

编写程序,输入 x 的值,输出 y 值。

#include #include void main( ) {

double x,y; scanf("%lf",&x); if (x<-1)

y=x*x*x-1; else if (x<=10)

y=3*exp(2*x-1)+5; else

y=3*log10(3*x-1)-13; printf("y=%lf\n",y); }

3. 输入 x 的值,根据下面的公式计算 y 值。

?x + 2 (x < 1) ?

?3

#include

#include void main( ) {

double x,y; scanf("%lf",&x); if (x<1)

y=x+2;

n !,即 1!+2!+3!+…+10!。 else if (x<10)

y=log(2*x)-1; else

y=pow(3*x+5,1.0/3); printf("y=%lf\n",y); }

4. 从键盘输入若干整数,以 0 作为结束标志,找出最大数并输出。

#include void main( ) {

int x,max; scanf("%d",&x); max=x; while (x!=0) {

if (x>max)

max=x; scanf("%d",&x); }

printf("max=%d\n",max); }

5. 编写程序,计算

10

n =1

#include void main( ) {

int i,fact,sum; sum=0; fact=1; for (i=1;i<=10;i++) {

fact*=i; sum+=fact; }

printf("%d\n",sum); }

6. 编写程序,判断一个指定的数是否是素数。

#include #include void main( ) {

int m,i,k; scanf("%d",&m); k=(int)sqrt(m);

+

for (i=2;i<=k;i++)

if (m%i==0)

break;

if (i<=k)

printf("%d is not a prime!\n",m); else

printf("%d is a prime!\n",m);

}

7. 编写程序求两个数的最大公约数。

#include void main( ) {

int m,n,gcd;

scanf("%d%d",&m,&n); for (gcd=m;gcd>=1;gcd--)

if (m%gcd==0&&n%gcd==0)

break;

printf("gcd=%d\n",gcd); }

8. 函数 fun 的功能是计算下面表达式的值:

sum = 1 + 1 1 2! 3! + ... + 1

n !

请根据已经给出的代码完成 fun 函数。

#include double fun(int n) {

}

void main( ) {

int n;

scanf("%d",&n);

printf("sum=%f\n",fun(n)); }

9. 函数 isPrime 的功能是判断参数 m 是否是素数,如果是素数,返回整数 1,不是素数则返回整 数 0。请根据已经给出的代码完成该函数。

#include #include int isPrime(int m) {

}

void main( ) {

int m; do

// 输入的 m 必须大于等于 2

{

printf("Input m: "); scanf("%d",&m); }while(m<=1); if (isPrime(m)==1)

printf("%d is a prime.\n",m); else

printf("%d is not a prime.\n",m);

}

10. 函数 fun 的功能是计算下面表达式的值:

sum = 1 1* 2 1 2 * 3 + 1 3 * 4 + ... +

1

n (n + 1)

请根据已经给出的代码完成 fun 函数。

#include

double fun(int n) {

}

void main( ) {

int n; do // 输入的 n 必须大于等于 1

{

printf("Input n: "); scanf("%d",&n); }while(n<1);

printf("sum=%f\n",fun(n)); }

11. 编写函数,计算

C m 。m 和 n 在主函数中输入,计算结果在主函数中输出。1≤m,n ≤12,n < m 。计算时使用如下公式: C m =

n

n

m ! n !(m - n )!

主函数已经给出,请根据已有内容编写自定义函数 Fact 。

#include

int Fact(int n) {

}

void main( ) {

int m,n,c;

scanf("%d%d",&m,&n); c=Fact(m)/(Fact(n)*Fact(m-n)); printf("%d\n",c); }

12. 从键盘输入 10 个整数存放在一个一维数组中,找出最大的数并输出。

#include void main( ) {

int a[10],i,k; for (i=0;i<10;i++)

scanf("%d", &a[i]); k=0;

for (i=1;i<10;i++)

if (a[k]

k=i;

printf("max=%d\n", a[k]); }

13. 编写程序,输入 10 个整数,按从小到大的顺序排序后输出。

#include void main( ) {

int a[11],i,j,temp; for (i=1;i<=10;i++)

scanf("%d",&a[i]); for (i=1;i<=9;i++)

for (j=1;j<=10-i;j++)

if (a[j]>a[j+1])

{ temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

for (i=1;i<=10;i++)

printf("%d ",a[i]);

}

14.编写程序,将字符数组str2中的全部字符连接到字符数组str1的后面。不得使用strcat函数。

#include

void main( )

{

char str1[80],str2[50];

int i,j;

gets(str1);

gets(str2);

for (i=0;str1[i]!='\0';i++)

;

for (j=0;str2[j]!='\0';i++,j++)

str1[i]=str2[j];

str1[i]='\0';

puts(str1);

}

填空题参考答案:

1.函数

2.%(或取余)

3.pow

4.fabs

5.顺序结构

6.//

7.(1)/*(2)*/

8.(1)数字(2)下划线(3)下划线9.double

10. sizeof

11. 5,6

12. '\n'

13.分号

14. 3

15. default

16.空

17. break

18. p

19. p=&x; 30.

31.

32.

33.

34.

35.

36.

37.

38.

39.

40.

41.

42.

43.

44.

45.

46.

47.

48.

return

void

地址

不同

嵌套

main

math.h

全局变量

p=&i;

(1)p2=&a;(2)p2=p1;

a[2][3]

CD

3

a[5]

a[1][0]

2

ina

20.(1)|| (2)== 49. '\0'

21. 2

22. 1

23. for

24.分号

25. p=NULL;

26. a>10&&a<20

27. 0

28. 10 50.

51.

52.

53.

54.

55.

56.

57.

(1)14(2)m

9

7

strcat

按行存储

i*m+j

8

9

29. x%3==0&&x%7==0 58. (1)(*p).x (2)p->x

c语言试题及答案

1、以下正确的说法是( B ) (A) 用户若需要调用标准库函数,调用前必须重新定义 (B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C) 系统根本不允许用户重新定义标准库函数 (D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是( A ) (A) double fun(int x, int y) (B) double fun(int x; int y) (C) double fun(int x, int y); (D) double fun(int x,y); 3、以下正确的函数形式是( D ) (A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;} (C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A ) 该函数 (A) 没有返回值 (B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定 (A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型 (D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C ) (A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式 (C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准 8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递 (C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式

汇编语言程序设计期末考试试卷及参考答案

【汇编语言程序设计】期末考试-试卷及参考答案

执行上述两条指令后,正确的结果是( B )。 A.(AX)=1001H; B.(AX)=0FFFH; C.(AX)=1000H; D.(AX)=0111H。 6.串指令中的目的操作数地址一定是由____A_ _提供。()A.ES:[DI] ; B.SS:[BP]; C.DS:[SI] ; D.CS:[IP]。 7.将DX的内容除以2,正确的指令是( C )。 A.DIV 2 ; B.DIV DX,2 ; C.SAR DX,1; D.SHL DX,1。 8. 用户为了解决自己的问题,用汇编语言所编写的程序,称为( B )。 A.目标程序; B.汇编语言源程序; C.可执行程序; D.汇编程序。 9.用一条指令仅实现将AX←BX+SI的方法是( D )。 A.XCHG AX,[BX][SI] ; B.MOV AX,[BX+SI]; C.LEA AX,BX[SI] ; D.LEA AX,[BX][SI]。 10.设SP初值为2000H,执行指令“PUSH AX”后,SP的值是( C )。 A.1FFFH; B.1998H; C.1FFEH; D.2002H。 2. C 二、指出下列指令的出错原因,并改正。(每小题2分,共12分) 1.MOV BX,DL;操作数类型不匹配,改正为:MOV BL,DL 或MOV BX,DX 2.MOV CS,AX;代码段寄存器CS不能作目的操作数,改正为MOV DS,AX 3.ADD AX,DS;段寄存器DS的内容不能作为加法指令的操作数,改正为 MOV BX,DS ADD AX,BX 4.TEST BX,[CX];不能使用CX实现寄存器间接寻址,改正为 MOV SI,CX TEST BX,[SI] 5.SUB [BX],[BP+SI];两个操作数不能同为存储器操作数,且两个操作数的数据类型不确定,改正为:MOV AX,[BX] SUB AX,[BP+SI] 或:MOV AL,[BX] SUB AL,[BP+SI] 6.SHL DX ;没有给出移位次数,改正为SHL DX,1或 SHL DX,CL 三、程序填空题(注意:每空只能填一条指令,并注释说明所填指令的作用!每空3分,共18分) 1.在表TABLE处存放着N个无符号字节数,求表中前10个字节数的总和并

C语言练习试题和答案

单项选择题: 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从 C开始执行。 A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 [i] t 6.下列C语言用户标识符中合法的是( B)。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C)。 A) %x B) a+b C) a123 D) 123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# 语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A) B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

嵌入式C语言经典笔试题目

嵌入式c语言经典笔试题目 1 .用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3)意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4)如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2 .写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B)((A)<= (B) ? (A) : (B)) 这个测试是为下面的目的而设的: 1)标识#define在宏中应用的基本知识。这是很重要的。因为在嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。 3)懂得在宏中小心地把参数用括号括起来 4)我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? least = MIN(*p++, b); 3.预处理器标识#error的目的是什么? 如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。 死循环(Infinite loops) 4.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。我首选的方案是: while(1) { } 一些程序员更喜欢如下方案: for(;;) { } 这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案,

(完整版)C语言试题及答案解析

C语言 一、选择题(第题2分,共20分) 1.一个C程序的执行是从 A 。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 C 。 A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。 A) float B) char C) int D) double 5. putchar函数可以向终端输出一个 D 。 A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 6. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 B ;如果字符串长度小于5,则输出按方式 C 。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 7.判断char型变量ch是否为大写字母的正确表达式是 C 。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 9.以下程序段______C__. x=-1; do{ x=x*x; } while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 10.以下正确的描述是___B____. A)continue语句的作用是结束整个循环的执行

c语言笔试题(答案)(精心整理)

笔试题 一、填空题(每个空4分,共28分) 1)struct tagABC { char name[10]; char sex; long sno; float score[4]; }*pAbc;(四字节对齐) pAbc=NULL; 那么,执行pAbc+=2;之后pAbc的值为(64 ) 2)如下代码,最终value的值是(8) int *p1,*p2; int value; p1=(int*)0×400; p2=(int*)0×408; value = p2-p1; 3)如下代码,printf的结果为(2) #include〈stdio.h〉 #include〈string.h〉 void main(void) { char acNew[20]= “\\0\0”; printf(“%d\n”,strlen(acNew)); } 4) 有如下程序段,运行该程序的输出结果是(33) main () { int y=3,x=3,z=1; printf(“%d%d\n”,(++x,y++),z+2); } 5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2)6)struct tagAAA { Unsigned char ucId:1; Unsigned char ucPara0:2; Unsigned char ucState:6; Unsigned char ucTail:4; Unsigned char ucAvail; Unsigned char unTail2:4; Unsigned long ulData; }AAA_S 问:AAA_S在字节对齐分别为1,4情况下,占用的空间大小分别是多少?( 9)(12 )

汇编语言期末考试试题

一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.CPU要访问的某一存储单元的实际地址称() A.段地址B.偏移地址 C.物理地址D.逻辑地址 2.某存储单元的物理地址是12345H,可以作为它的段地址有() A.2345H B.12345H C.12340H D.1234H 3.执行后使BX=0的同时也使CF=0,OF=0的指令是() A.XOR BX,BX B.OR BX,BX C.AND BX,BX D.CMP BX,BX 4.循环控制指令LoopNZ/LoopNE控制循环继续执行的条件是() A.CX≠0且ZF=1B.CX≠0且ZF=0 C.CX≠0或ZF=1D.CX≠0或ZF=0 5.在执行DAA指令,当高四位BCD码校正时产生进位,如要把此进位值送入AH中,对这进位值的操作应是() A.DAA校正指令的功能已自动加在AH中 B.进位值在AF中,校正后根据AF内容再加在AH中 C.进位值在CF中,校正后根据CF内容再加在AH中 D.进位值在AL最高位上,校正后根据AL最高位内容再加在AH中 6.AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是() A.指令XOR AX,AX执行后,AX内容不变,但设置了标志位 B.指令OR DX,1000H执行后,将DX最高位置1,其余各位置0 C.指令AND AX,OFH执行后,分离出AL低四位 D.NOT AX,执行后,将AX清0 7.在执行下列指令时,需要使用段寄存器DS的指令是() A.STOSW B.ADD AL,CL C.NEG BX D.INC DA[BX] 8.无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指令是()A.ADD BH,01H B.OR BH,01H C.XOR BH,01H D.TEST BH,01H 9.完成对CL寄存器的内容乘以4的正确操作是() A.ROL CL,1B.MUL4 ROL CL,1 C.SHL CL,1D.MOV CL,2 SHL CL,1SHL CL,CL 10.下面各传送指令中,正确的是() A.MOV[DI],[SI]B.MOV[DX+DI],AL C.MOV WORD PTR[BX],0100H D.MOV AL,BX 11.汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法() A.名字的第一个字符可以是大写英文字母及小写英文字母 B.名字的第一个字符可以是字母、数字及、@、_ C.名字的有效长度≤31个字符 D.在名字中不允许出现$

C语言试卷及答案

一、选择题(每题 1 分,共 20 分) 1. C 语言程序的三种基本结构是顺序结构、选择结构和结构。 A、循环 B、递归 C、转移 D、嵌套 2. 下列标识符中,合法的是_______ 。 A) unsigned B) 5ab C) INT# D)_num2 3. 若float x ;x = 10/4 ;x的值是。 A、2.5 B、2.0 C、3 D、 2 4. 表达式!x 等价于。 A、x==0 B、x==1 C、x != 0 D、x != 1 5. 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为。 A、算术运算、赋值运算、关系运算 B、关系运算、赋值运算、算术运算 C、算术运算、关系运算、赋值运算 D、关系运算、算术运算、赋值运算 6. 能将高级语言编写的源程序转换为目标程序的是。 A、链接程序 B、解释程序 C、编译程序 D、编辑程序 7. 下列语句定义pf为指向float类型变量f的指针,是正确的。 A、float f, *pf = f; B、float f, *pf = &f; C、float *pf = &f, f; D、float f, pf = f; 8. 一个C程序的执行是从。 A、本程序的main函数开始,到main函数结束 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C、本程序的main函数开始,到本程序文件的最后一个函数结束 D、本程序文件的第一个函数开始,到本程序main函数结束 9. 能正确表示“当x的取值在[1,10]或[[200,210]范围内为真,否则为假”的表达式是________。 A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B、(x>=1)||(x<=10)||(x>=200)||(x<=210) C、(x>=1)&&(x<=10)||(x>=200)&&(x<=210) D、(x>=1)||(x<=10)&&(x>=200)||(x<=210) 10. 对两个数组a和b进行如下初始化 char a[]=“ABCDEF”;char b[]={ …A?,?B?,?C?,?D?,?E?,?F?}; 则以下叙述正确的是。 A、a和b数组完全相同 B、a和b长度相同 C、a和b中都存放字符串 D、a数组比b数组长度长 11. 是不正确的字符常量。 A、'\n' B、'1' C、"a" D、'\101' 12. 若变量已正确定义,语句“if(a>b) k=0; else k=1;”和等价。 A、k=(a>b)?1:0; B、k=a>b; C、k=a<=b; D、a<=b ? 0 : 1; 13. 设变量定义为“int x, *p=&x;”,则&*p相当于。 A、p B、*p C、x D、*&x 14. 有两个字符数组a、b,则以下正确的输入语句是。 A)gets(a,b); B) scanf(“%s%s”,a,b); C) scanf(“%s%s”,&a,&b); D) gets(“a”),gets(“b”); 15. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是。 A、地址传递 B、单向值传递

c语言笔试题目及答案

c语言笔试题目及答案 C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面是c语言笔试题目及答案,请参考。 c语言笔试题目及答案 一、选择题((1)~(10)每小题2分,(11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选 项涂写在答题卡相应位置上,答在试卷上不得分。 (1)数据的存储结构是指________。 A)存储在外存中的数据 B)数据所占的存储空间量 C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示 答案:D 评析:数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。 (2)下列关于栈的描述中错误的是________。 A)栈是先进后出的线性表

B)栈只能顺序存储 C)栈具有记忆作用 D)对栈的插入与删除操作中,不需要改变栈底指针 答案:B 评析:栈是一种特殊的线性表,又称先进后出表(FILO—First In Last Out)。 (3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 ________。 A)冒泡排序为n2 B)冒泡排序为n C)快速排序为n D)快速排序为n(n一1)/2 答案:D 评析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。快速排序法的最坏情况比较次数也是n(n-1)/2。 (4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为________。 A)log2n B)n/2 C)n D)n+l 答案:C 评析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性表中,则需要与线性表中所有的元素进行比较。对长度为n的线性表进行顺序查找,在最坏情况下需要比较

c语言试题及答案 ()

第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由

主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。

C语言试题及答案

一、单项选择题 1. 软件危机具有下列表现( d )。 I. 对软件开发成本估计不准确II. 软件产品的质量往往靠不住 III. 软件常常不可维护IV. 软件成本逐年上升 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 2. 软件生命周期一般都被划分为若干个独立的阶段,其中占用精力和费用最多的阶段往往是( A )。 A. 运行和维护阶段 B. 设计阶段 C. 代码实现阶段 D. 测试阶段 3. 下列属于软件的特点的是(D )。 A. 软件是一种逻辑实体,具有抽象性 ~ B. 软件在使用过程中没有磨损、老化的问题 C. 软件不同于一般程序,它的一个显著特点是规模庞大,复杂程度高 D. 以上都正确 4. 软件工程的出现是由于(D )。 A. 软件危机的出现 B. 计算机硬件技术的发展 C. 软件社会化的需要 D. 计算机软件技术的发展 5. 软件开发技术不包含( d )。 A. 软件开发方法学 B. 软件工程环境 C. 软件工具 D. 软件质量度度量 6. 软件工程的课程特点( D )。 【 I. 学科理论及其知识应用的多维性 II. 工程化 III. 浓厚的方法学色彩 IV. 实践性、指导性强 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 7. 下列属于应用软件的是( b )。 I. 计算机辅助教学软件II. 软件测试工具 III. 办公自动化软件IV. 工程与科学计算软件

A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 8. 需求分析阶段最重要的技术文档是( b )。 - A. 设计说明书 B. 需求规格说明书 C. 可行性分析报告 D. 用户手册 9. 以下关于数据流图的说法错误的是( c )。 A. 数据流图舍去了具体的物质,只剩下数据的流动、加工处理和存储 B. 数据流图是用作结构化分析的一种工具 C. 传统的数据流图中主要由加工、数据源点/终点、数据流、控制流、数据存储组成 D. 数据流图的绘制采用自上向下、逐层分解的方法 10. 数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是( c )。 A. 数据库设计 B. 数据通信 C. 数据定义 D. 数据维护 11. 需求分析阶段的研究对象是( b )。 ¥ A. 系统分析员要求 B. 用户要求 C. 软硬件要求 D. 系统要求 12. 结构化方法的基本原则是( b )。 A. 模块化 B. 抽象与分解 C. 信息隐蔽 D. 逐步求精 13. 耦合度最高的是(b)耦合。 A. 环境 B. 内容 C. 控制 D. 数据 14. 内聚程度较低的是( a )内聚。 A. 偶然 B. 通讯 C. 顺序 D. 时间 15. 对一个程序来说,组成系统的模块数目( b ),则开发成本越小。 A. 越多 B. 越少 C. 顺序 D. 时间> 16. 画软件结构图时应注意调用关系只能是(B )。 A. 从下到上 B. 从上到下 C. 从左到右 D. 从右到左 17. 程序流程图中的箭头代表( b )。 A. 数据流 B. 控制流 C. 顺序流 D. 调用 18. 软件测试是软件质量保证的重要手段,下述( B )是软件测试的最基础环节。

《汇编语言程序设计》期末复习题答案_57431457509182192

《汇编语言程序设计》复习题(答案指导/带页号)一、选择(30题) 1.下列是8位带符号二进制数的补码,其中最大的是( B )。参见P22 A、10001000 B、00000001 C、00000000 D、11111111 2.在一段汇编语言程序中多次调用另一段程序,用宏指令比用子程序实现 ( C )参见P157、158 A、占内存空间小,但速度慢 B、占内存空间相同,速度快 C、占内存空间大,但速度快 D、占内存空间相同,速度慢 3.数据定义为:EE DB 3,4 CC DW 3456H,6789H 执行指令“MOV CX,WORD PTR EE+1”后,(CX)= ( B )参见P27、63、64 A、0304H B、5604H C、3404H D、3456H 4.有如下指令序列: MOV AL,95H MOV CL,2 SAR AL,CL 上述指令序列执行后,AL的内容是( D )参见P95 A、05H B、25H C、24H D、0E5H 5.设A=18610,B=2738,C=0BB16,把这三个数看成无符号数,则它们之间的关系是( D )参见P23、15 A、A>B>C B、 A

C语言试题与答案

大学C语言考试题库 第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系

嵌入式C语言面试题汇总(超经典)

第一部分:基本概念及其它问答题 1、关键字static的作用是什么? 这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。 2、“引用”与指针的区别是什么? 答、1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。 指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。 流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。 3、.h头文件中的ifndef/define/endif 的作用? 答:防止该头文件被重复引用。 4、#include 与#include “file.h”的区别? 答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。 5、描述实时系统的基本特性 答:在特定时间内完成特定的任务,实时性与可靠性。 6、全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 答:全局变量储存在静态数据区,局部变量在堆栈中。 7、什么是平衡二叉树? 答:左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。 8、堆栈溢出一般是由什么原因导致的? 答:1.没有回收垃圾资源 2.层次太深的递归调用

C语言试题及答案

C语言试题及答案 Company number【1089WT-1898YT-1W8CB-9UUT-92108】

第1章C语言概述习题1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成

C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言 的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。

四川大学汇编语言程序设计20152016期末试题(附答案)

四川大学期末考试试题(闭卷) (2015——2016学年第 1 学期)A卷 课程号:课序号:课程名称:任课教师:成绩: 一、单项选择题(本大题共20小题,每小题1分,共20分)提示: 评阅教师得分 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在 下面的表格中。错选、多选或未选均无分。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1.以下寄存器中,哪一个不属于地址指针寄存器?( A ) (A)AX (B)BX (C)SI (D)DI 2.以下标志位中,哪一个不属于状态标志位?( C ) (A)CF (B)OF (C)IF (D)AF 3.以下寄存器中,哪一个用于指示堆栈的栈顶位置?( C ) (A)IP (B)SI (C)SP (D)BX 4.以下寄存器中,哪一个用于提供代码段的段基值?( C ) (A)SS (B)DS (C)CS (D)AX 5.以下指令中,不影响标志位的是哪一条?( D ) (A)INC (B)AND (C)SUB (D)XCHG 试卷编号:

二、多项选择题(本大题共5小题,每小题2分,共10分)提示:在 每小题列出的五个备选项中有二个至五个是符合题目要求的,请将其代码填写 在下表中。错选、多选、少选或未选均无分。 1 2 3 4 5 1.以下哪些指令会影响CF 标志位?( CD ) (A )INC (B )DEC (C )AND (D )SUB (E )JC 2.以下指令中,哪些会访问堆栈段?( ABDE ) (A )CALL (B )RET (C )JMP (D )PUSH (E )POPF 3.假设(AL )=92H ,CF=1,执行指令ADC AL,88H 后,以下结果哪些是正确的? ( ACE ) (A )(AL)=1BH (B )(AL)=1AH (C )CF=1 (D )OF=0 (E )ZF=0 4.假设(AL )=86H ,执行指令SAR AL,1后,以下结果哪些是正确的?( ACDE ) (A )(AL)=0C3H (B )(AL)=0CH (C )CF=0 (D )OF=0 (E )PF=0 5.以下指令中,哪些使用了存储器寻址方式?( BCD ) (A )ADD AL,02H (B )SUB BL,[0104H] (C )INC BYTE PTR [BX] (D )AND AL,[SI] (E )XOR BL,CL 三、判断改错题(本大题共5小题,每小题4分,共20分)提示:下 列各语句可能有语法错误,判断各语句正确与否,对于错误的语句,需解释其错误的原因,对于正确的语句,若做出正确判断则给4分,对于错误的语句,做出正确判断给2分,做出正确的解释再给2分。 1. NEG 145 X NEG 指令不能跟立即数 2. JZ BX X 条件转移指令JZ 不能寄存器寻址,只能跟标号 评阅教师 得分 评阅教师 得分

c语言试题及答案

《C语言》课程综合复习资料 一、单选题 1. 在C语言中,字符型数据在存中的存储形式是 A)原码 B)补码 C)反码 D)ASCII码 2. 在C语言中,十进制数47可等价地表示为 A) 2f B) 02f C) 57 D) 057 3. 设有定义:int x=12,n=5; 则表达式 x%=(n%2) 的值为 A) 0 B) 1 C) 2 D) 3 4. 设有定义语句:char str[][20]={,"Beijing","中国石油大学"},*p=str; 则printf("%d\n",strlen(p+20)); 输出结果是 A)10 B) 6 C) 0 D) 20 5. 已定义以下函数: fun(int *p) { return *p; } 该函数的返回值是 A)不确定的值 B)形参p所指存储单元中的值 C)形参p中存放的值 D)形参p的地址值 6. C语言中,函数返回值的类型是由 A)return语句中的表达式类型决定 B)调用函数的主调函数类型决定 C)调用函数时的临时类型决定 D)定义函数时所指定的函数类型决定 7. 有以下函数定义: void fun( int n , double x ) { …… } 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是 A) fun( int y , double m ); B) k=fun( 10 , 12.5 ); C) fun( 10 , 12.5 ); D) void fun( 10 , 12.5 ); 8. 以下选项中不能正确赋值的是 A) char b[]={′H′,′e′,′l′,′l′,′o′,′!′}; B) char b[10];b="Hello!";

汇编语言期末试题

一,单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内,每小题1分,共20分) 1.指令JMP FAR PTR DONE属于参考答案为:C A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址 [解析]略 2.下列叙述正确的是参考答案为:C A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令 B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令 C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL指令D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB指令[解析]对于无符号数和有符号数的比较都采用CMP指令; CMPS指令是串比较指令; 对两个有符号数的条件转移指令应是:JAE、JNB、JBE、JNA; 对两个无符号数的条件转移指令应是:JGE、JNL、JLE、JNG。 3.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是参考答案为:C A.12CSBH B.12B6BH C.12C59H D.12BFEH [解析]末字与首字相隔(128-1=)127个字,且每个字占用2个字节,因此末字单元的物理地址应为: 首字单元的物理地址+(128-1)×2 即12ABH×10H+00ABH+(128-1)×2=12C59H。 4.在下列指令的表示中,不正确的是参考答案为:C A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL [解析]当只有一个存储器操作数时,这个操作数的类型不明确,例如选项C中的[BX],没有明确的说明访问该存储单元的类型,此时存储器操作数就必须需用类型说明,如DEC BYTE PTR [BX] 或DEC WORD PTR [BX] 但是在题目的选项C中,没有指出存储器操作数类型,所以该指令是不正确的;而其它选项中的指令均是正确的。 5.在进行二重循环程序设计时,下列描述正确的是参考答案为:A A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外 D.内、外循环初值都应置内循环之外,外循环之内 [解析]循环参数置初值,应在进入循环以前给出。

c语言试题及答案

单选题 1 .在C语言中,下列类型属于构造类型的是(D ) A整型B .字符型C .实型D .数组类型 2.下列字符串不是标识符的是( D ) A.sum B. Average C. Day_night D. M.D.JOHN 3.在C语言中,回车换行符是(A ) A. n B. t C. v D. b 4.在C语言中,语句和数据定义是用(C )作为结束标记的A句号B .逗号C .分号D .括号 5. 设有如下定义: int x=10,y=5,z; 则语句printf( “%dn”,z= (x+=y,x/y)); 的输出结果是( C ) A.0 B.1 C.3 D.4 6. 10 .以下程序的输出结果是( B ) main( ) {char c1= '8',c2= '2'; printf( “%c,%c,%d,%d”n ,c1,c2,c1 -c2,c1+c2); }

精选文库 A.因输出格式不合法,输出出错信息 B.8,2,6,106 C . 8,2,6,10 D . 825,9 7.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 (A)mai n() {int x; seanf( “ %d,&x); if(x++>5) printf( “%dn ,x); else prints “%dn ,x --); A. 7 禾R 5 B . 7 禾R 4 C . 6 禾R 4 8.表达式(int)2.1416 的值时(A ) A. 2 B. 2.1 C. 0 D. 3 9.下列运算符优先级最高的是(B ) A. > B. + C. && D. != 10.C语言容许函数值类型缺省定义,此时该函数值隐含的类型时(B ) A. float 型 B. Int 型 C. Long 型 D. Double 型 11、C程序的基本构成单位是(C) A子程序B、过程C、函数D、文件 12、C语言中要求操作数都为整型数据的算术符是( C )

相关主题
文本预览
相关文档 最新文档