1。以下两个程序哪个的performance高,并解释为什么。
a) extern int foo(void);
int main()
{ int i; for(i=0;i<10000;i++)
foo();
return i;
}
b) extern int foo(void); int i; int main() { for(i=0;i<10000;i++) foo(); return i; }
2。C程序写结果。
#include <stdio.h>
#define ADD(p) {p++;(*p)++;}
Add(int *p) {p++;(*p)++;}
int a[]={0,1,2};
int main()
{
int *p=a;
ADD(p)
ADD(p)
printf("%d,%d,%d\n",a[0],a[1],a[2]);
p=a;
Add(p);
Add(p);
printf("%d,%d,%d\n",a[0],a[1],a[2]);
}
3。说明下面的的表达有没有不同,如果不同,请说明不同在哪里。
char* s1="hello";
char s2[]="world";
4.说明下面程序的作用。
func(char*a,char*b)
{
while(*a++=*b++);
return;
}
5.printf可以接受多个参数,为什么,请写出printf的原型。
6.说明malloc和calloc的区别。
7, 三组程序,找出错误,如果有的话.
1>a.c long temp[255]; b.c extern *temp;
2>a.c long temp[255]; b.c extern temp[256];
3>a.c long temp[255]; b.c extern temp[];
8, printf("0x%x", (&0)[-1]); 请问打印了什么?
9. a=5,b=5 问下式的执行结果: (a++)==b?a:b
10. a[]={1,2,3,4,5} *p={a+3,a+2,a+1,a} **q=p 问下式执行结果: *(a[1]+1)+**(q+2)
11. 写出表达式表示出sin(360 度)/[(x^2+y^2)的平方根
12. 如何把a 数组的前n个字符拷贝到b数组去(字符数组)
13、有数组a[M][N],问下面那种算法效率高
(a)for(int i=0;i<M;i++)
for(int j=0;j<N;j++)
xxx=a[i][j].........
(b)for(int i=0;i<N;i++)
for(int j=0;j<M;j++)
xxx=a[j][i].........
14、关于递归调用的一个题:
int foo(int i)
{
if(i==0) return 0;
reurn foo(i/2)+1;
}
问foo(4)=?
15、构造函数都不定义返回类型,对吗?
16、拷贝构造函数在什么情况下被调用?
17、1000!有几位数,为什么
18、F(n)=1 n>8 n<12
F(n)=2 n<2
F(n)=3 n=6
F(n)=4 n=other
使用+ - * /和sign(n)函数组合出F(n)函数
sign(n)=0 n=0
sign(n)=-1 n<0
sign(n)=1 n>0
评论