西工大软微C 兴趣小组笔试题(含答案).doc2011年C++兴趣小组招新笔试试题
班级 姓名 学号 联系电话
C语言部分(60分)
一、选择题(6*2,=12,)
下面能从数组X中复制前n个元素到数组y中,正确的代码是()
y[i]=x[i++];
y[i++]=x[i];
{y[i]=x[i];i++}y[i]=x[i];
i=0; while(i<n)
i=0; while(i<n)
i=0; while(i<n)
for(i=l;i<n;i++)
有这样一段程序
int a=l,b=2;
if( (a++ > b++ ) && b > 2 )
a=b;
}else(
a=(a<b II a>4);
}
printf(”%d”,a);
则最终打印a的值为()
0
1
2
3
有这样一段程序
int a=3;
do(
printf("%d ",a);
}while( a -= 2 );
则最终输出结果为()
3 1
3 1 -1
3
3 1 -1 -3 ...
下列选项中错误的是()
A) 所有的无符号运算都是以2的n次方为模(这里n是结果中的位数),所以没 有所谓的溢出一说。
B) a和b是两个非负整数,一种检测a+b是否溢出的代码是
if( a > INT_MAX -b ) complain();
C) 当一个运宣的结果发生溢出时,做出任何假设都是不安全的。
D) 两个无符号数相加,溢出的后的结果为负。
下列关于关键字static的作用,说法不正确的是()
A) 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有 全局可见性。
B) static变量具备持久性和默认值0;
C) static变量使整形(int)变量初始化为0,但是对浮点型则不一样,其初始 化值不能确定。
D) static变量存放在静态存储区;
C语言程序,头文件中不应该包含的内容为()
A) 函数原型
B) 结构声明
C) 函数定义
D) 宏定义
二、填空题(5*2,=10,)
阅读下面代码片段
struct as
{
int a;
char c;
};
union au
{
char c; int i;
};
请回答:
sizeof(as)=
sizeof(au)=
阅读下面代码片段 char cArray[] = { 'g', 'o', 'o', 'd', T, U, 'c', k};
char *cpointer = "goodluck";
请回答:
sizeof(cArray) is
sizeof(cpointer) is
strlen(cpointer) is
三、简答题(5*4,=20,)
包含头文件时,通常include后面跟着尖括号,如#include <>。但也会
跟着双引号,请简述二者的区别(#include <...> #include
main函数中return 0; return 1;的区别是什么?
关键词NULL(空指针)是一个在c库中的宏定义。尝试写出该宏定义。
请简述数组名和指针的区别
请简述自动变量(auto),寄存器变量(register),易失变量(volatile,选做), 静态变量(static),外部变量(extern),以及restrict (可选)的区别。
四、程序题(2 *9, =18,)
以下是一段冒泡排序算法,请完成空白内容
void bubblesort(int *a, int num) /*num is the number of the array*/
{
int temp;
for(int i=0; i<num; i++)
{
for(int j=0; j<; j++)
{
if(a[j] > a[j+l])
}
}
}
}
对于这个冒泡排序算法,总会对这个数组进行n趟筛选。但是n趟并不是必须的, 比如说当执行了 i趟(i<n),数组就已经排好序了,剩下的n-i趟只是无聊的重复。 请提出改进意见,提高效率,避免这种无聊的重复。
第一个二分搜索算法早在1946年就出现了,但是第一个完全正确的二分搜索 算法却直到1962年才出现,之间竟有16年的时间。可现在需要请你在这场考试 中写出一个正确的二分搜索算法。
/* a是按升序排序后的数组,data是要搜索的元素,n是数组的长度*/
int BinarySearch(int a[], int data, int n)
}/*end BinarySearch */
C++语言部分(40分)
一、填空题(7*2,=14,)
阅读下面代码片段
西工大软微C 兴趣小组笔试题(含答案) 来自淘豆网m.daumloan.com转载请标明出处.