2024年2月19日发(作者:)

C 语 言 程 序 设 计

C程序设计—试题2

一、单项选择题

1. C语言程序的全部功能由( c )来完成。

A、 程序 B、 主程序 C、 函数 D、 过程

2. C的源程序要变成目标程序要经过步骤( c )。

A、 编辑 B、 连接 C、 编译 D、 汇编

3. 在下面表达式中选出值为0的表达式( d )。

A、 10=9+1 B、 7/5 C、 8 0 D、!(3*5)

4. 下面程序段执行后k的值是( a )。

int k=8;

switch (k)

{ case 6: k++;

case 7: k++; break;

case 8: k++;

default : k++; }

A、 10 B、 9 C、 11 D、 12

5. 为求S=10!的值,S为定义的类型为( C)。

A、 int B、 unsigned int C、 long int D、以上三种类型皆可

6.下面语句中,与if(x!=1) k++; 作用相同的语句是( b )。

A、 if (x<>0) k++ B、 if (x) k++ C、 if (x=1) k++ D、 if (1) k++

7. 设有char a ,b ; 下面函数调用中正确的是( D )。

A、 scanf (“%c%c”,a,b) B、 getchar(a) C、 putchar(a,b) D、putchar(a)

8. 下面程序的运行结果是(b )。

int x=10 , y=20 ;

main ( )

{ func ( );

printf (“%d,%dn”,x,y);

}

func ( )

{ int z;

z=x; x=y; y=z;

x=2*x ; y=2+y ; }

A、 10;20 B、 40,12 C、 20,10 D、 20,22

9.下面数组定义中,正确的是( a )。

A、 int a[4] [3]; B、 int a[4,3]; C、 int a [ ] [ ]; D、 int a [ ] [3]

10.C语言中判断逻辑值‘假’用( c)。

8

C 语 言 程 序 设 计

A、 false B、 1 C、 0 D、 非0值

11.设定义static char c[5]=”zbcd”; char *p=c;则下面正确的函数调用的语句是(d )。

A、 printf (“%c”,*c[0]); B、 printf (“%s,*c); C、 ptintf (“%s”,*p); D、 printf (“%c”,*p);

12.下面合法的C常量是( a )。

A、-0.1e-1 B、 0197 C、 5e3.5 D、 „program‟

13.设 struct student

{ int num ;

float score;

} stu ;

要给结构变量中的成员num赋值,正确的语句是 (D )。

A、 stu={1001,85.5}; B、 =1001 C、 stu num=1001; D、 =1001;

14.下列说法中正确的是( a)。

A. 在switch 语句中可以根据需要决定是否使用break 语句。

B. 在switch 语句中必须使用break 语句。

C. 在switch 语句中不能使用break 语句。

D. 以上说法都正确。

15.设有定义为static int a[3][3]={ {10,5,3},1,2,3,4,5,6};则a[1][1]和a[2][1]的值是 ( A)

A、 2和5 B、5和2 C、 10和1 D、1和4

16.以下运算符中,哪一种具有右结合性 (C )

A、 加法运算符 B、 求余运算符 C、 赋值运算符 D、 逗号运算符

17.凡未指明类型的函数,其蕴含的类型是(B)。

A、 void型 B、 int型 C、 float型 D、 任意类型

18.执行下面程序段后,y的值为(A )

x=10;

if (x>0) y=1;

else if (x,0) y=-1;

else y=0;

y=5;

A 、5 B、 0 C、 –1 D、 1

19.下面函数的类型是 ( b)。

fun (x,y)

float x,y;

{ float z;

z=x.y ?x:y;

return (z);

}

A 、没有类型 B、 int类型 C、 void 类型 D、 float 类型

20.设int a[20][30];则在引用其中元素a[I][j]是,I、j的取值范围是( D )。

A 、0i20, 0j30 B、 0

9

C 语 言 程 序 设 计

C、0

21.表达式k=(i=12,j=13,i+j), k+5的值是( c )。

A、 25 B、 17 C、 30 D、 18

22.执行下面程序段后,屏幕输出结果是(d )。

int I=5,s=10;

do {s=s+I ; I++;}

while(I<=5);

printf (“%d‟,s);

A、 5 B、 6 C、 10 D、 15

23.执行下面程序段后,屏幕输出结果是( b)。

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

int i, s=0;

for (i=0;i<10; i+=2) s=s+a[i];

