if(*result==0) --result; while(*result==0) --result; ++result; if(*temptr==-) *result=-; ++result; *result=/0; else *result=/0; else
if(*temptr==-) ++result; *result=-; ++result; *result=/0; else ++result; *result=/0; }
int main()
char *str = \ char *sub_str = \ char result[100]; char *str1=\ char *str2=\ char re[10]; alg(str1, str2, re);
deletestr(str, sub_str, result); cout<< result << \ system(\ return 0; }
1. 从两个数组的最后一个元素比较两个数组中不同元素的个数,如有
array1[5]={77,21,1,3,5}, array2[3]={1,3,5},从array1[4]与array2[2]比较开始,到array1[2]与array[0]比较结束。这样得出它们不同的元素个数为0,若array1[6]={77,21,1,3,5,7},那么他们不同的元素为3。
函数原型为intcompare_array( int len1, int array1[], int len2, int array2[] );
其中,len1与len2分别为数组array1[]和array2[]的长度,函数返回值为两个数组不同元素的个数。
以下是上题的函数完整实现: //diff_num.cpp
#include
intcompare_array(int len1,int array1[],int len2,int array2[]) {
inti,t,small,num=0; //把两数组倒置 for(i=0;i for(i=0;i //输出倒置后的两数组 t=array2[i]; array2[i]=array2[len2-i-1]; array2[len2-i-1]=t; t=array1[i]; array1[i]=array1[len1-i-1]; array1[len1-i-1]=t; /* for(i=0;i printf(\ printf(\for(i=0;i printf(\ */ printf(\ } void main() { } 如同往年,华为今年刚一开学就来学校宣讲了,9月6日和7日安排了软件研发类的上机笔试(其他职位没有笔试,直接通过网上注册的简历筛选并安排面试)。 int array1[5]={77,21,1,3,5},array2[3]={1,3,5}; int len1=5,len2=3; compare_array(len1,array1,len2,array2); if(len1>len2) else small=len1; small=len2; num=small; for(i=0;i printf(\return num; if(array1[i]==array2[i]) num--; 说下华为上机考试的特点和一些注意事项: (1)考试时长为2个小时,总共有3个题(去年是2个题,难度要比今年大些),使用的是VC 6.0; (2)3个题目中大致第一个题是最简单的,第三个题是最难的,这个难度只是假设你对所有的题都不熟悉而言的,所以在拿到题目过后一定要把所有题目过一遍,弄懂它们的要点,看是否有自己熟悉的题目,也做到心里有数。这算得上是我昨天笔试的时候的一个教训吧; (3)从服务器上下载题目下来后最好能把工程保存到在电脑重启后不会自动还原的磁盘分区下面,这样不致由于各种意外因素电脑重启过后编的程序不会消失; (4)不要改动所给函数的原型,可以自己添加函数。另外,华为提供的工程是将Main函数隐藏了的,所以自己不用再添加Main函数。 以上便是我对于这次考试了解的一些情况,下面说说我做的3个笔试题(题意我只能大概的按我的理解组织下)。 compare_array 1intcompare_array( int len1, int array1[], int len2, int array2[] ) 2{ 3int i; 4/*两个数组最小程度*/ 5intmin_len; 6/*两个数组不同元素的个数,初始化为0*/ 7intdiff_num=0; 8 9/*找出两个数组的最小的长度*/ 10 len1 12for( i=1; i<=min_len; i++ ) 13 { 14if( array1[len1-i] != array2[len2-i] ) 15diff_num++; 16 } 17 18returndiff_num; 19} 2. 约瑟夫环(待添加) 3. 字符串四则运算的实现 题目大意:有字符串表示的一个四则运算表达式,要求计算出该表达式的正确数值。四则运算即:加减乘除\,另外该表达式中的数字只能是1位(数值范围0~9)。另若有不能整除的情况,按向下取整处理,eg: 8/3得出值为2。 若有字符串\,计算出其值为19。 主要考点:1. 数字的字符形式变换为数字形式的方法; 2. 数字的数字形式变换为数字的字符串形式的方法。 http://apps.hi.http://www.wodefanwen.com//share/detail/17893678 (1)什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 (2)char * const p char const * p const char *p 上述三个有什么区别? 答案: char * const p; //常量指针,p的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改const char *p; //和char const *p (3)char str1[] = \const char *str5 = \( str1 == str2 ) < 结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。c中的字符串不能直接==来判断是否相等,这样比较的结果是比较地址。如果要比较字符串是否相同,应该用strcmp函数。 (4)以下代码中的两个sizeof用法有问题吗?[C易] void UpperCase( char str[]) // 将str中的小写字母转换成大写字母 { for( size_t i=0; i