文档库 最新最全的文档下载
当前位置:文档库 › C程序的设计复习题集带答案.docx

C程序的设计复习题集带答案.docx

C程序的设计复习题集带答案.docx
C程序的设计复习题集带答案.docx

一、选择题

1.结构化程序设计的 3 种结构是 (D)

A)顺序结构、选择结构、转移结构

B)分支结构、等价结构、循环结构

C)多分支结构、赋值结构、等价结构

D)顺序结构、选择结构、循环结构

2.以下叙述中正确的是 (C)

A)C 语言比其他语言高级

B)C 语言可以不用编译就能被计算机识别执行

C)C 语言以接近英语国家的自然语言和数学语言作为语言的表达形式D)C 语言出现的最晚,具有其他语言的一切优点

3.C语言中用于结构化程序设计的 3 种基本结构是 (A)

A)顺序结构、选择结构、循环结构

B)if,switch,break

C)for,while,do-while

D)if,for,continue

4.C语言中最简单的数据类型包括(B)

A)整型、实型、逻辑型

B)整型、实型、字符型

C)整型、字符型、逻辑型

D)字符型、实型、逻辑型

5.若变量已正确定义并赋值,以下符合 C 语言语法的表达式是 (B) A)a:=b+1

B)a=b=c+2

C)int 18.5%3

D)a=a+7=c+b

6.下列可用于 C 语言用户标识符的一组是(B)

A)void, define, WORD

B)a3_b3, _123,Car

C)For, -abc, IF Case

D)2a, DO, sizeof

7. C语言中运算对象必须是整型的运算符是(A)

A)%=

B)/

C)=

D)<=

8.若变量 a,i已正确定义,且i已正确赋值,合法的语句是(B)

A)a= =1

B)++i ;

C)a=a++=5;

D)a=int (i );

9.已知

int t=0;

while(t=1)

{...}

则以下叙述正确的是 (B)

A)循环控制表达式的值为0

B)循环控制表达式的值为1

C)循环控制表达式不合法

D)以上说法都不对

10.若变量已正确说明为float型,要通过语句

scanf("%f%f%f",&a,&b,&c);

给 a 赋予 10.0 , b 赋予 22.0 , c 赋予 33.0 ,下列不正确的输入形式是 (B) A)10<回车 >22<回车 >33<回车 >

B)10.0,22.0,33.0<回车>

C)10.0< 回车 >22.0< 空格 >33.0< 回车 >

D)10<<空格 >>22<回车 >33<回车 >

11.有如下程序:

main()

{

int x=1,a=0,b=0;

switch (x)

{

case 0: b++;

case 1: a++;

case 2: a++;b++;

}

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

}

该程序的输出结果是 (A)

A)a=2,b=1

B)a=1,b=1

C)a=1,b=0

D)a=2,b=2

12.有以下程序

main()

{

int i=1,j=1,k=2;

if((j++||k++)&&i++)

printf("%d,%d,%d\n",i,j,k);

}

执行后输出结果是 (C)

A)1,1,2

B)2,2,1

C)2,2,2

D)2,2,3

13.

有如下程序

main()

{

float x=2.0,y;

if (x<0.0 ) y=0.0;

else if(x<10.0)y=1.0/x;

else y=1.0;

printf("%f\n",y);

}

该程序的输出结果是 (C)

A)0.000000

B)0.250000

C)0.500000

D)1.000000

14.有如下程序:

main()

{

int n=9;

while(n>6)

{

n--;

printf("%d",n);

}

}

该程序的输出结果是 (B)

A)987

B)876

C)8765

D)9876

15.在下列选项中,没有构成死循环的是(D)

A)int i=100;

while(1)

{

i=i 0+1;

if(i>100)break;

}

B)for(;;);

C)int k=10000;

do{

k++;

}while(k>10000);

D)int s=36 ;

while(s)--s;

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

A)0

B)1

C)2

D)-1

17.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(D) A)函数调用可以作为独立的语句存在

B)函数调用可以作为一个函数的实参

C)函数调用可以出现在表达式中

