电子科技大学《C语言》自测题答案

  • 格式:doc
  • 大小:75.00 KB
  • 文档页数:21

自测题1答案

一、填空题(每空1分,共29分)

1、若有以下的定义:int a [6];则数组a元素的下标的上限为 5 ,下限为 0 。

2、局部的变量是在函数内部定义的,它们只在 本函数 有效。

3、组成C程序的若干函数中,只能且必须有一个 主 函数。

4、C语言中的变量名可以由 字母 , 数字 和 下划线 三种字符组成,且首字符不能是 。

5、枚举类型enum color (bla,blu,gre=3,cya,red)中的枚举项的值bla=__0__、blu=__1__、cya=__4__、red=__5___.

6、c语言中变量的存储属性有自动、____静态____、__外部______和寄存器四种。

7、算术运算符,关系运算符,赋值运算符的优先级从低到高依次是 赋值运算符 , 关系运算符 , 算术运算符 。

8、标准文件是系统自动打开和关闭的,但是一般用户文件,必须在程序中用函数_fopen( )_打开文件,文件操作结束后,用__fclose( )_关闭文件。

9、函数参数有 形式参数 和 实际参数 两种形式。

10、程序的三种基本结构是 顺序结构 , 选择结构 , 循环结构 。

11、x、y、z均为int型变量,请写出描述“x或y中有一个小于z”的表达式__x

12、下面程序的运行结果是: c1=c,c2=abc

# include

main( )

{char s[10]={“abc”};

printf(“c1=%c,c2=%s\n”,s[2],s);

}

13、如果a=5,b=2,c=3,d=4,则表达式a

14、设a=6,b=2,表达式a*=a+b运算后a的值为 48 。

15、设x=3.8.,a=9,y=5.3,表达式x+a%2*(int)(x+y)%2/4的值 3.8 。

二、选择题(每小题2分,共26分)

1、一个C程序的执行是从 A

A) 本程序的main函数开始,到main函数结束。

B) 本程序的第一个函数开始,到本程序最后一个函数结束。

C) 本程序的main函数开始,到本程序文件的最后一个函数结束。

D) 本程序的第一个函数开始,到本程序main函数结束。

2、下面的四个选项中,均不是合法的用户标识符的选项是 B

A) B B) b-a C) float D) _123

M_0 goto 2ab temp

Do int _A INT

6、 请问:下面这个程序段的输出是什么? D

int a=7,b=8,c=9;

if(a

a=b;

b=c;

c=a;

}

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

A. a=7 b=8 c=7 B. a=7 b=9 c=7

C. a=8 b=9 c=7 D. a=8 b=9 c=8

7、以下描述正确的是 C

A) goto语句只能用于退缩出多层循环。

B) switch语句中不能出现continue语句。

C) 只能用continue语句中来终止本次循环。

D) 在循环语句中break语句不独立出现。

8、以下对二维数组a的正确说明是 C

A) int a[ 3 ] [ ]; B) float a( 3, 4);

C) int a[ 3 ] [ 4 ] D) float a( 3, )( 4 );

9、有下面的程序段

char a[ 3 ], b[ ] =”student”;

a=b;

printf (“ %s”,a);

则 D

A) 运行后将输出student ; B)运行后将输出b;

C) 运行后将输出a D)编译出错

10、 若用数组名作为函数调用的实参,传给形参的是 A

A) 数组的首地址 B)数组的第一个元素值

C) 数组的全部元素值 D) 数组中元素的个数

11、在说明语句:int *f( );中,标识符f代表的是 C

A) 一个返回值为指针型的函数名

B) 一个用于指向整型数据的指针变量

C) 一个用于指向函数的指针变量

D) 一个用于指向一维数组的行指针

12.变量的指针,其含义是指该变量的___D_____

A) 一个标志 B) 值 C)名 D) 地址

13.已知 int b; 则对指针变量正确的说明和初始化是:__ D __

A) int *p=b; B) int p=b; C) int p=&b; D) int *p=&b;

三、判断题(在你认为正确的表达式前打√,错误的打×,每小题1分,共15分)

( × )1、switch语句中,所有case后的常量表达式可以相同

(√)2、C语言不能嵌套定义函数,但可以嵌套调用。

(√)3、使用宏定义时,宏名可以是大写或者小写,但是常用大写字母表示。

(√4、C语言函数的缺省类型是void型(空类型)。

(× )5、打印三行输出的C语言程序必须用三条printf语句。

(×)6、如果a>b或cb&&c

(√)7、如果有:int data[10];int *p; 则语句p=data 和 语句 p=&data[0]等价。

(√)8、联合类型是在同一个存储空间,可以为几个不同数据类型的成员所使用。

( ×)、一个数组能够存储许多不同类型的值。

四、阅读下列程序,请将运行结果写在答题卡上(每题3分,共15分)。

1.

#include

#define SQR(y) y*y

main()

{

int a,b=4;

a=SQR(b+1);

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

}

运行结果___25_____

2.

#include

main()

{char s[]="456789";

s[4]='\0';

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

}

运行结果___4567_____

3.

#include

main()

{ char *s="China Beijing 2008 Olympic Games";

char *p;

p=s;

while ((*p)!=’ ‘)

p++;

p=’\0’;

printf(“%s\n”,s);

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

}

运行结果China Beijing 2008 Olympic Games

China

5.

#include

main()

{

int x=1,y=1,m=1,n=1;

swtich (m){

case 0: x=x+2;

case 1: {

swtich (n) {

case 1: x=x+2;

case 2: y=y*2; break;

case 3: x++;

}

}

case 2: x++; y++;

case 3: x*=2;y*=2;break;

default :x++;y++;

}

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

}

运行结果___x=8,y=6_____

4.

#include

main()

{ int i=1;

while(i<=10)

{ if (!(i%2)) printf("%d,",i);

i++;

}

}

运行结果____1,3,5,7,9____

五、编写下列程序,(共15分)

1.试编写一个程序计算a!+b!+c!,并要求有输出结果.

解:

#include

fact(int);

void main()

{

int a,b,c;

printf(”Enter three numbers:”);

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

printf(%d!+ %d!+ %d!= %d +%d+%d \n”,a,b,c,fact(a), fact(b), fact(c));

return;

}

fact(int n)

{

int result;

if(n==1) return(1);

result=fact(n-1)*n; /*递归调用*/

return(result);

}

2. 编写一个程序,将一组数据{6,5,8,1,0,4,7,3,2,9}按从小到大的顺序排列,程序显示排序前和排序后的结果。

解:

#include

#define N 10

main( )

{

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

int i,j,t;

printf(“The array before sorted:”);

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

{

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

{

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