程序设计基础(C)期末复习题

更新时间:2023-10-02 10:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

对外经济贸易大学远程教育学院 2009—2010学年度第一学期 程序设计基础(C)期末复习题

一、单项选择题

1.程序设计一般包含以下四个步骤,其中首先应该完成的是(B)

A. 设计数据结构和算法 C. 编写程序

2.下面描述中不正确的是(D)

A. 程序就是软件,但软件不仅仅是程序

B. 程序是指令的集会,计算机语言是编写程序的工具 C. 计算机语言都是形式化语言,它有严格的语法规则和定义 D. 计算机语言只能编写程序而不能表示算法 3.以下说法中正确的是(C )

A. C语言程序总是从第一个函数开始执行 B. 在C语言程序中, main()函数可有可无 C. C语言程序总是从main()函数开始执行

D. C语言程序中的main()函数必须放在程序的开始部分 4.C语言程序的基本单位是 (B)

A. 语句

B. 函数

C. 程序行

D. 字符

B. 建立数学模型 D. 调试运行程序

5.C语言程序由什么组成(C)

A. 子程序

B. 过程

C. 函数

D. 主程序段程序

6.以下不是C语言特点的是 (B)

A、语言的表达能力强 C、数据结构系统化

B、语法定义严格 D、控制流程结构化

7.C语言并不是非常严格的算法语言,在以下关于C语言的不严格的叙述中,错误的说法

是 (A)

A、任何不同数据类型都不可以通用

B、有些不同类型的变量可以在一个表达式中运算

C、在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D、同一个运算符号在不同的场合可以有不同的含义

8.下面描述中,不正确的是 (B)

A、C程序的函数体由一系列语句和注释组成 B、注释内容不能单独写在一行上

C、C程序的函数说明部分包括对函数名、函数类型、形式参数等的定义和说明 D、scanf和printf是标准库函数而不是输入或输出语句 9.下面描述中,正确的是 (C)

A、主函数中的花括号必须有,而子函数中的花括号是可有可无的 B、一个C程序行只能写一个语句

C、主函数main是C程序启动时唯一的入口 D、函数体包含了函数说明部分

10.C语言中字符(char)数据在内存中存储的是 (D)

A、原码

B、补码

C、反码

D、ASCⅡ码

11.下列可以正确表示字符型常数的是 (B)

A、”a”

B、’\\’’

C、”\\n”

D、297

12.以下错误的转义字符是 (C)

A、’\\\\’ A、int

B、’\\’’ C、’\\81’ B、char

C、float

D、’\\0’ D、double

13.已知:char a;int b;float c;double d;执行语句c=a+b+c+d;后,变量c的数据类型是 (C) 14.已知;int i, a ;执行语句“i=(a=2*3,a*5),a+6;”后,变量i的值是 (C)

A、6

B、12

C、30

D、36

15.已知int i=5;执行语句i+=++i; i的值是 (C)

A、10

B、11

C、12

D、以上答案都不对

16.已知:int x=1,y=2,z; 则执行:z=x>y? ++x:++y; 则z的值为 (C)

A、1

B、2

C、3

D、4

17.已知:float a=4,b=5,c; 则执行表达式“c=a=a>b”后变量a的值为 (A)

A、0

B、1

C、4

D、5

18.执行下面语句后x的值为 (D)

int a=14,b=15,x; char c=’A’;

x=((a&&b) && (c<’a’)); A、TRUE

B、FALSE

C、0

D、1

19.下列四个选项中,均是C语言关键字的选项是 (B)

A. auto enum include C. signed union scanf

B. switch typedef continue D. if struct type

20.C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符 (C)

A. 必须为字母

B. 必须为下划线

C. 必须为字母或下划线 D. 可以是字母,数字和下划线中任一字符

21.若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是 (A)

A. 2.500000

B. 2.750000

C. 3.500000

D. 0.000000

22.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为(C)

A. int

B. float

C. double

D. 不确定

23.表达式(a=3*5,a*5),a+5的值是多少(A)

A. 20

B. 80

C. 不能确定

D. 15