D)函数调用可以作为一个函数的形参

18.有以下程序

float fun(int x,int y)

{

return(x+y);

}

main()

{

int a=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));

}

程序运行后的输出结果是(B)

A)编译出错

B)9

C)21

D)9.0

19.若有以下调用语句,则不正确的fun 函数的首部是 (D)

main()

{

int a[50],n;

?

fun(n,&a[9]);

?

}

A)void fun(int m,int x[])

B)void fun(int s,int h[41])

C)void fun(int p,int *s)

D)void fun(int n,int a)

20.fseek 函数的正确用形式是 (B)

A)fseek( 文件指 , 起始点 , 位移量 )

B)fseek( 文件指 , 位移量 , 起始点 )

C)fseek( 位移量 , 起始点 , 文件指 )

D)fseek( 起始点 , 位移量 , 文件指 )

21.若 fp 是指向某文件的指,且已到文件末尾,函数feof(fp)的返回是 (C)

A)EOF

B)-1

C)1

D)NULL

22.若有明句: char c='\72';量c (A)

A)包含 1 个字符

B)包含 2 个字符

C)包含 3 个字符

D)明不合法, c 的不确定

23.若有明 int a[3][4]; a 数元素的非法引用是 (D)

A)a[0][2*1]

B)a[1][3]

C)a[4-2][0]

D)a[0][4]

24.有以下明句

struct stu

{

int a;

float b;

}stutype;

下面的叙述不正确的是(C)

A)struct是构体型的关字

B)struct stu是用户定义的结构体类型

C)stutype是用户定义的结构体类型名

D)a 和 b 都是结构体成员名

25.在 C 语言中,引用数组元素时,其数组下标的数据类型允许是(C) A)整型常量

B)整型表达式

C)整型常量或整型表达式

D)任何类型的表达式

26.若运行时给变量x 输入 12,则以下程序的运行结果是(A)

main()

{

int x,y;

scanf("%d",&x);

y=x>12?x+10:x-12;

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

}

A)0

B)22

C)12

D)10

27.以下说法正确的是 (C)

A)C 语言程序总是从第一个的函数开始执行

B) 在 C 语言程序中,要调用函数必须在 main() 函数中定义

C)C 语言程序总是从 main() 函数开始执行

D)C 语言程序中的 main() 函数必须放在程序的开始部分

28.表达式 0x13^0x17 的值是 (A)

A)0x04

B)0x13

C)0xE8

D)0x17

29.有以下程序

main()

{

int a=3, b=4;

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

}

程序运行后的输出结果是(A)

A)12

B)15

C)16

D)20

30.下列程序执行后的输出结果是(A)

void func(int *a,int b[])

{

b[0]=*a+6;

}

main()

{

int a,b[5];

a=0; b[0]=3;

func(&a,b);

printf("%d\n",b[0]);

}

A)6

B)7

C)8

D)9

31.若有下面的程序段:

char s[]="china";char *p; p=s;

则下列叙述正确的是 (D)

A)s 和 p 完全相同

B)数组 s 中的内容和指针变量p 中的内容相等

C)s 数组长度和 p 所指向的字符串长度相等

D)*p 与 s[0] 相等

32.以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序void sort(int a[],int n)

{

int i,j,t;

for(i=0;i

for(j=i+1;j

if(a[i]

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

main()

{

int aa[10]={1,2,3,4,5,6,7,8,9,10},i;

sort(&aa[3],5);

for(i=0;i<10;i++)printf("%d,",aa[i]);

printf("\n");

}

程序运行后的输出结果是(C)

A)1,2,3,4,5,6,7,8,9,10,

B)10,9,8,7,6,5,4,3,2,1,

C)1,2,3,8,7,6,5,4,9,10,

D)1,2,10,9,8,7,6,5,4,3,

33.以下程序的运行结果是(A)

struct date

{int year,month,day;}today;

main()

{

printf("%d \n",sizeof(struct date));

}

A)6

B)8

C)10

D)12

34.若有语句 int *point,a=4;和point=&a;下面均代表地址的一组选项是(D) A)a,point,*&a

