每个5分共100分。错选、多选、少选或不选均不得分。 1.[单选题]一个C程序的执行是从( ) A:本程序的main函数开始,到main函数结束 B:本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C:本程序的main函数开始,到本程序文件的最后一个函数结束 D:本程序文件的第一个函数开始,到本程序main函数结束 2.[单选题]在C语言中,要求运算数必须是整型的运算符是( ) A:/ B:++ C:!= D:% 3.[单选题]C语言中,逻辑“真”等价于( ) A:大于零的数 B:大于零的整数 C:非零的数 D:非零的整数 4.[单选题]若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式为( ) A:A%2 == 1 B:! (A%2==0) C:! (A%2) D:A%2 5.[单选题]以下程序的运行结果是( )。 int main( void ){ int m = 5; if ( m++ > 5) printf(“%d ”, m); else printf(“%d ”, --m); } A:4 B:5 C:6 D:7 6.[单选题]以下对一维整型数组a的正确说明是( ) A:int a(10) B:int n = 10, a[n] C:int n scanf(“%d”, &n) int a[n] D:#define SIZE 10 int a[SIZE] 7.[单选题]若有说明:int a[3][4];则对a数组元素的非法引用是( ) A:a[0][2*1] B:a[1][3] C:a[4-2][0] D:a[0][4] 8.[单选题]若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为( ) A:i * m + j B:j * m + i C:i * m + j - 1 D:i * m + j + 1 9.[单选题]以下程序的功能是将字符串s中所有的字符c删除,那么空白处缺少的语句为:( )。 #include int main(void) { char s[80] ; int i, j ; gets(s) ; for ( i = j = 0 ; s [i] != ‘0’ ; i++ ) if ( s [i] != ‘c’ ) ; s [ j ] = ‘0’ ; puts ( s ) ; return 0 ; } A: s [ j++] = s [ i ] B:s [ ++j ] = s [ i ] C:s [ j ] = s [ i ]; j++ D:s [ j ] = s [ i ] 10.[单选题]下面程序的功能是将已按升序排好序的两个字符串a和b中的字符,按升序归并到字符串c中,请为程序中的空白处选择适当的语句。 第一空答案( ) #include int main(void) { char a[ ] = “acegikm”; char b[ ] = “bdfhjlnpq”; char c[80], *p; int i = 0, j= 0, k = 0; while( a[i] != ’0’ && b[j] != ‘0’ ) { if ( a[i] < b[j] ) { ( ① ) } else { ( ② ) } k++; } c[k] = ‘0’; if ( ③ ) p = b + j; else p = a + i; strcat ( c , p ); puts ( c ); } A:c[k] = a[i]; i++ B:c[k] = b[j]; i++ C:c[k] = a[i]; j++ D:c[k] = a[j]; j++ 11.[单选题]下面程序的功能是将已按升序排好序的两个字符串a和b中的字符,按升序归并到字符串c中,请为程序中的空白处选择适当的语句。第二空答案( ) #include int main(void) { char a[ ] = “acegikm”; char b[ ] = “bdfhjlnpq”; char c[80], *p; int i = 0, j= 0, k = 0; while( a[i] != ’0’ && b[j] != ‘0’ ) { if ( a[i] < b[j] ) { ( ① ) } else { ( ② ) } k++; } c[k] = ‘0’; if ( ③ ) p = b + j; else p = a + i; strcat ( c , p ); puts ( c ); } A:c[k] = a[i]; i++ B:c[k] = b[j]; i++ C:c[k] = a[i]; j++ D:c[k] = b[j]; j++ 12.[单选题]在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( ) A:extern B:register C:auto D:static 13.[单选题]以下程序的正确运行结果是( )。 #include int f(int a); int main(void) { int a = 2, i; for( i = 0; i < 3; i++ ) printf(“%4d”,f(a)); } int f(int a) { int b = 0; static int c = 3; b++; c++; return(a+b+c); } A:7 7 7 B:7 10 13 C:7 9 11 D:7 8 9 14.[单选题]以下程序的运行结果为( )。 void sub(int x, int y, int *z) { *z = y – x ; } int main(void) { int a,b,c ; sub(10, 5, &a) ; sub(7, a, &b) ; sub(a, b, &c) ; printf( “%4d,%4d, %4d ”,a,b,c); } A:5, 2, 3 B:-5, -12, -7 C:-5, -12, -17 D:5, -2, -7 15.[单选题]有如下语句int a = 10, b = 20, *p1, *p2; p1 = &a; p2 = &b;变量与指针的关系如图1所示;若要实现图2所示的存储结构,可选用的赋值语句为( ) A:*p1 = *p2 B:p1 = p2 C:p1 = *p2 D:*p1 = p2 16.[单选题]若已建立下面的链表结构,指针p、q分别指向图中所示结点,则不能将q所指的结点插入到链表末尾的一组语句是( ) A:q -> next = NULL; p = p -> next; p -> next = q B:p = p -> next; q -> next = p -> next; p -> next = q C:p = p -> next; q -> next = p; p -> next = q D:p = (*p).next; (*q).next = (*p).next; (*p).next = q 17.[单选题]以下程序的功能是:读入一行字符(如:a,b,… y,z),按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。请在空白处为程序选择适当的代码。 第一空答案( ) #include #define getnode(type) ① malloc(sizeof(type)) int main(void) { struct node{ char info; struct node *link; }*top,*p; char c; top = NULL; while( ( c = getchar( ) ② ) { p = getnode ( struct node ); p -> info = c; p -> link = top; top = p; } while ( top ) { ③ ; top = top -> link; putchar ( p -> info ); free ( p ); } } A:(type) B:(type *) C:type D:type * 18.[单选题]以下程序的功能是:读入一行字符(如:a,b,… y,z),按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。请在空白处为程序选择适当的代码。第二空答案( ) #include #define getnode(type) ① malloc(sizeof(type)) int main(void) { struct node{ char info; struct node *link; }*top,*p; char c; top = NULL; while( ( c = getchar( ) ② ) { p = getnode ( struct node ); p -> info = c; p -> link = top; top = p; } while ( top ) { ③ ; top = top -> link; putchar ( p -> info ); free ( p ); } } A:==’0’ B:!=’0’ C:==’ ’ D:!=’ ’ 19.[单选题]以下程序的功能是:读入一行字符(如:a,b,… y,z),按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。请在空白处为程序选择适当的代码。第三空答案( ) #include #define getnode(type) ① malloc(sizeof(type)) int main(void) { struct node{ char info; struct node *link; }*top,*p; char c; top = NULL; while( ( c = getchar( ) ② ) { p = getnode ( struct node ); p -> info = c; p -> link = top; top = p; } while ( top ) { ③ ; top = top -> link; putchar ( p -> info ); free ( p ); } } A:top = p B:p = top C:p == top D:top == p 20.[单选题]以下程序的输出结果是( ) #include #define M 5 #define N M+M main() { int k; k=N*N*5; printf(“%d ”,k); } A:500 B:125 C:55 D:100
1A 2D 3C 4C 5B 6D 7D 8C 9A 10A 11D 12D 13D 14B 1516没图干不了,17B 18D 19B 20C