printf (“%d”, s);

A、 55 B、 25 C、 30 D、 35

24.下面程序的输出是什么? (c )

#define R 3

#define PI 3.14

#define LEN 2*PI*R

main ( )

{int len=15;

printf(“LEN=%dn”,len=LEN);

}

A、 LEN=15 B、 LEN=18.84 C、 LEN=18 D、 LEN=2*PI*R

25 执行下面程序段的输出结果是什么?( b)

static char str [30]={“abc0defg”}

static char str [30]={“xyz”}

printf (“%s”, strcat (str1,str2));

A、 abc0defgxyz B、 abcxyz C、 xyzabc0defg D、 xyzabc

26.表达式(2>3)?4:(5<6)?7:8的值是(a )。

A、 7 B、 8 C、 4 D、 6

27.变量的储存类别分为下面四类,其中不是在内存中分配的是 (C )。

A、 auto B、 static C、 register D、 extern

28.下面表达式中,有语法错误的是 (b )。

A、 a<=b<=c B、 5=a C、 a==b D、 a=b

29.设有如下程序

main ( )

{ int a,b;

scanf (“%d, %d”,&a,&b)

if (a>b)

10

C 语 言 程 序 设 计

if (a>0) prinf (“AA”);

else if (b>-5) printf (“BB”);

else printf (“CC”);

printf (“n”);

}

要使运行输出的结果是CC,问运行时输入的a,b植应选下面中的哪一组 (B)。

A、 10 , 5 B、 -5 , -10 C、 0 , -3 D、 6 , 7

30.下面运算符中优先级最低的是 ( A.

)。

A、 = B、 % C、 && D、 *

31.已知char c 1=‟101‟,c 2=‟102‟; 执行printf (“%c, %c, c1, c2); 输出结果是 ( C)。

A、101,102 B、e,f C、 A,B D、 a,b

32.设 int i; char c; float f, g; 则下面表达式中类型为整型的是( d )。

A、 i+f B、f*c C、 (int)g*f D、 i*c

33.定义为void类型的函数,指的是( c )。

A、调用函数之后,被调用的函数的返回值不确定。

B、调用函数之后,被调用的函数的返回值为任意类型。

C、调用函数之后,被调用的函数没有返回值。

D、调用函数之后,被调用的函数不返回。

34.运行西面的程序段,其输出的结果是( D )。

static char a[ ]=”12345”;

char *p;

for (p=a+4; p>=a ; p-=2) printf (“%sn”.p );

A、12345 B、54321 C、 5 D、5

345 543 543 345

5 5 54321 12345

35. 已知有定义 static char s 1 [20]=”computer”; char s2 [20];要使 s2也存放字符 “computer” ,

可选用下面的语句 (D )。

A、s2=s1; B、s2=”computer”; C、s2=&s1; D、 strpy (s2,s1)

36.以下程序段的运行结果为 ( a)。

int i=8, j=10, m,n;

m=++i; n=j++;

printf (“%d,%d,%d,”,i,j,m,n);

A、9 , 11 , 9 , 10 B、9 , 11 ,8 , 10 C、9 , 11 , 9 , 11 D、8 , 10 , 8 , 10

37.设有 char str [5], *p=str; 选出正确的调用语句 (A)。

A、scanf (“%s”,p ); B、scanf (“%s”,*p );

C、scanf (“%s”,&str); D、scanf (“%s”,&p );

38.C语言中,按一定格式向文件写入数据可以用函数 ( C)。

A、 fputc ( ) B、 fputs ( ) C、 fprintf ( ) D、 fscanf ( )

39.设定义 int k; char c; float f; double d; 且各变量已有确定值,执行k=(c*k+f)/d ;后,变量k 11

C 语 言 程 序 设 计

的类型为( B)。

A、 double B、 int C、 float D、 类型出错

40.下面程序的运行结果是 ( C )。

int max (float x , float y )

{

float z ;

z=x>y? x:y;

return (z);

}

main ( )

{

float a=8.5, b=5.5,c;

c=max (a,b);

printf (“%fn”,c);

}

A、8.500000 B、 8 C、 8.000000 D、出现语法错误

二、填空题

1. 以下函数实现的功能是_将大写字母转化为小写字母_______________。

char lower (char c)

{

if ( c>=‟A‟&& c<=‟Z‟) return (c+32);

else return ( c);

}