B)&*a,&a,*point

C)*&point,*point,&a

D)&a,&*point,point

35.在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是 (B)

A)地址传递

B)单向值传递

C)由实参传形参,再由形参传实参

D)传递方式由用户指定

36.fun(char *p2, char *p1)

{

while((*p2=*p1)!='\0'){p1++;p2++;}

}

函数的功能是 (A)

A)将 p1 所指字符串复制到 p2 所指内存空间

B)将 p1 所指字符串的地址赋给指针 p2

C)对 p1 和 p2 两个指针所指字符串进行比较

D)检查 p1 和 p2 两个指针所指字符串中是否有'\0'

37.若执行下述程序时,若从键盘输入 6 和 8 时,结果为 (B)

main()

{

int a,b,s;

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

s=a

if(a

s=b;

s*=s;

printf("%d",s);

}

A)36

B)64

C)48

D)以上都不对

38.fscanf函数的正确调用形式是(D)

A)fscanf(fp, 格式字符串 , 输出表列 );

B)fscanf(格式字符串,输出表列,fp);

C)fscanf(格式字符串,文件指针,输出表列);

D)fscanf(文件指针,格式字符串,输入表列);

39.下列关于 C 语言数据文件的叙述中正确的是(D)

A)文件由 ASCII 码字符序列组成, C语言只能读写文本文件

B)文件由二进制数据序列组成,C语言只能读写二进制文件

C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

40.有以下程序

void ss(char *s,char t)

{

while(*s)

{

if(*s==t)

*s=t-'a'+'A';

s++;

}

}

main()

{

char str1[100]="abcddfefdbd",c='d';

ss(str1,c); printf("%s\n",str1);

}

程序运行后的输出结果是(B)

A)ABCDDEFEDBD

B)abcDDfefDbD

C)abcAAfefAbA

D)Abcddfefdbd

41.struct link

{

int data;

struct link *next;

}a,b,c,*p,*q;

且变量 a 和 b 之间已有如下图所示的链表结构 : 指针 p 指向变量 a,q 指向变量 c。则能够把 c 插入到 a 和 b 之间并形成新的链表的语句组是 :(D)

A)a.next=c; c.next=b;

B)p.next=q; q.next=p.next;

C)p->next=&c; q->next=p->next;

D)(*p).next=q; (*q).next=&b;

42.在设计程序时,应采纳的原则之一是(D)

A)不限制 goto 语句的使用

B)减少或取消注解行

C)程序越短越好

D)程序结构应有助于读者理解

43.程序设计语言的基本成分是数据成分、运算成分、控制成分和(D)

A)对象成分

B)变量成分

C)语句成分

D)传输成分

44.下列不属于软件工程的 3 个要素的是 (D)

A)工具

B)过程

C)方法

D)环境

45.下列叙述中正确的是 (D)

A)C语言编译时不检查语法

B)C语言的子程序有过程和函数两种

C)C语言的函数可以嵌套定义

D)C语言的函数可以嵌套调用

46.在 C 语言中,退格符是 (D)

A)\ n

B)\ t

C)\ f

D)\ b

48.以下叙述中正确的是(A)

A)构成 C 程序的基本单位是函数

B)可以在一个函数中定义另一个函数

C)main()函数必须放在其他函数之前

D)所有被调用的函数一定要在调用之前进行定义

49.在 C 程序中,判逻辑值时,用" 非 0" 表示逻辑值 " 真" ,又用 "0" 表示逻辑值"假" 。在求逻辑值时,用( A)分别表示逻辑表达式值为 " 真" 和" 假" 。A)

1 0

B)0 1

C)非0非0

D)1 1

50.在 C 语言中,运算对象必须是整型数的运算符是(A)

A)%

B)\

C)%和\

D)**

51.字符型数据在机器中是用ASCII 码表示的,字符 "5" 和 "7" 在机器中表示为 (C) A)10100011 和 01110111

B)01000101 和 01100011

C)00110101 和 00110111

D)01100101 和 01100111