24.语句:printf(\;的输出结果是(B)

A. 12

B. 1

C. 24

D. 0

25.C语言的语句中用作判断的表达式一般为(D)

A. 关系表达式 C. 算术表达式

B. 逻辑表达式

D. 逻辑表达式和关系表达式

26.若已定义x和y为double型,则表达式:x=1,y=x+3/2的值是(C)

A. 1

27.若有以下定义:

char a; int b; float c;double d;

则表达式a*b+d-c值的类型为(D) A. float

B. int

C. char

D. double

B. 2

C. 2.0

D. 2.5

28.若x和y都是int型变量,x=100,y=200,且有下面的程序片段:

printf(\

上面程序片段的输出结果是 (A) A. 200 C. 200 100

B. 100

D. 输出格式符不够,输出不确定的值

29.表达式:10!=9的值是(D)

A. true

B. 非零值

C. 0

D. 1

30.以下关于运算符优先顺序的描述中正确的是 (C)

A. 关系运算符 < 算术运算符 < 赋值运算符 < 逻辑运算符 B. 逻辑运算符 < 关系运算符 < 算术运算符 < 赋值运算符 C. 赋值运算符 < 逻辑运算符 < 关系运算符 < 算术运算符 D. 算术运算符 < 关系运算符 < 赋值运算符 < 逻辑运算符 31、putchar函数可以向屏幕输出一个 (D)

A、整形变量值

B、实型变量值 C、字符串

D、字符或字符变量值

32、执行以下程序段后,c3的值是 (A)

int c1=1,c2=2,c3;

c3=c1/c2; A、0

B、1/2

C、0.5

D、1

33、若int a,b,c;则为它们输入数据的正确输入语句是 (D)

A、read (a,b,c);

C、scanf (“%D%D%D”,&a,&b,&c);

B、scanf (“%d%d%d”,a,b,c); D、scanf (“%d%d%d’,&a,&b,&c);

34、若有以下程序段,其输出结果是 (B)

int a=0,b=0,c=0; c=(a-=a-5),(a=b,b+3);

printf (“%d,%d,%d\\n”,a,b,c); A、3,0,-10

B、0,0,5

C、-10,3,-10 D、3,0,3

35、若a为int 类型,且a=125,执行下列语句后的输出是 (B)

printf (“%d,%o,%x\\n”,a,a+1,a+2) A、125,175,7D C、125,176,7D

B、125,176,7F D、125,175,2F

36.表达式(int)2.1416的值是(A)

A. 2

B. 2.1

C. 0

D. 3

37.若有条件表达式 (exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是(B)

A. (exp==0)

B. (exp!=0)

C. (exp==1)

D. (exp!=1)

38.设 int x=1, y=1; 表达式(!x||y--)的值是 (B)

A. 0

B. 1

C. 2

D. -1

39.在C 语言中,错误的int类型的常数是(A)

A.32768

B.0

C.037

D.0xAF

40.下列正确表示字符型常数的是(B)

A.‘101’

B.‘\\101’

C.“\\n”

D.297

41.有定义char ch; 判断ch的值是否为小写字母的表达式为(D)

A.‘a’<= ch =‘z’ C.(ch>=‘a’)AND (ch<=‘z’) 42.以下程序的输出结果是(C)

main()

{int a=12,b=12;

printf(\,--a,++b); } A. 10 10

B. 12 12

C. 11 13

D. 11 10

B.(ch >=‘a’)&(ch <=‘z’) D.ch>=97 && ch<=122

43.能正确表示逻辑关系:\或a ≤ 0\的C语言表达式是(D)

A. a > =10 or a < =0 C. a > =10 &&a < =0

B. a > =0||a < =10 D. a < =0 || a>=10

44.下列程序的输出结果是(C)

main()

{ double d=3.2; int x,y;

x=1.2; y=(x+3.8)/5.0; printf(\ } A. 3

B. 3.2

C. 0

D. 3.07

45、已知:int a,*p=&a;则下列函数调用中错误的是________。

A、scanf(“%d”,&a); C、printf(“%d”,a);

B、scanf(“%d”,p); D、printf(“%d”,p);

46、C语言中决定函数返回值类型的是_______。

A、return语句中的表达式类型 B、调用该函数的主调函数类型 C、调用函数时临时指定的类型 D、定义函数时所指定的函数类型

47、在下列结论中,只有一个是错误的,它是________。

A、C语言允许函数的递归调用

B、C语言中的continue语句,可以通过改变程序的结构而省略 C、有些递归程序是不能用非递归算法实现的 D、C语言中不允许在函数中再定义函数

48、在C语言的函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函

数funA,则________。 A、称为函数的直接递归 C、称为函数的递归定义

B、称为函数的间接递归

D、C语言中不允许这样的递归形式

49、已知:int*p,a;则语句“p=&a;”中的运算符“&“的含义是_______。

A、位与运算

B、逻辑与运算

C、取指针内容

D、取变量地址

50.以下程序的输出结果是 (C)

main()

{ int a= -1,b=1;

if((++a < 0)&& ! (b-- < =0)) printf(\,a,b); else printf(\,b,a); } A. -1 1

B. 0 1

C. 1 0

D. 0 0

51.若执行下面的程序从键盘输入3和4,则输出是(B)

main() { int a,b,s;

scanf(\ s=a; if (a < b) s=b; s=s*s;

printf(\ } A. 14

52.下面的程序是(D)

main()

{ int x=3,y=0,z=0;

if (x==y+z) printf(\ else printf(\ }

A. 有语法错误不能过通过编译

B. 输出****

B. 16

C. 18

D. 20

C. 可能通过编译,但是不能通过连接,因而不能运行 D. 输出####

53.以下程序输出结果是(B)

main ( ) { int m=5;

if (m++ > 5) printf (\ else printf (\ } A. 7

B. 6

C. 5

D. 4

54.执行下面语句后的输出为( D)

int i= -1;

if (i < =0)printf(\ else printf(\ A. **** C. %%%%C

B. %%%%

D. 有语法错,不能执行

55.执行下列程序段后,x、y和z的值分别是 (B) int x=10,y=20,z=30; if(x>y) z=x;x=y;y=z; A、10,20,30 C、20,30,10

B、20,30,30 D、20,30,20

56.以下程序的输出结果是 (D)

main()

{int w=4,x=3,y=2,z=1;

if(x>y&&(z= =w))printf (“%d\\n”,(wx? w:z>y? z:x)); } A、1

B、2

C、3

D、4

57.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是(A)

A.if((a>b)&&(b>c)) k=1; else k=0; B.if((a>b)||(b>c)) k=1; else k=0; C.if(a<=b) k=0; else if(b<=c) k=1; D.if(a>b) k=1; else if(b>c) k=1; else k=0;

58、若有:do {i=a-b++;printf(“%d”,i);}while (!i); 则while中的 !i 可用 (A) 代替。

A、i==0

B、i!=1

C、i!=0

D、以上均不对

59.以下能对二维数组a进行正确初始化的语句是 (B)

A. int a[2][]={{1,0,1}{5,2,3}}; C. int a[2][4]={{1,2,3},{4,5},{6}}; 60.以下程序的输出是(B)

main()

{ int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0:a++;break; case 1:b++;break; }

case 2: a++;b++;break; case 3: a++;b++;

}

printf(“\\na=%d,b=%d”,a,b); }

A.a=1,b=0 61.阅读以下程序:

main() { int x; scanf(\ if(x--<5) printf(\ else printf(\ }

B.a=2,b=1

C.a=1,b=1

D.a=2,b=2

B. int a[][3]={{1,2,3},{4,5,6}}; D. int a[][3]={{1,0,1},{},{1,1}};

程序运行后,如果从键盘上输人5,则输出结果是(B) A. 3

B. 4

C. 5

D. 6

62、执行语句for (i=1;i++<4;);后,i的值是______。 (C)

A、3 B、4 C、5 D、不定

63、若int x;则执行下列程序段后输出是______。 (B)

for(x=10;x>3;x--)

{if (x%3) x--;--x;--x; printf (“%d”,x); }

A、63

B、74

C、62

64、下列说法中正确的是______。 A、break用在switch语句中,而continue用在循环语句中。B、break用在循环语句中,而continue用在switch语句中。C、break能结束循环,而continue只能结束本次循环。 D、continue能结束循环,而break只能结束本次循环。 65、下列程序执行的结果是 (B)

int a=1, b=2, c=3, t;

while (b

B、2,1,0

C、1,2,1

66.以下程序的输出结果是 (A)

main( ) { int n=4;

while(n--)printf(\,--n); } A. 2 0

B. 3 1

C. 3 2 1

67.假定a和b为int型变量,则执行以下语句后b的值为 (D)a=1; b=10; do

{ b=b-a; a++; } while (b-- > 0); A. -3

B. -2

C. -1

68.下面程序的输出是(D)

main()

{ int x=3,y=6,a=0; while (x++!=(y-=1)) { a+=1;

D、73

(C)

D、2,1,1

D. 2 1 0

D. -4

if (y < x) break; }

printf(\ }

A. x=4,y=4,a=1

B. x=5,y=5,a=1

C. x=5,y=4,a=3

D. x=5,y=4,a=1

69.以下程序段的输出结果是(C)

int x=3; do

{ printf(\ while (!(--x)); A. 1

B. 3 0

C. 1 -2

D. 死循环

70.已知:int a ,x;则正确的赋值语句是__C___。

A、a=(a[1]+a[2])/2; C、a=(x=1,x++,x+2);

B、a*=*a+1; D、a=”good”;

71、已知:char s[10],*p=s,则在下列语句中,错误的语句是__B____。

A、p=s+5;

B、s=p+s;

C、s[2]=p[4];

D、*p=s[0];

72、已知:char b[5],*p=b;则正确的赋值语句是__C__。

A、b=”abcd”;

B、*b=”abcd”; C、p=”abcd”;

D、*p=”abcd”;

73、下列对字符串的定义中,错误的是___A___。

A、char str[7]=”FORTRAN” B、char str[ ]=”FORTRAN” C、char*str=”FORTRAN”

D、char str[]={?F?,?O?,?R?,?T?,?R?,?A?,?N?,0} 74、已知:char **s; 正确的语句是__B___。

A、s=”computer”; C、**s=”computer”;

B、*s=”computer”; D、*s=?A?;

75、已知:int a,*p=&a;则为了得到变量a的值,下列正确的表达式为__B___。

A、*&p

B、*p

C、p[0]

D、*&a

76、已知:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int (*ptr) [3]=a,*p=a[0];则以下能够正确表示

数组元素a[1][2]的表达式是__D___。 A、*((ptr+1)[2]) 77、已知:struct {int i;

char c;

float a;} Test; 则sizeof(test)的值是___D___。

A、4

B、5

C、6

D、7

B、*(*(p+5).)

C、(*ptr+1)+2

D、*(*(a+1)+2)

78、选择出错误的函数定义。(D)

A、struct tree funa(s) struct tree s[ ]; {…

} C、struct tree*func(s) Char **s; {… }

B、int *funb(s) char s[ ]; {… } D 、int *fund(s) char *s[10][ ]; {…

}

79、以下对C语言中联合类型数据的正确叙述是___C__。

A、一旦定义了一个联合变量之后,即可引用该变量或该变量中的任意成员 B、一个联合变量中可以同时存放其所有成员 C、一个联合变量中不能同时存放其所有成员

D、联合类型数据可以出现在结构体类型定义中,但结构体类型数据不能出现在联合类

型定义中

80、已知:struct sk

{ int a; float b; }data,*p;

若有p=&data,则对data 中的成员a的正确引用是___B___。 A、(*p).data.a

B、(*p).a

C、p->data.a

D、 p.data.a

81、在以下对C语言的描述中,正确的是_A__。

A、在C语言中调用函数时,只能将实参的值传递给形参,形参的值不能传递给实参 B、C语言函数既可以嵌套定义又可以递归调用 C、函数必须有返回值,否则不能使用函数

D、C语言程序中有调用关系的所有函数都必须放在同一源程序文件中 82、说明语句”int (*p)();”的含义是_______。

A、p是一个指向一维数组的指针变量 B、p是指针变量,指向一个整型数据

C、p是一个指向函数的指针,该函数的返回值是一个整型

D、p是一个指针函数,该函数的返回值是一个指向整型数据的指针 83、在对typedef的叙述中错误的是__B____。

A、用typedef可以定义各种类型名,但不能用来定义变量 B、用typedef可以增加新类型

C、用typedef只是将已存在的类型用一个新的标志符来代表 D、使用typedef有利于程序的通用和移植

84、在进行文件操作时,写文件的一般含义是__A___。

本文来源:https://www.bwwdw.com/article/zw5d.html

Top