2. 作为字符串结束标志的字符‟0‟,它的ASCII码是____0__________。

3. 程序中要用到 sin ( ) 或 sqrt ( ) 等数学函数时,应写上哪一个预编译命令_#include_______________。

4.从作用域来分,变量可分为局部变量和___全局变量___________。

5.数学中x属于区间[a,b]或sqrt ( ) 等数学函数时,应写上哪一个预编译命令__________。

6.用条件表达式描述在a,b,c中取最大者,请完成表达式(max=_a>b?a;b_________________)>c?max : c

7.表达式 14*8的值是__0__________。

8.一个不需要返回值的函数,应把其类型定义为________void_________。

9.某段程序为 char str [20 ];

gets (str);

printf (“%s”,str );

当输入响应是 Turbo C 时,其输出是__________________。

10.下面程序的输出结果是__313/7________________________。

main ( )

{ int a,b,c,d ;

12

C 语 言 程 序 设 计

a=313; b=7; c=a/b; d=a%b;

printf (“%d/%d=%d …%dn”,a,b,c,d );

}

11.下面程序实现对任意输入的两个数a,b,按先大后小的顺序输出这两个数。

swap (int p, intp)

{ ___int t;____________________;

t=*p; * p=*q; *q=t;

}

main ( )

{ int a,b;

scanf (“%d%d”,__&a,&b_____________); if (a

printf (“%d,%d”,a,b);

}

12.运行下面程序时若用123456789 响应输入,其输出的结果是_12,345.000000,67.000000____________________________。

main ( )

{int a; float b,c;

scanf (“%2d%3f%2f”,&a,&b,&c);

printf (“a=5d,b=%f,c=%fn”,a,b,c);

}

13.结构化程序设计的三种基本结构为_循环,顺序,选择_______________。

三、判断题

1.5=4+1是C语言的一个合法表达式。( x )

2.If (1)与 分(‘1’)作用相同。( ? )

3.逗号表达式是没有值和类型的。( X )

4.C语言的注释用{和}来界定。( x )

5.C的指针变量可存放任何类型变量的地址。(X )

6.C语言中函数可以嵌套定义函数。( X )

7.程序中使用的所有变量都要先定义后使用。( / )

8.‟045‟是一个字符串。( x )

9.自增,自减运算符(++,-)只能作用于变量,而不能作用于常量和表达式。( / )

10.数组名是一个指向该数组首地址的指针。( / )

11.函数的实参可以是常量或变量,但必须要有一个确定的值。( / )

12.循环语句中表示循环条件的表达式必须是逻辑表达式。( x )

13.当赋值号两边类型不同时,赋值号左边变量的类型有可能被改变。( X )

13

C 语 言 程 序 设 计

14.C语言的整型变量与字符型变量在任何时候都是等价的。( x )

15.在一个C语言程序中有且只有一个main ( )函数。( / )

16.任何未经赋值的指针变量均不能使用。(? )

17.表达式83.5%5的值是实型的。( x )

18.C语言没有字符串变量,字符串被存放在字符数组中。(? )

19.已知char c=‟E‟; 则下面语句执行的输出结果是e-G-B。( ? )

printf ( “%c-%c-%cn”,c+32,c+2,c-3);

20.运行下面程序的输出结果是10。( ? )

main ( )

{ int x=10; func (x);

printf (“%d”,x);

}

func (int x)

{x=20;}

四、改错题

1. 下面程序对正确的输入3,4 ,不能得到正确的输出。

main ( )

{ int a ,b;

scanf (“%d,%d”,a,b); /* 改此行 */

printf (“%d,%d”,a,b);

}

2. 下面程序在调试时发生错误。

#include “stdio.h”

main ( )

{char ch ;

getchar (ch); /* 改此行 */

printf (“%c”,ch);

}

3. 下面语句的功能是希望根据x与y是否相等来决定执行s1或s2。

if (x=y) s1 ; /* 改此行 */

else s2 ;

4. 下面函数求数组a中k个元素之和。

sum (int a[ ],int k)

{ int i,s=0 ;

for (i=0; i

s+=a [i] ;

return (s); }

5. 下面程序通过指针间接使用整型变量。

14

C 语 言 程 序 设 计

main ( )

{ int a=100;

int *pa=a; /* 改次行 */

printf (“%d”,*pa);

}

15