1、C语言面试题精选学号:2009121041姓名:曹颖璐本题出自:华为C语言面试题题目:请写出下列代码的输出内容#include stdio.hint main()int a,b,c,d;a = 10;b = a+;c = +a;d = 10 * a+;printf(b,c,d:%d,%d,%d,b,c,d);return 0; 答:10,12,120学号:2009121042姓名:丁婷本题出自:雪花啤酒有限公司题目:将一个字符串“hello,world”逆序输出。答案:#include#include int main() char str = hello,world; int len = s
2、trlen(str); char t; for (int i = 0; i len / 2; i+) t = stri; stri = strlen-i-1; strlen-i-1 = t; printf(%s, str); return 0;学号:2009121043姓名:杨柳本题出自:高等教育出版社题目:用指针的方法,将字符串“ABCD”前后对调显示。答案:#include#include#includeint main(void) char str = ABCD1234efgh; int length = strlen(str); char *p1 = str; char *p2 = s
3、tr + length - 1;while (p1 p2) char c = *p1; *p1 = *p2; *p2 = c; +p1; -p2;printf(str now is %sn, str);system(pause);return 0;getch();学号:2009121044姓名:郭茜敏本题出自:IBM写出下面程序的输出结果#includevoid GetMemory ( char *p , int num) *p = (char *)malloc(num); int main() char *str = NULL; GetMemory( &str , 100); strcpy(
4、str , hello); free(str); if ( str != NULL) strcpy( str , world); printf(n str is %s, str); getchar(); 答案:str is world 学号:2009121045姓名:王丹公司:百度知道C语言面试题题目:在一个正整数序列中求和最大的非相邻子序列(序列任两元素在原序列里都不相邻) #include int cal ( int h1, int length,int b);int main ()Unsigned int n=1,3,2,4,7,9,6;int length =7;printf (%d,
5、 cal (-2,length,n) );return 0;int cal ( int h1, int length , int b)if (length-h1 = 1)return b h1;if (length-h1 = 2)return (b h1 b h1 + 1 ? bh1 : bh1 + 1);if (length-h1 = 3)return (bh1 + bh1+2 bh1 + 1 ? bh1 + bh1 + 2 : bh1 + 1);if (h1 = 0) return b h1 + (cal (h1 + 2,length,b) cal (h1 + 3,length,b) ?
6、cal (h1 + 2,length,b) : cal(h1+3,length,b);elsereturn (cal (h1 + 2,length,b) cal (h1 + 3,length,b) ? cal (h1 + 2,length,b) : cal (h1 + 3,length,b); 学号:2009121046姓名:陈凡题目:实现行程压缩,将重复的数据用重复次数来表达,例如:aaabbbccc-a3b3c3,abcd-abcd,aabcdd-a2bcd2,在代码实现过程中要考虑解压。答案:#includeintmain(void)charch100,ch1100;voidf1(cha
7、r*);voidf2(char*,char*);gets(ch);f1(ch);f2(ch,ch1);puts(ch1);return0;voidf1(char*p1)char*p2,c;intlable,n;n=1;lable=0;while(*p1!=0)c=*p1;if(c=*(p1+1)lable=1;n+;if(n=2)p2=p1;elseif(lable=1)*(p2+1)=n+0;n=1;lable=0;p1+;voidf2(char*p,char*p1)inti,j,n;i=0;j=0;while(*(p+i)!=0)if(*(p+i)=2&*(p+i)=9)*(p1+j+)=
8、*(p+i);n=*(p+i)-0;i+=n-1;*(p1+j+)=*(p+i+);else*(p1+j)=*(p+i);j+;i+;*(p1+j)=0;学号:2009121047姓名:孙晴本题出自:百度知道搜索C语言面试题题目:求符合指定规则的数。 给定函数d(n) = n n的各位之和,n为正整数,如 d(78) = 78 7 8=93。 这样这个函数 可以看成一个生成器,如93可以看成由78生成。 定义数A:数A找不到一个数B可以由d(B)=A,即A不能由其他数生成。现在要写程序,找出 1至10000里的所有符合数A定义的数。 输出: 1 3 #includeint f10001;int
9、 main() int s , i , n , t ; for ( n = 0 ; n = 10000 ; n+) s = t = n; while(t) s += t % 10; t/=10; fs = 1; for ( i = 1 ;i = 10000 ; i+) if ( !fi ) printf ( %d n , i );学号:2009121048姓名:李冰川本题出自:华为题目:请写出下面该程序的运行结果。#include int sum (int a)auto int c = 0;static int b = 3;c = c + 1;b = b + 2;return(a + b +
10、c);int main(void)int i;int a = 2;for(i = 0; i 5; i+)printf(%dn, sum(a);答案: 8 , 10 , 12 , 14 , 16学号:2009121049姓名:陈远凯本题出自:题目:同构数,一个数,如果它出现在它的平方数的尾部,就称它为同构数,如5它们的平方是25。现在请写出一个程序,求出从2999之间的同构数。答案:#include #include void main()long int a, b, i, j, f = 0, d;/*定义变量*/printf(正在计算.n);/*提示*/for (i = 2;i = 999;i
11、+)/*循环*/a = i * i;for(j = 1;j = 1; n-)/n为瓶子有个数120刚好20平i+; /i为空平个数m = i;if(m % 2 = 0)n+;printf(%d, i);学号:2009121051姓名:杨冰佳本题出自:成都某知名通讯公司题目:用指针的方法把一字符串倒序输出,如“abcd”倒序后变为“dcba”答案:方法1:int main()char* src = hello,world;int len = strlen(src);char* dest = (char*)malloc(len+1);/要为0分配一个空间char* d = dest;char* s
12、 = &srclen-1;/指向最后一个字符while( len- != 0 )*d+=*s-;*d = 0;/尾部要加0printf(%sn,dest);free(dest);/ 使用完,应当释放空间,以免造成内存汇泄露return 0;方法2:#include #include main()char str=hello,world;int len=strlen(str);char t;for(int i=0; ilen/2; i+)t=stri; stri=strlen-i-1; strlen-i-1=t;printf(%s,str);return 0;学号:2009121052姓名:付宇
13、本题出自:美资公司题目:利用“正多边形逼近的方法”求圆周率的近似值。思路如下:答案如下:#include #include int main(void)double e = 0.1, b = 0.5, c , d;long int i;for(i = 6; ;i * = 2)d = 1.0 - sqrt(1.0 b * b);b = 0.5 * sqrt(b * b + d * d);if(2 * i * b i * e 1e - 15) break;e = b;printf(“pai=%.15lfn”, 2 * i * b);printf(“the number of edges of re
14、quired polygon: %ldn”, i);学号:2009121053姓名:黄运题目出自:雅虎面试题题目:找出两个字符串中最大公共子字符串,如abccade,dgcadde的最大子串为cad答案:int GetCommon(char *s1, char *s2, char *r1, char *r2) int len1 = strlen(s1); int len2 = strlen(s2); int maxlen = 0; for(int k = 0;k len1;k+) if(s1k = s2j) int as = k, bs = j, count = 1; while(as + 1
15、 len1&bs + 1 maxlen) maxlen = count; *r1 = s1 + k; *r2 = s2 + j; 学号:2009121054姓名:陈斌本题出自:双汇火腿肠有限公司题目:请找出下面代码中的所有错误说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”#includestring.hint main(void)char *src = hello,world;char *dest = NULL;int len = strlen(src);dest = (char*)malloc(len);char* d = dest;char* s = srclen;
16、while (len-! = 0)d+ = s-;printf (%s, dest);return 0;答案: #includestdio.h#includestring.hint main(void)char* src = hello,world;int len = strlen(src);char* dest = (char*)malloc(len+1);/要为0分配一个空间char* d = dest;char* s = &srclen-1;/指向最后一个字符while (len- != 0 )*d+ = *s-;*d = 0;/尾部要加0printf(%sn, dest);free(d
17、est);/ 使用完,应当释放空间,以免造成内存汇泄露return 0;学号:2009121055姓名:薛腾飞本题出自:IBM题目:In the following code segment what will be the result of the function, value of x , value of yunsigned int x = -1;int y;y = 0;if (x = y)printf (same);elseprintf (not same);a) same, MAXINT, -1b) not same, MAXINT, -MAXINTc) same , MAXUN
18、IT, -1d) same, MAXUNIT, MAXUNITe) not same, MAXINT, MAXUNIT答案:(a)学号:2009121056姓名:徐强本题出自:IBM题目:Output of the following program is int main(void)int i = 0;for (i = 0; i 20; i+)Switch (i)case 0:i += 5;case 1:i += 2;case 5:i += 5;default:i += 4;break;printf(%d, i);return 0;a) 0,5,9,13,17b) 5,9,13,17c) 1
19、2,17,22d) 16,21e) Syntax error答案:(d)学号:2009121057姓名:曹高山本题出自:华为面试题题目:写出下列程序运行结果:#include int inc ( int a ) return ( +a ); int multi ( int * a , Int * b , int * c ) return ( * c = * a * * b ) ; typedef int ( FUNC1 ) ( int in ) ; typedef int ( FUNC2 ) ( int * , int * , int * ); void show ( FUNC2 fun ,
20、int arg1 , int * arg2 ) INCp = & inc; int temp = p ( arg1 ) ; fun ( & temp , & arg1 , arg2 ); printf ( % d n , * arg2 ); main( ) int a ; show ( multi , 10 , & a ); return 0; 答案:110学号:2009121058姓名:张夏霆本题出自:IBM题目:What will be the result of the following program?main()char p=String;int x=0;if(p=String)p
21、rintf(Pass 1);if(psizeof(p)-2=g)printf(Pass 2);elseprintf(Fail 2);elseprintf(Fail 1);if(psizeof(p)-2=g)printf(Pass 2);elseprintf(Fail 2);a) Pass 1, Pass 2b) Fail 1, Fail 2c) Pass 1, Fail 2d) Fail 1, Pass 2e) syntax error during compilation答案: d /如果是char p =string 那么p=string是错的,当是char* p=string;p=str
22、ing却是对的学号:2009121059姓名:李华本题出自:IBM题目:What will the following program do?void main()int i;char a=String;char *p=New Sring;char *Temp;Temp=a;a=malloc(strlen(p) + 1);strcpy(a,p); /Line number:9/p = malloc(strlen(Temp) + 1);strcpy(p,Temp);printf(%s, %s),a,p);free(p);free(a); /Line number 15/a) Swap conte
23、nts of p & a and print:(New string, string)b) Generate compilation error in line number 8c) Generate compilation error in line number 5d) Generate compilation error in line number 7e) Generate compilation error in line number 1答案:(b)学号:2009121060姓名:张孝溢本题出自:上海赛服固网络科技有限公司题目:分析一下这段代码#include#includevoi
24、d getmemory(char*p)p = (char*)malloc(100);strcpy(p, hello world);int main()char *str = NULL;getmemory(str);printf(%sn, str);free(str);return 0;答案:程序崩溃,getmemory中的malloc 不能返回动态内存, free() 对 str操作很危险getmemory中p是形参,是一个指针变量,getmemory(str)调用后,传入的是指针变量保存的对象地址,p=(char*)malloc(100)实际上是把申请的动态内存空间的首地址付给P指向的地址(
25、即str指向的地址null),这个是错误的。应该修改成指向指针的指针void getmemor(char*p),这样malloc返回的地址付给*p(即str变量本身)。学号:2009121061姓名:吴岭西本题出自:华为题目:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba答案:#includestring.h int main(void) char*src = hello,world; char*dest = NULL; intlen = strlen(src); dest = (char*)malloc(len); char*d = dest; char*s = srclen
26、; while(len-! = 0) d + = s -; printf(%s,dest); return 0; 学号:2009121062姓名:刘文本题出自:华为面试题题目:编程实现:1元钱能买一瓶汽水,喝完后两个空瓶可以换一瓶汽水。问:你有20元钱,最多可以喝到几瓶汽水?答案:#include int num(int n) int m=0; int flag=0; while(n) n-;m+;flag+; if(flag=2) flag=0;n+; return m; main() printf(%d,num(20); 学号:2009121063姓名:巫尚书本题出自:中国人民银行题目:写
27、出下列代码的输出内容答案:#includeint inc(int a)return(+a);int multi(int*a,int*b,int*c)return(*c=*a*b);typedef int(FUNC1)(int in);typedef int(FUNC2) (int*,int*,int*);void show(FUNC2 fun,int arg1, int*arg2)INCp=&inc;int temp =p(arg1);fun(&temp,&arg1, arg2);printf(%dn,*arg2);int main()int a;show(multi,10,&a);retur
28、n 0;答:1105学号:2009121064姓名:刘绪本题出自:华为公司题目:请编写一个 C 函数,该函数将一个字符串逆序答案:void AntitoneValue(char* father, char* child) int i; char source100; int j = 0; while(fatherj) /放入source,j为长度 sourcej = fatherj; j+; if(j 99) return; sourcej = 0; for(i=0; ij; i+) childi = sourcej-i-1; /反序 childi = 0; 学号:2009121065姓名:李
29、晋本题出自:上海文强实业有限公司题目:1元钱能买一瓶汽水,喝完后两个空瓶可以换一瓶汽水。问:你有20元钱,最多可以喝到几瓶汽水?#include int num(int n) int m=0; int flag=0; while(n) n-;m+;flag+; if(flag=2) flag=0;n+; return m; main() printf(%dn,num(20); 学号:2009121066姓名:姚建本题出自:华为题目:在一个正整数序列中求和最大的非相邻子序列(序列任两元素在原序列里都不相邻)答案:#include int cal(int h1,int length,int b);
30、int main()unsigned int n=1,3,2,4,7,9,6;int length=7;printf(%d,cal(-2,length,n);return 0;int cal(int h1,int length,int b)if (length-h1=1)return bh1;if (length-h1=2)return (bh1bh1+1?bh1:bh1+1);if (length-h1=3)return (bh1+bh1+2bh1+1?bh1+bh1+2:bh1+1);if (h1=0) return bh1+(cal(h1+2,length,b)cal(h1+3,leng
31、th,b)?cal(h1+2,length,b):cal(h1+3,length,b);elsereturn (cal(h1+2,length,b)cal(h1+3,length,b)?cal(h1+2,length,b):cal(h1+3,length,b);学号:2009121068姓名:任彬本题出自:华为题目:请找出下面代码中的所有错误(说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”)1、#includestring.h2、main()3、4、 char*src=hello,world;5、 char* dest=NULL;6、 int len=strlen(sr
32、c);7、 dest=(char*)malloc(len);8、 char* d=dest;9、 char* s=srclen;10、 while(len-!=0) 11、 d+=s-;12、 printf(%s,dest);13、 return 0;14、 答案:int main()char* src = hello,world;int len = strlen(src);char* dest = (char*)malloc(len+1);/要为0分配一个空间char* d = dest;char* s = &srclen-1;/指向最后一个字符while( len- != 0 )*d+=*
33、s-;*d = 0;/尾部要加0printf(%sn,dest);free(dest);/ 使用完,应当释放空间,以免造成内存汇泄露return 0;学号:2009121069姓名:陈伟本题出处: 深圳华为技术有限公司题目: 写一函数 int fun(char *p)判断字符串是否为回文,是返回1,不是返回0,出错返回-1答案:int fun (char *p)6 N0 h b* e) |1 a: l& 4 , A7 int I = 0, len = 0, flag = 0;& W3 R8 K% w% _& k while (*p) != 0)/ E) U; . H$ ; o/ C p+; l
34、en+; bj8 3 r$ g4 I, Y4 Qif (len = 0)return flag =- 1;5 D* K L3 K2 |8 i) 5 q: h# K1 ip = p - len;for (i = 0; i = len/2; i+): S Y% . _. h9 n% O9 L& : 4 % |Iif (p! = plen - 1 - i)/ A+ K. G/ Wg# u return flag = 0;3 NQ6 : J9 |; M, E# y% |4 w; j7 a A2 ireturn flag = 1;+ J* i& z& X5 O9 学号:2009121070姓名:贺建光本
35、题出自:华为题目:用变量a给出下面的定义一个整型数(An integer)一个指向整型数的指针(A pointer to an integer)一个指向指针的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)一个有10个整型数的数组(An array of 10 integers)一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers)一个指向有10个整型数数组的指针(An pointer to an array of 10 integers)一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(An arr