C++某公司笔试题

C/C++ code
    
    
做了下,感觉比我们的C语言期末考试还简单 每个5分共100分。错选、多选、少选或不选均不得分。 1 .[单选题]一个C程序的执行是从( A ) A:本程序的main函数开始,到main函数结束 B:本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C:本程序的main函数开始,到本程序文件的最后一个函数结束 D:本程序文件的第一个函数开始,到本程序main函数结束 2 .[单选题]在C语言中,要求运算数必须是整型的运算符是( D ) A: / B: ++ C: != D: % 3 .[单选题]C语言中,逻辑“真”等价于( C ) A:大于零的数 B:大于零的整数 C:非零的数 D:非零的整数 4 .[单选题]若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式为( C ) A:A % 2 == 1 B: ! (A % 2 == 0 ) C: ! (A % 2 ) D:A % 2 5 .[单选题]以下程序的运行结果是( B )。 int main( void ){ int m = 5 ; if ( m ++ > 5 ) printf(“ % d/n”, m); else printf(“ % d/n”, -- m); } A: 4 B: 5 C: 6 D: 7 6 .[单选题]以下对一维整型数组a的正确说明是( D ) 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数组元素的非法引用是( D ) 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 ) A:i * m + j B:j * m + i C:i * m + j - 1 D:i * m + j + 1 9 .[单选题]以下程序的功能是将字符串s中所有的字符c删除,那么空白处缺少的语句为:( A )。 #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中,请为程序中的空白处选择适当的语句。 第一空答案( A ) #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中,请为程序中的空白处选择适当的语句。第二空答案( D ) #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源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( D ) A: extern B:register C:auto D: static 13 .[单选题]以下程序的正确运行结果是( D )。 #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 .[单选题]以下程序的运行结果为( B )。 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/n”,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所示的存储结构,可选用的赋值语句为( 没图 可能是 B或A ) 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),按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。请在空白处为程序选择适当的代码。 第一空答案( B ) #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),按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。请在空白处为程序选择适当的代码。第二空答案(D ) #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: == ’/n’ D: != ’/n’ 19 .[单选题]以下程序的功能是:读入一行字符(如:a,b,… y,z),按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。请在空白处为程序选择适当的代码。第三空答案( B) #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 .[单选题]以下程序的输出结果是( C ) #include #define M 5 #define N M+M main() { int k; k = N * N * 5 ; printf(“ % d/n”,k); } A: 500 B: 125 C: 55 D: 100
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值