目录
第二周:
第三周:
1 执行printf( “ %5s ” , “abcdefg ” ) 后,则输出结果为(B)
A、abcde
B、abcdefg
C、cdefg
D、输出错误信息
2 在c++中实参和形参有3种结合方式,分别为:值传递、引用传递和地址传递。说法是否正确?
A、正确
B 错误
3 以下哪个选项一定可以将flag的第二个bit置0
A、flag&=~2
B、flag|=2
C、flag^=2
D、flag>>=2
4 下列叙述中正确的是( )
5 下列叙述中正确的是( )
6、若有定义语句 int a,b; double x; 则下列选项中没有错误的是( )。
A、 switch (x%2) B、switch((int)x/2.0)
{ {
case 0:a++;break; case 0:a++;break;
case 1:b++;break; case 1:b++;break;
default: a++;b++; default: a++;b++;
} }
{ {
case 0:a++;break; case 0.0:a++;break;
case 1:b++;break; case 1.0:b++;break;
default: a++;b++; default: a++;b++;
} }
7、有以下程序
#include
int f(int x);
int main()
{
int n=1,m;
m=f(f(f(n)));
printf("%d\n",m);
return 0;
}
int f(int x)
{
return x*2;
}
程序运行后的输出结果是( )
A、1 B、2
C、4 D、8
#include
int main()
{
int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},
int *p=a+5,*q=NULL;
*q=*(p+5);
printf("%d %d\n",*p,*q);
return 0;
}
程序运行后的输出结果是(A )
A 运行后报错
B、6 6
C、6 11
D、5 10
char acX[]="abc";
char acY[]={'a','b','c'};
char *szX="abc";
char *szY="abc";
对于以上四个定义,下面叙述错误的是( D)
A acX与acY的内容可以修改
B szX与szY指向相同的地址
C acX占用的内存空间比acY占用的大
D、szX的内容修改后,szY的内容也会被更改
注:函数原型为 void func(char p1[], char p2[]);设定传入的的数组p1大小为80,p2大小为40;
#include
#include
#define N 5
char *mycat(char *s1, char *s2)
{
//数组型
/* int i = 0;
while(s1[i] != '\0') {
i++;
}
int j = 0;
while(s2[j] != '\0') {
s1[i] = s
2[j];
i++;
j++;
}
s1[i] = '\0';
return s1; */
//指针型
char *p = s1; //定义字符型指针p指向s1
while(*s1 != '\0') { //让s1指向'\0'
s1++;
}
while(*s2 != '\0') { //让s2连在s1后
*s1 = *s2;
s1++;
s2++;
}
*s1 = '\0'; //让s1以'\0'结尾
return p;
}
int main()
{
char s1[N];
char s2[N];
fgets(s1, N, stdin);
if(s1[strlen(s1) - 1] == '\n') { // 去掉换行符
s1[strlen(s1) - 1] = '\0';
}
fflush(stdin); //因为上面使用了fgets,这里得清空缓冲区(具体请看gets和fgets函数的区别)
fgets(s2, N, stdin);
if(s2[strlen(s2) - 1] == '\n') { // 去掉换行符
s2[strlen(s2) - 1] = '\0';
fflush(stdin);
}
printf("%s", mycat(s1, s2));
// printf("%s\n%s", s1, s2);
return 0;
}
1、下列的进程状态变化中,哪些是不可能发生的?
A、运行→就绪
B、运行→等待
C、等待→运行
D、等待→就绪
2、栈S最多能容纳4个元素。现在6个元素按A、B、C、D、E、F的顺序进栈,下列哪一个序列不是可能的出栈序列?
A、A、B、C、D、E、F
B、A、F、E、D、C、B
C、C、B、E、D、A、F
D、C、D、B、E、F、A
3、TCP断开连接的四次挥手中,第四次挥手发送的包会包含的标记,最正确的描述是?()
A、FIN
B、FIN,PSH
C、ACK
D、FIN,ACK
4、下面选项中的程序段,没有编译错误的是()
A、char* sp, s[10]; sp = "Hello";
B、char* sp, s[10]; s = "Hello";
C、char str1[10] = "computer", str2[10]; str2 = str1;
D、char mark[]; mark = "PROGRAM";
5、若系统中有5个同类资源,有多个进程均需要使用2个,规定每个进程一次仅允许申请1个,则至多允许几个进程参于竞争,而不会发生死锁?
A、5
B、2
C、3
D、4
6、以下程序段执行后结果是()
1 2 3 4 5 6 7 8 9 10 11 |
#include void main() { short *p,*q; short arr[15]={0}; p=q=arr; p++; printf("%d,",p-q); printf("%d,",(char*)p-(char*)q); printf("%d",sizeof(arr)/sizeof(*arr)); } |
A、1,0,15
B、0,2,1
C、1,1,15
D、1,2,15
7、将物理地址转换为 IP 地址的协议是() 。
A、IP
B、ICMP
C、ARP
D、RARP
8、分析以下函数,该函数的功能是()
1 2 3 4 5 6 7 8 9 10 11 |
void sca_from_file(int a[], int n, char fn[]) { FILE *fp; int i; fp = fopen(fn, "r"); for (i = 0; i < n; i++) { fscanf(fp, "%d", &a[i]); } fclose(fp); } |
A、打开文件fn,从文件中读出n个整数到数组a中
B、打开文件fn,将数组a的n个元素写到文件中
C、打开文件fn,从文件中读出n,再读n个整数到数组a中
D、打开文件fn,将n和数组a的n个元素依次写到文件中
9、后缀式abc+*所代表的表达式为:( )
A、a*(b+c)
B、a*b+c
C、a+b*c
D、(a+b)*c
10、以下正确的说法是( )。
A、用户调用标准库函数前,必须重新定义
B、若已包含标准库头文件及相关命名空间,用户也可以重新定义标准库函数,但是该函数将失去原有含义
C、若已包含标准库头文件及相关命名空间,则系统不允许用户重新定义标准库函数
D、用户调用标准库函数前,不必使用预编译命令将该函数所在文件包括到用户源文件中
11、下面选项中的程序段,没有编译错误的是()
A、char* sp, s[10]; sp = "Hello";
B、char* sp, s[10]; s = "Hello";
C、char str1[10] = "computer", str2[10]; str2 = str1;
D、char mark[]; mark = "PROGRAM";
12、对于以下结构定义,(*p)->str++中的++加在()。
struct { int len; char *str; } *p;
A、指针 str 上
B、指针 p 上
C、str 指向的内容上
D、语法错误
13、如下代码的输出结果是()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
int function2(int a[], int b, int e) { if(e-b<=1) return abs(a[b]-a[e])>=3?a[b]:a[e]; int l = 0, r = 0; l = function2(a, b, b + (e - b) / 2); if (l % 2 == 0) r = function2(a, b + (e - b) / 2 + 1, e); else return l; if (l | r) return l | r; else return r; }
int main() { int a[] = { 10,5,8,4,5,20,2,3 }; cout << function2(a, 0, sizeof(a) / sizeof(1)) << endl; int b[] = { 3,5,8,4,8,30,2,3 }; cout << function2(b, 0, sizeof(b) / sizeof(1)) << endl; return 0; } |
A、15,5
B、10,5
C、20,3
D、其它
14、设有以下程序段,则值为6的表达式是()。
struct st { int n; struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,0 } ,*p;
p=&a[0];
A、p++->n
B、++p->n
C、p->n++
D、(*p).n++
15、补充下面函数代码: 如果两段内存重叠,用memcpy()函数可能会导致行为未定义。 而memmove()函数能够避免这种问题,下面是一种实现方式,请补充代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 |
#include using namespace std; void* memmove(void* str1,const void* str2,size_t n) { char* pStr1= (char*) str1; char* pStr2=(char*)str2; if ( ) { for(size_t i=0;i!=n;++i){ *(pStr1++)=*(pStr2++); } } else{ pStr1+=n-1; pStr2+=n-1; for(size_t i=0;i!=n;++i){ *(pStr1--)=*(pStr2--); } } return ( ); } |
A、pStr1< pStr2 str1
B、pStr1+n < pStr2 str2
C、pStr1+n < pStr2 || pStr2+n
D、pStr2+n