综合测试一

课程名称:C语言程序设计 总分:100 答题时长:100分钟 出卷人:王赛楠

、单项选择题:(共15题,15分)
1 下列关于计算机语言的叙述中,正确的是_______。
在计算机语言中,只有机器语言属于低级语言
高级语言的源程序可以被计算机直接执行
C语言属于高级语言
机器语言是与所有机器无关的语言
2 源程序TEST.C经编译产生的目标文件和连接后产生的可执行文件是_______。
TEST.BAK和TEST.OBJ 
TEST.OBJ和TEST.EXE
TEST.EXE 和TEST.C
TEST.BAK和TEST.EXE
3 下面关于算法的说法,错误的是_______。
算法必须有输出,但不一定有输入
算法必须在计算机上用某种语言实现
算法必须在有限步执行后能结束
算法的每一步骤必须有确切的定义
4 结构化程序设计规定的3种基本控制结构是_______。
顺序、选择和转向
层次、网状和循环
模块、选择和循环
顺序、选择和循环
5 设有定义:long x = 123456L ; ,则以下能够正确输出变量x值的语句是_______。
printf( "x=%d\n" , x ) ;
printf( "x=%ld\n" , x ) ;
printf( "x=%8dL\n" , x ) ;
printf( "x=%LD\n" , x ) ;
6 若有以下程序段

int m = 0xabc , n = 0xabc ;

m -= n ;

printf( "%X\n" , m ) ;

执行后输出结果是_______。

0X0
0x0
0
0XABC
7 if语句的选择条件是_______。
只能用关系表达式
只能用关系表达式或逻辑表达式
只能用逻辑表达式
可以用任何表达式
8 已知int x = 2 , y = -1 , z = 3 ;,执行下面语句后,z的值是_______。

if( x < y )  if( y < 0 )  z = 1 ;  else z++ ;

1
2
3
4
9 有以下程序段

int k = 10 ;

while( k = 0 ) k = k - 1 ;

则下面描述中正确的是_______。

while循环执行10次 
循环是无限循环
循环体语句一句也不执行
循环体语句执行一次
10 有以下程序段

int x = 0 , s = 0 ;

while( !x != 0 )  s += ++x ;

printf( "%d" , s ) ;

则_______。

运行程序段输出0  
运行程序段输出1
程序段中的控制表达式是非法的
程序段执行无限次
11 在C语言中,引用数组元素时,其数组下标的数据类型不允许是_______。
整型常量
整型表达式
整型常量或整型表达式
任何类型的表达式
12 以下正确的函数形式是_______。
double fun( int x , int y )

{

z = x + y ;

return z ;

}   

fun( int x , y )

{

int z ;

return z ;

}

fun( x , y )

{

int x , y ;

double z ;

z = x + y ;

return z ;

double fun( int x , int y )

{

double z ;

z = x + y ;

return z ;

}

13 若已定义 int a = 5 ; 下面对 ①、② 两个语句的正确解释是_______。

① int *p = &a ;  ② *p = a ;

语句①和②中的*p含义相同,都表示给指针变量p赋值。
①和②语句的执行结果,都是把变量a的地址值赋给指针变量p。
①在对p进行说明的同时进行初始化,使p指向a;②将变量a的值赋给指针变量p。
①在对p进行说明的同时进行初始化,使p指向a;②将变量a的值赋为*p。
14 若有以下说明和语句。对结构体变量person的出生年月进行赋值时,下面正确的赋值语句是(         )。

struct date

{ int year,month,day;}

struct worklist

{ char name[20];

char sex;

struct date birthday;

} person;

year=1958;
birthday.year=1958;
person.birthday.year=1958;
person.year=1958;
15 下列关于C语言数据文件的叙述中正确的是_______。
文件由ASCII码字符序列组成,C语言只能读写文本文件
文件由二进制数据序列组成,C语言只能读写二进制文件
文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
、填空题:(共5题,15分)
1 C源程序的基本单位是________,一个C源程序中必须包括一个________。
2 问题处理方案的正确而完整的描述称为_______ 。
3 已知float f = 123.467 ; ,则执行语句printf( "%.2f\n" , f ) ; ,输出结果是_______。
4 在C程序中,指针变量能够赋_______值或_______。
5 在C语言中,根据数据的组织形式,可分为_______文件和_______文件。
编程题:(共5题,25分)
1 编写一个程序,用2个printf()语句分别输出学校名称和自己的姓名。
2 编写一个程序,读入一个字母,输出与之对应的ASCII码值。
3 编写一个程序,从键盘上输入4个整数,输出其中的最小值。
4 编写一个程序,输出所有的水仙花数。若一个三位数等于其各位上数字的立方和,则称这个三位数为水仙花数。例如,153是一个水仙花数,因为
5 编写一个程序,将输入的数据插入到一个已按升序排好的数组中,要求插入后的数组仍然按升序排列。
程序阅读题:(共9题,36分)
1 下面程序的运行结果是_______。

#include<stdio.h>

int main( )

{

int m = 177 ;

    printf( "%o\n" , m ) ;

         return 0 ;

}

2 下面程序的运行结果是_______。

#include<stdio.h>

int main( )

{

int n = 0 ;

    n += ( n = 10 ) ;

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

         return 0 ;

}

3 下面程序的运行结果是_______。

 

运行时从键盘输入:9↙。

#include<stdio.h>

int main( )

{

int n ;

scanf( "%d" , &n ) ;

if( n++ < 10 )  printf( "%d\n" , n ) ;

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

return 0 ;

}

4 下面程序的运行结果是_______。

#include<stdio.h>

#include<math.h>

int main( )

{

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

       while( a < b < c )

       {

              t = a ;

              a = b ;

              b = t ;

              c -- ;

       }

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

return 0 ;

}

5 下面程序的运行结果是_______。

#include<stdio.h>

int main( )

{

       inti , k , a[10] , p[3] ;

       k = 5 ;

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

              a[i] = i ;

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

              p[i] = a[i*i] ;

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

              k = p[i] * 2 ;

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

return 0 ;

}

6 下面程序的运行结果是________。

#include<stdio.h>

int main( )

       void f( int x , int y ) ;

       int a = 1 , b = 2 ;

       f( a , b ) ;

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

    return 0 ;

}

