一、单项选择题:(共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题,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 ; ________; }
|
|
|
|