52.若已定义: int a=25,b=14,c=19; 以下三目运算符 (?:) 所构成语句的执行后

a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,

b=%d,c=%d\n",a,b,c); 程序输出的结果是 (C)

A)***a=25,b=13,c=19

B)***a=26,b=14,c=19

C)### a=25,b=13,c=19

D)### a=26,b=14,c=19

53.若有定义: 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

54.下列程序段的输出结果是:(C)

int a=1234;

float b=123.456;

double c=12345.54321;

printf("-,%2.1f,%2.1f",a,b,c);

A)无输出

B)12,123.5,12345.5

C)1234,123.5,12345.5

D)1234,123.4,1234.5

55.若运行以下程序时,从键盘输入 ADescriptor (表示回车),则下面程序的运行结果是 (D)

#include

main()

{

char c;

int v0=1,v1=0,v2=0;

do{

switch (c=getchar ())

{

case 'a':

case 'A':

case 'e':

case 'E':

case 'i':

case 'I':

case 'o':

case 'O':

case 'u':

case 'U':v1+=1;

default:v0+=1;v2+=1;

}

}while (c!='\n');

printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);

}

A)v0=7,v1=4,v2=7

B)v0=8,v1=4,v2=8

C)v0=11,v1=4,v2=11

D)v0=13,v1=4,v2=12

56.设有以下程序段

int x=0,s=0;

while (!x!=0 )

s+=++x;

printf("%d",s);

则 (B)

A)运行程序段后输出0

B)运行程序段后输出1

C)程序段中的控制表达式是非法的

D)程序段执行无限次

57.执行下面的程序段后,变量k 中的值为 (A) int k=3, s[2];

s[0]=k; k=s[1]*10;

A)不定值

B)33

C)30

D)10

58.以下程序段的描述,正确的是(C)

x=-1;

do

{x=x*x;}

while (!x ) ;

A)是死循环

B)循环执行两次

C)循环执行一次

D)有语法错误

59.以下有错误的是 (D)

A)

main()

{

int x,y,z;

x=0;y=x-1;

z=x+y;

}

B)

main()

{

int x,y,z;

x=0,y=x+1;

z=x+y;

}

C)

main()

{

int x;int

int y;

x=0,y=x+1;

z=x+y;

}

D)

main()

{

int x,y,z;

x=0;y=x+1;

z=x+y,

}

60.有如下程序段

int a=14,b=15,x;

char c='A';

x=(a&&b)&&(c<'B');

执行该程序段后, x 的值为 (D)

A)ture

B)false

C)0

D)1

61.下列程序执行后的输出结果是(C) void func1(int i);

void func2(int i);

char st[]="hello,friend!";

main()

{

int i=0;

func1(i);

printf("\n");

}

void func1(int i)

{

printf("%c",st[i]);

if(i<3)

{

i+=2;

func2(i);

}

}

void func2(int i)

{

printf("%c",st[i]);

if(i<3)

{

i+=2;

func1(i);

}

}

A)hello

B)hel

C)hlo

D)hlm

62.以下函数返回数组 a 中最大值所在的下标值fun(int *a,int n)

{

int i,j=0,p;

p=j;

for (i=j;i

if ( a[ i ]>a[p])

;

return (p) ;

}

在下划线处应填入的内容是(D)

A)i=p

B)a[p]=a[i ]

C)p=j

D)p=i

63.下面说明不正确的是 (D)

A)char a[10]="china";

B)char a[10],*p=a;p="china"

C)char *a;a="china";

D)char a[10],*p;p=a="china"

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

#include

void prt(int *x,int *y,int *z)

{

printf("%d,%d,%d \n",++*x,++*y,*(z++)); }

main()

{

int a=10,b=40,c=20;

prt(&a,&b,&c);

prt(&a,&b,&c);

}

A)11,42,31

12,22,41

B)11,41,20

12,42,20

C)11,21,40

11,21,21

D)11,41,21

12,42,22

65.若有函数内部说明: int a[3][4];则数组a中各元素(C) A)可在程序的运行阶段得到初值0