void f( int x , int y )

       x = 100 ;

       y = 200 ;

}

7 下面程序的运行结果是_______。

#include<stdio.h>

int main( )

{

       char a[ ] = "Language" , b[ ] = "Programe" ;

       char *p1 , *p2 ;

       int k ;

       p1 = a ;

p2 = b ;

       for( k = 0 ; k <= 7 ; k++ )

              if( *( p1 + k ) == *( p2 + k ) )

                     printf("%c" , *( p1 + k ) ) ;

      return 0 ;

}

8 下面程序的运行结果是_______。

#include<stdio.h>

struct stu

{

       int x ;

       int *y ;

} *p ;

int dt[4] = {10 , 20 , 30 , 40 } ;

struct stu a[4] = { 50 , &dt[0] , 60 , &dt[1] , 70 , &dt[2] , 80 , &dt[3] } ;

int main( )

{

       p = a ;

       printf( "%d," , ++p->x ) ;

       printf( "%d," , ( ++p )->x ) ;

       printf( "%d\n" , ++( *p->y ) ) ;

       return 0 ;

}

9 下面程序的运行结果是_______。

#include<stdio.h>

int main( )

{

       FILE *fp ;

       int i , k , n ;

       fp = fopen( "data.dat" , "w+" ) ;

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

       {

              fprintf( fp , "%d  " , i ) ;

              if( i % 3 == 0 )

                     fprintf( fp , "\n" ) ;

       }

       rewind( fp ) ;

       fscanf( fp , "%d%d" , &k , &n ) ;

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

       fclose( fp ) ;

       return 0 ;

}

程序完善题:(共3题,9分)
1 下面程序用于将输入的三个数从小到大排序输出。

#include<stdio.h>

int main( )

{           

int a,b,c,x,y;

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

       if(_______){ x=a; y=b; }

       else  { x=b; y=a; }

       if(_______)x=c;

       else  if(y>c)y=c;

printf("%d,%d,%d",y,a+b+c–x–y,x);

return 0;

}

2 下面程序的功能是输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。请填空。

#include<stdio.h>

int main( )

{

       int a[5], max, min, i, j = 0 , k = 0 ;

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

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

       min = a[0] ;

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

              if( a[i] < min )

              {

                     min = a[i] ;

                     _______;

              }

       max = a[0] ;

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

              if( a[i] > max )

              {

                     max = a[i] ;

                     _______;

              }

       _______;

       _______;

       printf( "\nThe position of min is:%3d\n" , k ) ;

       printf( "\nThe position of max is:%3d\n" , j ) ;

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

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

return 0 ;

}

3 下面程序的功能是:area函数计算圆的面积,main函数中调用area函数,计算给定半径的圆的面积,输出时显示两位小数。请填空。

#include<stdio.h>

#define PI 3.14

int main( )

{

       ________;

       float x = 2.4 , y ;

       y = area( x ) ;

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

    return 0 ;

}

float area ( float r )

{

       float s ;

       s= PI * r * r ;

       ________;

}