4、下面程序段的运行结果是()
char c[5] = {'a','b','\0','c','\0'}; printf("%s",c);A、'a"b' B、ab C、ab_c D、ab_c_ (其中_表示空格)
A、e3、e1、e4、e2 B、e2、e4、e3、e1 C、e3、e4、e1、e2 D、任意序列
12、某二叉树结点的中序序列为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E,该二叉树对应的树林包括多少棵树()
A、1 B、2 C、3 D、4
13、单链表的每个结点包括一个指针link,它指向该结点的后继结点,现要将指针q指向的新结点插入到指针p指向的单链表结点之后,下面的操作序列中哪一个是正确的?
A、q = p->link; p->link = q->link
B、p->link = q->link; q = p->link
C、q->link = p->link; p->link = q
D、p->link = q; q->link = p->link;
14、函数原型void fun(int a,int b=5,char c='*');下面的调用中不合法的是()
A、fun(4,1) B、fun(99) C、fun(11,2,'a') D、fun(15,'*')
15、以下叙述中不正确的是()
A、在不同的函数中可以使用相同名字的变量
B、函数中的形式参数是局部变量
C、在一个函数内定义的变量只在本函数范围内有效
D、在一个函数内的复合语句中定义的变量在本函数范围内有效(只在复合语句中有效)
16、设有一下宏定义:
#define N 3
#define Y(n) ((N+1)*n)
则执行语句:z=2*(N+Y(5+1))后的z值为()
A、38 B、42 C、48 D、54
17、以下程序程序的运行结果是()
int main(void) { char a[]={"programming"},b[]={"language"}; char *p1,*p2; int i; p1=a,p2=b; for(i=0;i<7;i++) { if(*(p1+i)==*(p2+i)) printf("%c",*(p1+i)); } return 0; }A、gm B、rg C、or D、ga
int a[]={4,0,2,3,1},i,j,t; for(i=1;i<5;i++) { t=a[i]; j=i-1; while(j>=0 && t>a[j]) { a[j+1]=a[j]; j--; } a[j+1]=t; }A、对数组a进行插入排序(升序)
19、以下程序的输出结果是()
#define P 3 int F(int x) { return (P*x*x); } void main() { printf("%d\n",F(3+5)); }A、49
D、77
20、以下代码中,A的构造函数和析构函数分别执行了几次()
A *pa = new A[10];
delete []pa;
A、1、1 B、10、10 C、1、10 D、10、1
21、在顺序表{3、6、8、10、12、15、16、18、21、25、30}中,用二分法查找关键码值11,所需的关键码比较次数是()
A、2 B、3 C、4 D、5
22、若int占2个字节,char 占1个字节,float占4个字节,sizeof(xc)的大小是()
struct stu { union { char b[5]; int bh[2]; }class; char xm[8]; float cj; }xc;A、16 B、18 C、20 D、22
A、A fun(int ); B、A *p; C、int fun(A) D、A Obj;
抽象类不能定义对象。但是可以作为指针或者引用类型使用。
1、写出float x 与零值比较的if语句。
不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。
if(x>0.0000001 && x<-0.0000001)
2、在32位系统中,char str[]="xuelei"; char *p = str; sizeof(str)=() ,sizeof(p)=() ,sizeof(*p)=()
答案分别是: 7、4、1,分别对数组、指针和一个字符类型求大小。。
在空格处填上合适的语句,顺序打印出a中的数字。
答案:a[i/6][(i/3)%2][i%3];这道题目是多维数组的输出问题,这里要考虑的是每维数字的取值顺序问题:第一维,前六次循环都取0,后六次取1,于是i/6可以满足要求;第二维,前3次为0,再3次为1,再3次为0,再3次为1,用量化的思想,i/3把12个数字分为4组每组3个,量化为0、1、2、3,为要得到0、1、0、1我们这里就需要对(0、1、2、3)%2=(0、1、0、1),于是(i/3)%2;最后一维我们需要的是(0、1、2;0、1、2;0、1、2;0、1、2;)我们就填上i%3。
5、以下函数查找一个整数数组中第二大的数,请填空。
const int MINNUMBER = -32767; int find_sec_max(int data[],int count) { int maxnumber = data[0]; int sec_max = MINNUMBER; for(int i = 1;i < count; i++) { if(data[i] > maxnumber) { } else { if(data[i] > sec_max) } } return sec_max; }上面的三个空格处依次应该填上:sec_max = maxnumber; maxnumber = data[i]; sec_max = data[i];
6、下面程序可从1....n中随机输出m个不重复的数,请填空。
knuth(int n,int m) { srand((unsigned)time(NULL)); for(int i = 0;i < n;i++) { if(_________) { cout<<i<<"\n"; ______________ } } }
分别为:rand()%(n-i)<m 和 m--;
7、以下prim函数的功能是分解质因数,请填空。
void prim(int m,int n) { if(m>n) { while(_________) n++; ______________; prim(m,n); cout<<n<<endl; } } void main() { int n = 435234; prim(n,2); }答案分别为:m%n 和 m/=n
8、程序改错。
int fun(vector<int>& val) { copy(val.begin() , val.end() , ostream_iterator<int>(cout,"\n")); ...... } void main() { int a[5] = {1,2,3,4,5}; vector<int> v; copy(a , a + 5 , v.begin()); fun(vector<int>(v)); prim(n,2); }错误的代码和改正后的代码分别为:
10、下面程序的功能是输出数组的全排列,请填空。
void perm(int list[],int k,int m) { if(_______) { copy(list,list+m,ostream_iterator<int>(cout," ")); cout<<endl; return ; } for(int i = k ; i <= m ; ++i) { swap(&list[k] , &list[i]); ______________; swap(&list[k] , &list[i]); } } void main() { int list[] = {1,2,3,4,5}; perm(list,0,sizeof(list)/sizeof(int)-1); }答案分别是: k == m 和 perm(list , k+1 , m)
int main(void) { if( ) printf("Hello "); else printf("World\n"); return 0; }答案:!printf("Hello ")