收藏 分销(赏)

C语言2010华为网络面试题汇总2.doc

上传人:快乐****生活 文档编号:3066163 上传时间:2024-06-14 格式:DOC 页数:30 大小:129.50KB 下载积分:12 金币
下载 相关 举报
C语言2010华为网络面试题汇总2.doc_第1页
第1页 / 共30页
C语言2010华为网络面试题汇总2.doc_第2页
第2页 / 共30页


点击查看更多>>
资源描述
C语言面试题精选 学号:2009121041 姓名:曹颖璐 本题出自:华为C语言面试题 题目:请写出下列代码的输出内容 #include "stdio.h" int 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<stdio.h> #include <string.h> int main() { char str[] = "hello,world"; int len = strlen(str); char t; for (int i = 0; i < len / 2; i++) { t = str[i]; str[i] = str[len-i-1]; str[len-i-1] = t; } printf("%s", str); return 0; } 学号:2009121043 姓名:杨柳 本题出自:高等教育出版社 题目:用指针的方法,将字符串“ABCD”前后对调显示。 答案: #include<stdio.h> #include<string.h> #include<dos.h> int main(void) { char str[] = "ABCD1234efgh"; int length = strlen(str); char *p1 = str; char *p2 = str + length - 1; while (p1 < p2) { char c = *p1; *p1 = *p2; *p2 = c; ++p1; --p2; } printf("str now is %s\n", str); system("pause"); return 0; getch(); } 学号:2009121044 姓名:郭茜敏 本题出自:IBM 写出下面程序的输出结果 #include<stdio.h> void GetMemory ( char **p , int num) { *p = (char *)malloc(num); } int main() { char *str = NULL; GetMemory( &str , 100); strcpy(str , "hello"); free(str); if ( str != NULL) { strcpy( str , "world"); } printf("\n str is %s", str); getchar(); } 答案: str is world 学号:2009121045 姓名:王丹 公司:百度知道——C语言面试题 题目:在一个正整数序列中求和最大的非相邻子序列(序列任两元素在原序列里都不相邻) #include <stdio.h> 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", 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] ? b[h1] : b[h1 + 1]); if (length-h1 == 3) return (b[h1] + b[h1+2] > b[h1 + 1] ? b[h1] + b[h1 + 2] : b[h1 + 1]); if (h1 >= 0) return b [h1] + (cal (h1 + 2,length,b) > cal (h1 + 3,length,b) ? cal (h1 + 2,length,b) : cal(h1+3,length,b)); else return (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,在代码实现过程中要考虑解压。 答案: #include <stdio.h> int main(void) {     char ch[100], ch1[100];     void f1(char *);     void f2(char *, char *);     gets(ch);     f1(ch);     f2(ch, ch1);     puts(ch1);     return 0; } void f1(char *p1) {     char *p2, c;     int lable, n;     n = 1;     lable = 0;     while (*p1 != '\0') {         c = *p1;         if (c == *(p1+1)) {             lable = 1;             n++;             if (n == 2)                 p2 = p1;         } else {             if( lable == 1)                 *(p2+1) = n + '0';             n = 1;             lable = 0;         }         p1++;     } } void f2(char *p, char *p1) {     int i, j, n;     i = 0;     j = 0;     while (*(p+i) != '\0') {         if(*(p+i) >= '2' && *(p+i) <= '9') {             *(p1+j++) = *(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 #include<stdio.h> int f[10001]; int main() { int s , i , n , t ; for ( n = 0 ; n <= 10000 ; n++) { s = t = n; while(t) { s += t % 10; t/=10; } f[s] = 1; } for ( i = 1 ;i <= 10000 ; i++) if ( !f[i] ) printf ( " %d \n " , i ); } 学号:2009121048 姓名:李冰川 本题出自:华为 题目:请写出下面该程序的运行结果。 #include <stdio.h> int sum (int a) { auto int c = 0; static int b = 3; c = c + 1; b = b + 2; return(a + b + c); } int main(void) { int i; int a = 2; for(i = 0; i < 5; i++) { printf("%d\n", sum(a)); } } 答案: 8 , 10 , 12 , 14 , 16 学号:2009121049 姓名:陈远凯 本题出自:< 哈尔滨工大集团股份有限公司面试> 题目:同构数,一个数,如果它出现在它的平方数的尾部,就称它为同构数,如5它们的平方是25。现在请写出一个程序,求出从2~999之间的同构数。 答案: #include <stdio.h> #include <math.h> void main() { long int a, b, i, j, f = 0, d;/*定义变量*/ printf("正在计算...\n");/*提示*/ for (i = 2;i <= 999;i++)/*循环*/ { a = i * i; for(j = 1;j <= 3;j++)/*二重循环*/ { d = a % 10; a = a / 10; f = f + d * pow(10,j-1); if(f == i)/*判断尾数是否相同*/ { printf("%ld\n",i); } if(a == 0) break; } f=0;/*重写变量*/ } } 学号:2009121050 姓名:王迅 题目:1元钱能买一瓶汽水,喝完后两个空瓶可以换一瓶汽水。问:你有20元钱,最多可以喝到几瓶汽水?用C语言编写。 答案: int main(void) { int n, i, m; n = 20; i = 0; for(n = 20; n >= 1; n--)//n为瓶子有个数1~20刚好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 = &src[len-1];//指向最后一个字符 while( len-- != 0 ) *d++=*s--; *d = 0;//尾部要加\0 printf("%s\n",dest); free(dest);// 使用完,应当释放空间,以免造成内存汇泄露 return 0; } 方法2: #include <stdio.h> #include <string.h> main() { char str[]="hello,world"; int len=strlen(str); char t; for(int i=0; i<len/2; i++) { t=str[i]; str[i]=str[len-i-1]; str[len-i-1]=t; } printf("%s",str); return 0; } 学号:2009121052 姓名:付宇 本题出自:美资公司 题目:利用“正多边形逼近的方法”求圆周率的近似值。思路如下: 答案如下: #include <stdio.h> #include <math.h> 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=%.15lf\n”, 2 * i * b); printf(“the number of edges of required polygon: %ld\n”, 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(s1[k] == s2[j]) { int as = k, bs = j, count = 1; while(as + 1 < len1&&bs + 1 < len2&&s1[++as] == s2[++bs]) count++; if(count > maxlen) { maxlen = count; *r1 = s1 + k; *r2 = s2 + j; } } } 学号:2009121054 姓名:陈斌 本题出自:双汇火腿肠有限公司 题目: 请找出下面代码中的所有错误 说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba” #include"string.h" int main(void) { char *src = "hello,world"; char *dest = NULL; int len = strlen(src); dest = (char*)malloc(len); char* d = dest; char* s = src[len]; while (len--! = 0) { d++ = s--; } printf ("%s", dest); return 0; } 答案: #include"stdio.h" #include"string.h" int main(void) { char* src = "hello,world"; int len = strlen(src); char* dest = (char*)malloc(len+1);//要为\0分配一个空间 char* d = dest; char* s = &src[len-1];//指向最后一个字符 while (len-- != 0 ) { *d++ = *s--; *d = 0; }//尾部要加\0 printf("%s\n", dest); free(dest);// 使用完,应当释放空间,以免造成内存汇泄露 return 0; } 学号:2009121055 姓名:薛腾飞 本题出自:IBM 题目: In the following code segment what will be the result of the function, value of x , value of y { unsigned int x = -1; int y; y = ~0; if (x == y) { printf ("same"); } else { printf ("not same"); } } a) same, MAXINT, -1 b) not same, MAXINT, -MAXINT c) same , MAXUNIT, -1 d) same, MAXUNIT, MAXUNIT e) 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,17 b) 5,9,13,17 c) 12,17,22 d) 16,21 e) Syntax error 答案:(d) 学号:2009121057 姓名:曹高山 本题出自:华为面试题 题目: 写出下列程序运行结果: #include <stdio.h>    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 , 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") {printf("Pass 1"); if(p[sizeof(p)-2]=='g') printf("Pass 2"); else printf("Fail 2"); } else { printf("Fail 1"); if(p[sizeof(p)-2]=='g') printf("Pass 2"); else printf("Fail 2"); } } a) Pass 1, Pass 2 b) Fail 1, Fail 2 c) Pass 1, Fail 2 d) Fail 1, Pass 2 e) syntax error during compilation 答案: d //如果是char p[ ]="string" 那么p=="string"是错的,当是char* p="string";p=="string"却是对的 学号: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 contents of p & a and print:(New string, string) b) Generate compilation error in line number 8 c) Generate compilation error in line number 5 d) Generate compilation error in line number 7 e) Generate compilation error in line number 1 答案:(b) 学号:2009121060 姓名:张孝溢 本题出自:上海赛服固网络科技有限公司 题目:分析一下这段代码 #include<stdio.h> #include<stdlib.h> void getmemory(char*p) { p = (char*)malloc(100); strcpy(p, "hello world"); } int main() { char *str = NULL; getmemory(str); printf("%s\n", str); free(str); return 0; } 答案:程序崩溃,getmemory中的malloc 不能返回动态内存, free() 对 str操作很危险 getmemory中p是形参,是一个指针变量,getmemory(str)调用后,传入的是指针变量保存的对象地址,p=(char*)malloc(100)实际上是把申请的动态内存空间的首地址付给P指向的地址(即str指向的地址null),这个是错误的。应该修改成指向指针的指针void getmemor(char**p),这样malloc返回的地址付给*p(即str变量本身)。 学号:2009121061 姓名:吴岭西 本题出自:华为 题目:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba 答案:#include"string.h" int main(void) { char*src = "hello,world";  char* dest = NULL;  int len = strlen(src); dest = (char*)malloc(len); char* d = dest;  char* s = src[len];  while(len--! = 0)  d ++ = s --;  printf("%s",dest);  return  0; } 学号:2009121062 姓名:刘文 本题出自:华为面试题 题目: 编程实现: 1元钱能买一瓶汽水,喝完后两个空瓶可以换一瓶汽水。问:你有20元钱,最多可以喝到几瓶汽水? 答案: #include <stdio.h> 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 姓名:巫尚书 本题出自:中国人民银行 题目:写出下列代码的输出内容 答案: #include<stdio.h> 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,int arg1, int*arg2) { INCp=&inc; int temp =p(arg1); fun(&temp,&arg1, arg2); printf("%d\n",*arg2); } int main() { int a; show(multi,10,&a); return 0; } 答:1105 学号:2009121064 姓名:刘绪 本题出自:华为公司 题目:请编写一个 C 函数,该函数将一个字符串逆序 答案:void AntitoneValue(char* father, char* child) { int i; char source[100]; int j = 0; while(father[j]) //放入source,[j]为长度 { source[j] = father[j]; j++; if(j > 99) { return; } } source[j] = '\0'; for(i=0; i<j; i++) { child[i] = source[j-i-1]; //反序 } child[i] = '\0'; } 学号:2009121065 姓名:李晋 本题出自:上海文强实业有限公司 题目: 1元钱能买一瓶汽水,喝完后两个空瓶可以换一瓶汽水。问:你有20元钱,最多可以喝到几瓶汽水? #include <stdio.h> 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\n",num(20)); } 学号:2009121066 姓名:姚建 本题出自:华为 题目:在一个正整数序列中求和最大的非相邻子序列(序列任两元素在原序列里都不相邻) 答案: #include <stdio.h> 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",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]?b[h1]:b[h1+1]); } if (length-h1==3) { return (b[h1]+b[h1+2]>b[h1+1]?b[h1]+b[h1+2]:b[h1+1]); } if (h1>=0) { return b[h1]+(cal(h1+2,length,b)>cal(h1+3,length,b)?cal(h1+2,length,b):cal(h1+3,length,b)); } else { return (cal(h1+2,length,b)>cal(h1+3,length,b)?cal(h1+2,length,b):cal(h1+3,length,b)); } } 学号:2009121068 姓名:任彬 本题出自:华为 题目: 请找出下面代码中的所有错误 (说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”)   1、#include"string.h"   2、main()   3、{   4、 char*src="hello,world";   5、 char* dest=NULL;   6、 int len=strlen(src);   7、 dest=(char*)malloc(len);   8、 char* d=dest;   9、 char* s=src[len];   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 = &src[len-1];//指向最后一个字符    while( len-- != 0 )    *d++=*s--;    *d = 0;//尾部要加\0    printf("%s\n",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++; len++; } ' b  j8 [3 r$ g4 I, Y4 Qif (len == 0) return flag =- 1;5 D* K" L3 K2 |8 i) [5 q: h# K1 i p = p - len; for (i = 0; i< = len/2; i++): S" `' Y% ^. _. h9 n {% O9 L& {: `4 ~% |  I   if (p! = p[len - 1 - i]) / A+ K. G/ W  g# u          return flag = 0;3 N  Q6 ~: J9 |; M, E# @  y }% |4 w; j7 a' A2 i return flag = 1;+ J* i& z& X5 O9 ~ } 学号:2009121070 姓名:贺建光 本题出自:华为 题目:用变量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
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服