一、单项选择题:(共15题,15分)
1、
在C语言中,引用数组元素时,其数组下标的数据类型不允许是_______。
|
|
整型常量 |
|
整型表达式 |
|
整型常量或整型表达式 |
|
任何类型的表达式 |
|
2、
以下对一维整型数组a的定义,正确的是_______。
|
|
int a(10) ; |
|
int n = 10 , a[n] ; |
|
int n ; scanf( "%d" , &n ) ; int a[n] ; |
|
int a[10] ; |
|
3、
若有定义:int a[10] ;,则对a数组元素的正确引用是_______。
|
|
a[10] |
|
a[3.5] |
|
a(5) |
|
a[10-10] |
|
4、
对定义 int a[10] = {6 , 7 , 8 , 9 , 10} ; 的正确理解是_______。
|
|
将5个初值依次赋给a[1]--a[5] |
|
将5个初值依次赋给a[0]--a[4] |
|
将5个初值依次赋给a[6]--a[10] |
|
因为数组长度与初值个数不相同,所以此语句不正确 |
|
5、
以下对二维数组a的正确说明是_______。
|
|
int a[3][ ]; |
|
float a(3)(4); |
|
double a[ ][4] ; |
|
float a(3,4); |
|
6、
若有定义: int a[3][4]; , 则对a数组元素的正确引用是_______。
|
|
a[3][4] |
|
a[1,3] |
|
a[1+1][0] |
|
a(2)(1) |
|
7、
以下对二维数组a初始化正确的语句是_______。
|
|
int a[2][ ]={{0 , 1 , 2}, {3 , 4 , 5}}; |
|
int a[ ][3]={{0, 1, 2}, {3, 4, 5}}; |
|
int a[2][4]={{0, 1 , 2}, {3 , 4}, {5}}; |
|
int a[ ][3]={{0, 1, 2}, { }, {3, 4}}; |
|
8、
对二维数组a进行如下初始化 int a[ ][3]={0 , 1 , 2 , 3 , 4 , 5}; 则a[1][1]的值是_______。
|
|
0 |
|
3 |
|
4 |
|
1 |
|
9、
下面程序段的运行结果是_______。 #include<stdio.h> int main( ) { int i , x[3][3] = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9} ; for( i = 0 ; i < 3 ; i++ ) printf( "%2d" , x[i][2-i] ) ; return 0 ; }
|
|
1 5 9 |
|
1 4 7 |
|
3 5 7 |
|
3 6 9 |
|
10、
以下对数组s的初始化,错误的是_______。
|
|
char s[5] = { "abc" } ; |
|
char s[5] = { 'a' , 'b' , 'c' } ; |
|
char s[5] = "" ; |
|
char s[5] = "abcde" ; |
|
11、
对两个数组a和b进行如下初始化, char a[ ] = "ABCDEF" ; char b[ ] = { 'A' , 'B' , 'C' , 'D' , 'E' , 'F' } ; 则以下叙述正确的是_______。
|
|
a和b数组完全相同 |
|
a与b长度相同 |
|
a的长度比b短 |
|
a的长度比b长 |
|
12、
有两个字符数组a,b,则以下正确的输入语句是_______。
|
|
gets( a , b ) ; |
|
scanf( "%s,%s" , a , b ) ; |
|
scanf( "%s%s" , &a , &b ) ; |
|
gets( "a" ) , gets( "b" ) ; |
|
13、
下面程序段的运行结果是_______。 char a[7] = "abcdef" ; char b[4] = "ABC" ; strcpy( a , b ) ; printf( "%c\n" , a[5] ) ;
|
|
□(□表示一个空格) |
|
\0 |
|
e |
|
f |
|
14、
判断字符串s1是否大于字符串s2,应当使用_______。
|
|
if( s1>s2 ) |
|
if( strcmp( s1 , s2 ) ) |
|
if( strcpy( s1 , s2 ) ) |
|
if( strcmp( s1 , s2 )>0 ) |
|
15、
若有定义:char s[100] = "hello" ;,下列函数调用语句中,不正确的是_______。
|
|
strlen( strcpy( s , "well" ) ) ; |
|
strcat( s , "!" ) ; |
|
puts( puts( "hello" ) ) ; |
|
!strcmp( "" , s ) ; |
|
|
二、编程题:(共4题,32分)
1、
编写一个程序,将输入的数据插入到一个已按升序排好的数组中,要求插入后的数组仍然按升序排列。
|
|
2、
编写一个程序,计算5×5的矩阵的主对角线之和。 例如: 其主对角线之和为60。
|
|
3、
编写一个程序,将两个字符串连接起来。不能使用strcat函数。
|
|
4、
编写一个程序,计算字符串的实际长度。不能使用strlen函数。
|
|
|
三、程序阅读题:(共7题,35分)
1、
下面程序的运行结果是_______。 #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 ; }
|
|
2、
下面程序的运行结果是_______。 #include<stdio.h> int main( ) { inti ,x[10] = {2 , 3 , 0 , 3 , 0 , 2 , 3 , 2 , 1 , 3} ,y[4] = {0} ; for(i = 0 ; i<10 ; i++ ) y[x[i]]++ ; printf( "%d\n" , y[3] ) ; return 0 ; }
|
|
3、
下面程序的运行结果是_______。 #include<stdio.h> int main( ) { int i , j , a[3][3] = {0} ; for( i = 0 ; i < 3 ; i++ ) for(j = 0 ; j <= i ; j++ ) a[i][j] = i * j ; printf( "%d,%d\n" , a[1][2] , a[2][1] ) ; return 0 ; }
|
|
4、
下面程序的运行结果是_______。 #include<stdio.h> int main( ) { int a[3][3] = {0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8} ; int i , s = 0 ; for( i= 0 ; i < 3 ; i++ ) s += a[i][1] ; printf( "%d\n" , s ) ; return 0 ; }
|
|
5、
下面程序的运行结果是_______。 #include<stdio.h> int main( ) { int i ; char a[ ]= "Time" , b[ ] = "Tom" ; for( i = 0 ; a[i] != '\0' && b[i] != '\0' ; i++ ) if( a[i] == b[i] ) if( a[i] >= 'a' && a[i] <= 'z' ) printf( "%c" , a[i] - 32 ) ; else printf( "%c" , a[i] + 32 ); else printf( "*" ) ; return 0 ; }
|
|
6、
下面程序的运行结果是_______。 #include<stdio.h> int main() { char a[ ]= "morning" , t ; int i , j = 0 ; for( i = 1 ; i <7 ; i++ ) if( a[j]<a[i] ) j = i ; t = a[j] ; a[j] = a[7] ; a[7] = a[j] ; puts(a) ; return 0 ; }
|
|
7、
下面程序的运行结果是_______。 #include<stdio.h> #include<string.h> int main( ) { char a[5][10] = {"one" , "two" , "three" , "four" , "five"} , str[10] ; inti , j ; char t ; for(i = 0 ; i< 4 ; i++ ) for(j = i + 1 ; j < 5 ; j++ ) if( a[i][0] > a[j][0] ) { t = a[i][0] ; a[i][0] = a[j][0] ; a[j][0] = t ; } strcpy(str , a[1] ) ; puts(str ) ; return 0 ; }
|
|
|
四、程序完善题:(共4题,20分)
1、
下面程序的功能是输入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 ; }
|
|
2、
下面程序的功能是:从键盘上输入10个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩。请填空。 #include<stdio.h> int main( ) { int score[10], n=0,i ; float sum = 0.0 , avg; printf( "pleasr enter :\n" ) ; for(i = 0 ; i<10 ;i++ ) { scanf("%d", &score[i] ) ; _______; } avg=sum/10; for(i = 0 ; i<10 ;i++ ) if(_______) printf("%3d",score[i]); return 0 ; }
|
|
3、
下面程序的功能是:将数组a[3][4]中的元素以3行4列的格式输出,然后按行求和并且存储到数组s中。请填空。 #include<stdio.h> int main( ) { int a[3][4] = {0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11} ; int s[3] = {0} ; inti , j ; for(i= 0 ; i< 3 ; i++ ) { for( j= 0 ; j < 4 ; j++ ) { printf( "%4d" , a[i][j] ) ; _______; } _______; } for(i= 0 ; i< 3 ; i++ ) printf( "%d\n" , s[i] ) ; return 0 ; }
|
|
4、
下面程序的功能是:将字符串str的内容倒过来存放。请填空。 #include<stdio.h> #include<string.h> int main( ) { charstr[ ] = "abcdefg" ; inti , j , k ; _______; for(i= 0 ; i< j ; i++ , j-- ) { k = str[i] ; str[i] = str[j] ; _______; } printf( "%s\n" , str ) ; return 0 ; }
|
|
|
|