发布时间 : 星期一 文章高级语言程序设计A:期末练习2及答案更新完毕开始阅读70ecc6b66f1aff00bfd51e6e
一、单项选择题
1.下列字符串不是C语言标识符的是 D 。
A._above B.all C.long_int D.2Line
2.C语言中,下列不能用来表示整型常数的进制是 D 。 A.十进制 B.八进制 C.十六进制 D.二进制
3.以下选项中,非法的字符常量是 C 。
A.?\\t? B.?a? C.“n ” , D.?\\xaa?
4.设有语句int a=3; 则执行了语句 a += a - = a*a ; 后,变量 a 的值是 B 。 A.3 B. -12 C.9 D.0
5.若变量c为char 类型,能正确判断出 c 为小写字母的表达式是 B 。 A.?a? <= c <=?z? B.(c>=?a?) && (c<=?z? ) C.(c>=?a?) !! (c<=?z? ) D.(c>=?a?) and (c<=?z? )
6.设有定义:int x=10, y=3, z ;
则语句 printf ( “ %d ” , z= ( x%y, x/y ) ); 的输出结果是 A 。 A.3 B.0 C.4 D.1
7.以下选项中,与 k = n++ 完全等价的表达式是 A 。
A.k=n, n=n+1 B.n=n+1, k=n C.k= ++n D.k += n+1
8.下面的do_while ( ) 循环 C 。 int m= -1; do
{ m=m*m; } while ( !m ) ;
A.共执行2次 B.是无限循环 C.共执行1次 D.有语法错误
9.下面语句定义正确的是 D 。
A.int a[1][4]={1,2,3,4,5} ; B.float x[ ][ ]={{1},{2},{3}} ; C.long b[2][3]={{1}, {1,2},{1,2,3} } ; D.double y[][3]= {0,1,2,3 } ;
10.对表达式 for ( e1 ; ; e3 ) 可理解为 B 。 A.for ( e1 ; 0 ; e3 ) B.for ( e1 ; 1 ; e3 ) C.for ( e1 ; e3 ; e3 ) D.for ( e1 ; e1 ; e3 )
二、按照各小题的要求写出结果 填空输出结果
1.设有以下程序段,运行结果是 4 int a[10]= {1,2,3,4,5,6,7,8,9,10 } ;
int *p= &a[3], b ; b= *p ;
printf ( “ %d ”, b ) ;
2.下面程序的运行结果是 t=3, s= 2 void main ()
{ int a=7, b=4, s=1, t=1;
if (a>0) s++; if (a>b)
t +=s;
else if (a = = b) t=5; else t=2*s ;
printf( “t= %d, s=%d ”, t, s );
} 3..运行时输入12,下面程序执行时的输出结果是 0 。 void main( ) { int x, y;
scanf ( “ %d ” , &x) ; y=x>12 ? x+10 : x-12 ; printf (“ %d \\n ” , y ) ; }
4.下面程序的运行结果是 20101 LiuXiang 88 99 void main( ) { struct STU { int num; char name[10]; int score[2]; }; STU s1[2]={ {20101,\; printf(\ ); }
5.下面程序的运行结果是 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
@ @ @ @ @ void main( ) { int i, j;
for (i=1;i<=4 ;i++) { for(j=0; j<=4; j++) printf(\ putchar('\\n'); } }
三、读程序,写出输出结果和程序功能 1. #include
void main()
{ int a=0,b=0,c=0; char ch []=\ char *p=ch ; while ( *p != '#' )
{ if ( *p >= 'A' && *p <='Z') a++; if ( *p >= 'a' && *p <='z') b++; if ( *p >= '0' && *p <='9') c++; p++; }
printf ( \ M M \ ); }
程序功能: 搜索字符数组,直到#号结束,分别统计出大写字母、小写字母及数字符的个数。 运行结果: 3 3 3
2. #include
void main() { int i, j, m;
int a[3][4]={{1,2,3,4},{9,8,7,6}, {-10,10,-5,2}}; m= a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++) if ( a[i][j]>m ) m= a[i][j]; printf ( \ ); }
程序功能: 首先在3*4的矩阵中选择一个比较用的初值,求出3*4矩阵中值最大的那个元
素值,结束二重循环后,输出最大值。
运行结果: m=10
3.#include
while (i<=500)
{ if ( i % 100==0 ) { a[n]= i ; n++ ; } i++ ; }
for ( i=0; i 程序功能: 在200~ 500间,寻找是100倍数的数,并依次存入a数组中,最后输出之。 运行结果: 200 300 400 500 4.运行程序时,输入为 3 7 5 4 2 1 9 6 8 10 #include { void sort (int array[], int n); int a[10], i; for(i=0; i<10; i++) scanf (\ sort ( a , 10 ); for(i=0; i<10; i++) printf (\ printf(\ } void sort (int array[], int n) { int i, j, k, t ; for(i=0; i for( j=i+1; j if ( array[j] t=array[k]; array[k]=array[i]; array[i]= t ; } } 程序功能: 输入一维数组10个元素值,调用sort()函数,用选择法排序,并输出。 运行结果: 1 2 3 4 5 6 7 8 9 10 四、根据题意填写空白处的程序语句 1.在main( )中输入并求出5x5的二维数组主对角线元素中最小值、并输出,请填空。 void main( ) { int min, i, j , a[5][5] ; for (i=0; i<5; i++) for (j=0; j<5 ; j++) scanf ( \ &a[i][j] ); min = a[0][0]; for (i=0;i<5;i++) for (j=0;j<5;j++) if ( i == j ) if ( a[i][j] < min ) min= a[i][j]; printf(\ min ); } 2.下面程序的功能:函数swap() 形参是一个二元素的整型数组,在函数体中,交换这二个元素值;main( )调用swap() ,实现实参数组二元素的交换,请填空。 void swap (int c[2] ) { int t; t=c[0]; c[0]=c[1]; c[1]= t; } void main( ) { int a[2]={3,5 }; swap ( a ); printf (\ a[1]=%d \} 3.下面 convert( ) 函数的功能,将一个字符串内容颠倒过来。例:“ABCD”变成“DCBA”。main( )调用 convert( ) ,并输出颠倒后的字符串,请填空。 #include “string.h” void convert ( char str [ ] ) ; void main() { char s[ ]= {“ABCD…\\0”}; char *p convert ( s ) ; p= s ; while ( *p != ?\\0? ) { putchar ( *p ) ; p++;