00:00:00
嵌入式模拟面试e
录音中...
请认真作答,写好姓名
*
您的姓名:
*
1、对for(表达式1; ;表达式3)可理解为()?
A、for(表达式1;0;表达式3)
B、for(表达式1;1;表达式3)
C、for(表达式1;表达式1;表达式3)
D、for(表达式1;表达式3;表达式3)
*
2、下面的for循环几次()?for(x=0,y=10; (y>0)&&(x<4); x++, y--);
A、1
B、2
C、3
D、4
*
3、下面程序的输出结果是()?int i,j,x=0;for(i=0;i<2;i++){ x++; for(j=0; j<=3; j++) { if(j%2) continue; x++; } x++;}printf("x=%d\n",x);
A、4
B、6
C、8
D、10
*
4、设有程序段int k=10; while (k=0) k=k-1;则下面描述中正确的是()?
A、while循环执行10次
B、循环是无限循环
C、循环体语句一次也不执行
D、循环体语句执行一次
*
5、下面程序段的运行结果是()?int x=0,y=0;while(x<15){ y++; x+=++y;}printf("%d,%d",y,x);
A、20,8
B、8,20
C、20,6
D、6,20
*
6、int i=1;执行语句while (i++<4);后变量i的值()?
A、3
B、4
C、5
D、6
*
7、下面程序最后一次输出结果为()?int x=5;doprintf("%d,",x-=4);while(!(--x));
A、-4
B、1
C、5
D、-5
*
8、已知int x=12,y=3;执行下述程序后输出的结果为()?do{ x/=y;}while(x>y);printf("%d,%d\n", y, x);
A、1,3
B、3,1
C、3,4
D、4,3
*
9、若有定义和语句:int **pp, *p, a = 10, b =20; pp = &p; p = &a; p = &b; printf("%d,%d\n", *p, **pp);则输出结果是()?
A、10,20
B、10,10
C、20,10
D、20,20
*
10、有如下程序段int *p, a = 10, b = 1;p = &a;a = *p+b;执行该程序段后,a的值为()?
A、10
B、11
C、12
D、13
*
11、int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; }求函数返回值,输入x=9999;()?
A、7
B、8
C、9
D、10
*
12、写出下列程序的main函数输出结果()?void prn(int a, int b, int c, int max, int min){ max=(max=a>b?a:b)>c?max:c; min=(min=a<b?a:b)<c?min:c; printf("max=%d,min=%d\n",max,min);}int main(){ int x,y; x=y=0; prn(19,23,-4,x,y); printf("max=%d,min=%d\n",x,y); }
A、max=23,min=-4
B、max=-4,min=23
C、max=19,min=-4
D、max=0,min=0
*
13、下面程序的输出结果是()?int func(int a, int b){ int c; c=a+b; return c;}int main( ){ int x=6,y=7,z=8,r; r=func((x--, y++, x+y), z--); printf("%d\n", r); return 0;}
A、21
B、13
C、14
D、15
*
14、x的值为多少()?int f(int b[], int n){ int i; int r=1; for(i=0; i<=n; i++) r=r*b[i]; return r;}int main( ){ int x, a[ ]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d\n", x); return 0;}
A、720
B、120
C、24
D、6
*
15、下列程序段的运行结果是()?int i=1,a[]={1,5,10,9,13,7};while(a[i]<=10) a[i++]+=2;for (i=0;i<6;i++) printf("%d,",a[i]);
A、1,7,12,11,13,7,
B、1,7,11,12,13,7,
C、1,7,12,9,13,7,
D、1,7,12,11,15,7,
*
16、下面程序的输出()?void fun(int x, int y, int *cp, int *dp){ *cp = x + y; *dp = x - y;}int main(void){ int a, b, c, d; a = 30; b = 50; fun(a, b, &c, &d); printf("%d,%d\n", c, d); return 0;}
【多选题】
A、-20
B、30
C、50
D、80
*
17、若有以下定义和语句:double r = 99, *p = &r;*p = r;则以下正确的叙述是()?
【多选题】
A、以上两处的*p含义相同,都说明给指针变量p赋值
B、在"double r=99, *p = &r;"中,把r的地址赋值给了p指针
C、语句"*p=r;"把变量r的值赋给指针变量p
D、语句"*p=r;"取变量r的值放回指针p指向的存储空间中
*
18、若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是()?
【多选题】
A、*p = &a;scanf("%ld", p);
B、p = (long *)malloc(8);scanf("%ld", p);
C、scanf("%ld", p = &a);
D、scanf("%s", &a);
*
19、若有定义int a[3][5],i,j;(且0≤i<3,0≤j<5)则a[i][j]的地址正确表示是()?
【多选题】
A、&a[i][j]
B、a[i]+j
C、*(a+i)+j
D、*(*(a+i)+j)
*
20、若有以下的定义:int t[3][2];不能正确表示t数组中的地址表达式是()?
【多选题】
A、&t[3][2]
B、t[3]
C、t[1]
D、t[2] + 1
*
21、下面x的值是多少?int x = 0, y = 0, z = 2;int *p = &z;x = sizeof(*p);y = x/*p;
*
22、下面y的值是多少?int x = 0, y = 0, z = 2;int *p = &z;x = sizeof(*p);y = x/*p;
*
23、下面*p的值是多少?int x = 0, y = 0, z = 2;int *p = &z;x = sizeof(*p);y = x/*p;
24、int a[10] = {11,22,33,44,55,66,77,88,99,0};int *p,*q;p=a;q=&a[2];a[q-p]=?值为多少
*
*
25、设int a=0;执行表达式(a=1)&&(a=-1)&&(a=2)后,a的值是
*
26、下面程序的输出结果是?char str[100] ="How do you do";strcpy( str + strlen(str)/2, "es she");printf("%s\n", str);
27、下面程序段运行结果是?int i,j;char str[ ]="1234567",k;for ( i=1, j=strlen(str)-2; i<j; i++, j--) { k=str[i]; str[i]= str[j]; str[j]=k; } printf("str = %s\n", str);
*
28、下面程序段的运行结果是?char c[5]={'a','b','\0','c','\0'}; printf("%s",c);
*
*
29、下面程序段的运行结果是?char s[]="ABC"; int i; for(i=0;i<3;i++) printf("%s",&s[i]);
30、程序中输入apple<CR> cat <CR>,输出结果是?int main(void){ char *s, c[80]; s = c; scanf("%s", s); while ((*(++s))!='\0') { if (*s == 'a') break; else { s++; scanf("%s", s); } } printf("%s\n", s);}
*
31、下列程序的输出结果是?int main(void){ char b[30],*chp; strcpy(&b[0],"CH"); strcpy(&b[1],"DEF"); strcpy(&b[2],"ABC"); printf("%s \n", b);}
*
32、以下程序的输出结果是?int main
{ char *p1,*p2,str[50]="ABCDEFG"; p1="abcd"; p2="efgh"; strcpy(str+1,p2+1); strcpy(str+3,p1+3); printf("%s",str);}
*
33、以下为ubuntu64bits操作系统的程序请计算出下列sizeof的值?void func(char str[100]){ printf("sizeof(str) = %ld\n", sizeof(str));}
*
34、以下为ubuntu64bits操作系统的程序请计算出下列sizeof的值?void func(void *p){ printf("sizeof(p) = %ld\n", sizeof(p));}
*
35、以下为ubuntu64bits操作系统的程序请计算出下列sizeof的值?int main(void){ char str[100] = "hello embsky!"; printf("sizeof(str) = %ld\n", sizeof(str));}
*
36、以下为ubuntu64bits操作系统的程序请计算出下列sizeof的值?int main(void){ char str[100] = "hello embsky!"; char *p = str; printf("sizeof(p) = %ld\n", sizeof(p));}
*
37、以下为ubuntu64bits操作系统的程序请计算出下列sizeof的值?int main(void){ char str[100] = "hello embsky!"; char *p = str; char **pp = &p; printf("sizeof(pp) = %ld\n", sizeof(pp));}
*
38、执行以下程序段后,m的值为?int a[2][3] = {{1, 2, 3}, {4, 5, 6}};int m, *p;p = &a[0][0];m = (*p)*(*(p+2))*(*(p+4));
*
39、阅读以下程序,若程序运行输出64,则输入多少?int p(int n){ int z,m=n-1; for(z=1;m>0;m--) z*=n; return z;}int main
{ int n; scanf("%d", &n); printf("%d\n", p(n));}
*
40、写出程序的结果?int funa(int *a) { a[0] ++; } int funb(int b[]) { b[1] += 5; } main { int a[5] = {2,3,4,5,6}; int b[5] = {2,3,4,5,6}; int *p; p = &a[0]; (*p)++; funa(p); for(int i = 0; i<3; i++) printf("%d,",a[i]); p = &b[1]; funb(p); for(i = 0; i<3; i++) printf("%d,",b[i]); }
*
*
41、下列程序段不是死循环s=3379; while(s++%2+s%2) s++;
对
错
*
42、下列程序段是死循环i=100; while(1) { i=i%100+1; if(i>100) break; }
对
错
*
43、下列程序段不是死循环int k=0; do { k=k+1; } while(k>=0);
对
错
*
44、在64bit环境中,设void *p = malloc(100),sizeof(p)的结果是8
对
错
*
45、下列程序段的输出结果是4int i=0;int f(int x){ static int k = 1; x+=k++; return x;}int main(){ i+=f(f( 1 )); printf("%d\n", i );}
对
错
*
46、以下程序运行结果是4int fun3(int x){ static int a=3; a+=x; return a;}int main(){ int k=2, m=1, n; n=fun3(k); n=fun3(m); printf("%d\n", n);}
对
错
*
47、下面程序的输出结果是360int w=3;int main(void){ int w = 10; int ret = 0; ret = fun(5)*w; printf("%d\n", ret);}int fun(int k){ if(k==0) return(w); return (fun(k-1)*k);}
对
错
*
48、下面程序的运行结果hELLO!char s[80], *sp = "HELLO!";sp = strcpy(s,sp);s[0] = 'h';printf("%s\n",sp);
对
错
*
49、下列程序的输出结果是xycdBCDint main(void){ char*p1,*p2,str[50]="xyz"; char str2[50] = "abcd"; p1=str2; p2="ABCD"; strcpy(str+2,strcat(p1+2,p2+1)); printf("%s",str);}
对
错
*
50、以下函数结果为j = 4int func(int i){ static int count = 0; count = count + 1; return count;}int main(){ int i, j; for(i = 0; i <= 5; i++) j = func(i); printf("j = %d\n", j);}
对
错
51、请问运行Test函数会有什么样的结果?void GetMemory(char *p){p = malloc(100;)} void Test(void){char *ptr; GetMemory(ptr); strcpy(ptr, "hello world");}
*
*
52、标准io和文件io有什么区别和联系
*
53、解释Linux中的流程管理系统调用(如何创建替换收尸终止进程)
*
54、下面的代码输出是什么,为什么?
void foo(void)
{
unsigned int a = 6;
int b = -20;
(a+b > 6) ? puts("> 6") : puts("<= 6");
}
【多选题】
>6
<6
*
55、请简述int * const p 和 const int *p的区别
*
56、请完成功能把字符串转换成整型数的一个函数,如果 nptr不能转换成 int 或者 nptr为空字符串,那么将返回 0int myfunc(const char *nptr);
*
57、有两个房间,A房间中分别有A B C三个开关,分别控制B房间中的甲 乙 丙,三个电灯如果两个房间只有各进一次的机会,且无任何工具,如何知道哪个开关控制哪个电灯
*
58、在多数情况下,系统服务会作为守护进程运行,什么是守护进程
如果创建守护进程?
*
59、./a.out > ./file 2>&1 和./a.out 2>&1 > outfile 有区别吗?如果有简述不同
*
60、写一段代码实现多线程并发读写文件如何同步(只写核心代码)
字体大小
嵌入式模拟面试e
复制