B)可在程序的编译阶段得到初值0

C)不能得到确定的初值

D)可在程序的编译或运行阶段得到初值0

66.有如下程序

main()

{

char s[]="ABCD",*p;

for(p=s+1;p

printf("%s\n",p);

}

该程序的输出结果是 (D)

A) ABCD

BCD

CD

D

B) A

B

C

D

C) B

C

D

D) BCD

CD

D

67.下列程序执行后的输出结果是(B)

main()

{

int a[3][3],*p,i;

p=&a[0]]0];

for(i=1; i<9; i++)p[i]=i+1;

printf("%d\n",a[1][2]);

}

A)3

B)6

C)9

D)随机数

68.定义如下变量和数组:

int k;

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

则下面语句的输出结果是(B)

for ( k=0;k<3;k++ )printf("%d",a[k][k]) ;

A)753

B)951

C)963

D)741

(A)

69.下列程序执行后的输出结果

是main()

{

char arr[2][4];

( arr[1],"me");

strcpy (arr,"you"); strcpy

arr [0][3]=′&′;

printf("%s\n",arr);

}

A)you&me

B)you

C)me

D)err

70.有以下函数

char fun (char *p ) {return p;}

该函数的返回值是 (B)

A)无确切的值

B)形参 p 中存放的地址值

C)一个临时存储单元的地址

D)形参 p 自身的地址值

71.以下正确的说法是 (C)

A)定义函数时,形参的类型说明可以放在函数体

内B)return 后边的值不能为表达式

C)如果函数值的类型与返回值类型不一致,以函数值类型为准D)如果形参与实参类型不一致,以实参类型为准

72.有以下程序

int f(int n)

{

if (n==1)return 1;

else return f(n-1)+1;

}

main()

{

int i,j=0;

for (i=1;i<3;i++ printf("%d\n",j )j+=f

);

(i);

}

程序运行后的输出结果是(B)

A)4

B)3

C)2

D)1

73.设有如下定义:

struct sk

{

int a;

float b;

}data;

int *p;

若要使 P 指向 data 中的 a 域,正确的赋值语句是(C) A)p=&a;

B)p=data.a;

C)p=&data.a;

D)*p=data.a;

74.以下对结构体类型变量的定义中,不正确的是(C) A)

typedef struct aa

{

int n;

float m;

}AA;

AA tdl;

B)

#define AA struct aa

AA{

int n;

float m;

}tdl;

C)

struct

{

int n;

float m;

} aa;

struct aa tdl;

D)struct

{

int n;

float m;

}tdl;

75.若说明 int *p,n;则通过语句scanf能够正确读入数据的程序段是(D) A)p=&n;scanf ("%d",&p );

B)p=&n;scanf ("%d",*p );

C)scanf ("%d",n );

D)p=&n;scanf ("%d",p );

76.在下述程序中,判断i>j共执行的次数是(D)

main()

{

int i=0, j=10, k=2, s=0;

for(;;)

{

i+=k;

if ( i>j )

{

printf("%d",s);

break;

}

s+=i;

}

}

A)4

B)7

C)5

D)6

77.以下 4 个选项中,不能看做一条语句的是(D)

A);

B)a=5,b=2.5,c=3.6;

C)if (a<5);

D)if (b!=5 )x=2;y=6;

78.在 C 语言中,变量的隐含存储类别是(A)

A)auto

B)static

C)extern

D)无存储类别

79.若有以下程序

#include

void f(int n);

main()

{

void f(int n);

f(5);

}

void f(int n)

{

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

}

则以下叙述中不正确的是(C)

A)若只在主函数中对函数 f 进行说明,则只能在主函数中正确调用函数 f

B)若在主函数前对函数 f 进行说明,则在主函数和其后的其他函数中都可以正确调用函数 f

C)对于以上程序,编译时系统会提示出错信息:提示对 f 函数重复说明D)

函数 f 无返回值,所以可用 void 将其类型定义为无返回值型

80.若有下面的说明和定义

struct test

{

int ml;

char m2;

float m3;

union uu

相关文档