2012最全华为上机试题及部分答案_第1页
2012最全华为上机试题及部分答案_第2页
2012最全华为上机试题及部分答案_第3页
2012最全华为上机试题及部分答案_第4页
2012最全华为上机试题及部分答案_第5页
已阅读5页,还剩18页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2011年华为软件校园招聘编程测验1、请上机编写程序,按题目要求提交文件。详见考试说明,点击进入考试说明3、评卷通过在给定用例输入下,严格按照试题要求比较考生实现函数的输出与预设输出。两者相同则得分,不同则不得分。4、评卷人保证测试用例输入参数的合法性,考生不用考虑输入参数非法或异常的情况5、评卷人保证测试用例输入在被测函数正常合法情况下使用不会导致程序错误6、如果考生函数异常导致程序崩溃或死循环,则自动评卷可能会被人为终止,剩余用例不被执行,无法得分7、基于上述阅卷规则,请考生严格按照题目要求功能实现程序,尽量保证实现函数的稳健性,同时建议完成一道题并调试保证正确性后,再考虑并实现下一题目1

2、,判断电话号码是否合法:/要注意情况包含,有可能会同时出现几种不好的情况,要按照顺序输出错误。不能同时输出好几种错误,应该是这样包含:先判断长度是否符合,再判断是否以86打头,再判断有无其他字符int fun( char num) char *p=num;int n=strlen(num); if (n=13)if (*p= '8' &&*(p+1)= '6')while (*p!= '0' )if (*p>= '0' &&*p<='9')p+;elsereturn 2;

3、if (*p= '0')return 0; else return 3;elsereturn 1;int main()char num= "87139a3887671”;int k=fun(num);cout<<k<<endl;return 0;1.数组比较(20分)?问题描述:比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。请编程实现上述比较,并返回比较中发现的不相等元素的个数比如:数组1,3,5)和数组77,21,1,3,5按题述要求比较,不相等元素个数为 0数组1,3,5)和数

4、组77,21,1,3,5,7)按题述要求比较,不相等兀素个数为3?要求实现函数:int array_compare(intlen1,int array1,int len2, intarray2)?示例1)输 入 :intarray1 = 1,3,5), intlen1 = 3int array2=77,21,1,3,5),int len2 = 5函数返回:02)输 入 :intarray1 = 1,3,5), intlen1 = 3int array2=77,21,1,3,5,7),int len2 = 6函数返回:3函数如下:using namespace std;int f( int le

5、nl, int arry1, int len2, int arry2) int k=0;for (int i=len1-1,j=len2-1;i>=0&&j>=0;i-,j-)if (arry1i!=arry2j) k+;return k;)int main()int num1=1,3,5);int num2尸77,21,1,3,5;int k=f(3,num1,5,num2);cout<<k<<endl;return 0;)2,约瑟夫问题?问题描述:输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数(从数列首位

6、置开始计数,计数到 m后,将数列该位置数值替换计数值 m,并将数列该位 置数值出列,然后从下一位置从新开始计数, 直到数列所有数值出列为止。 如果计数到达数 列尾段,则返回数列首位置继续计数。请编程实现上述计数过程,同时输出数值出列的顺比如:输入的随机数列为:3,1,2,4 ,初始计数值m=7,从数列首位置开始计数(数值3所在位置)第一轮计数出列数字为 2,计数值更新m=2,出列后数列为3,1,4 ,从数值4所在位置从新开始 计数第二轮计数出列数字为 3,计数值更新m=3,出列后数列为1,4 ,从数值1所在位置开始计数第三轮计数出列数字为1,计数值更新m=1,出列后数列为4,从数值4所在位置开

7、始计数最后一轮计数出列数字为 4,计数过程完成。输出数值出列顺序为:2,3,1,4。?要求实现函数:void array_iterate(int len, int input_array, int m, int output_array )【输入】int len :输入数列的长度;int intput_array :输入的初始数列intm:初始计数值【输出】int output_array:输出的数值出列顺序 ?示例输入:int input_array = 3,1,2,4, int len = 4,m=7输出:output_array口= 2,3,1,4函数如下:void fun( int l

8、en, int a1, int len2, int a2) int n=0,i=-1,k=1,m=len2; while (1)for (int j=0;j<m;) i=(i+1)%len;/注意这个是 不要写成/if (a1i!=0) j+;m=a1i;a2n+=a1i;a1i=0;if (k=len) break ; k+;3. 简单四则运算?问题描述:输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值注:1、表达式只含 +,-,*,/四则运算符,不含括号2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况3、要考虑加减乘除按通常四则运算规定的计算优先级

9、4、除法用整数除法,即仅保留除法运算结果的整数部分。比如 8/3=2。输入表达式保证无0 作为除数情况发生5、输入字符串一定是符合题意合法的表达式,其中只包括数字字符和四则运算符字符,除 此之外不含其它任何字符,不会出现计算溢出情况?要求实现函数:int calculate(int len,char *expStr)【输入】int len: 字符串长度;char *expStr:表达式字符串;【输出】无【返回】计算结果?示例1) 输入:char *expStr ="1+4*5-8/3 ”函数返回:192) 输入:char *expStr ="8/3*3”函数返回:6简化版的

10、四则运算:没有括号,只有加减乘除四种运算int fun( char a, int len) /字符数组和字符数组的长度 int num20;char str20;int k1=0,k2=0;int data=0;for(int i=0;i<len;i+)/主要运算 if(ai>='0'&&ai<='9')numk1+=ai-'0'if(ai='-'|ai='+')strk2+=ai;if(ai='*')numk1-1=numk1-1*(ai+1-'0'

11、;);i+;/遇见*,就运算,结果保存在数组中if(ai='/') numk1-1=numk1-1/(ai+1-'0');i+;int temp=num0;int j=0;/两个数组只剩下数组和加减运算符while(j<k2) /顺序运算if(strj='-')temp=temp-numj+1;else if(strj='+')temp=temp+numj+1;j+; return temp;int main() har a= "3*3+7+4/3”;int k=fun(a,9); cout<<k<

12、;<endl; return 0;函数实现2:中序表达式转换为后序表达式,使用算法实现int isp( char c) int p;casecasecasecaseswitch (c) '*': '/' :p=1; break ; '+':'-':p=0; break ; return p;char * transf( int len, char a, char b) int k=0;stack< char > s1;for (int i=0;i<len;i+) if (ai>= '0'

13、; &&ai<= '9' )bk+=ai; else if (s1.empty()s1.push(ai);else while (isp(ai)<=isp(s1.top() bk+=s1.top();s1.pop();s1.push(ai);while (s1.empty()bk+=s1.top();s1.pop();bk= '0'return b;void fun( char c,stack s2) char p1,p2;if (!s2.empty()p1=s2.top();s2.pop();else pos= false ;cou

14、t<< "kongzhan" <<endl;if (!s2.empty()p2=s2.top();s2.top();else pos= false ;cout<< "kongzhan" <<endl;if (pos= true )switch(c)case'+' :s2.push(p1+p2);breakcase'-':s2.push(p2-p1);breakcase'*' :s2.push(p1*p2);breakcase'/' :s2.pu

15、sh(p2/p1);breakvoid eval( char a口) stack< char > s2;for (int i=len;i<len;i+) switch (ai) case '+case '-'case default :s2.push(ai- '0' ); break ; )case '/' :fun(ai,&s2);break ;)int main() char a= "1+4*5-8/3”;int len=strlen(a);char b20;char *q=transf(9,a,b

16、);cout<<q<<endl;return 0;)第五题:一副牌中发五张扑克牌给你:让你判断数字的组成:有以下几种情况:1:四条:即四张一样数值的牌(牌均不论花色)2 :三条带一对3:三条带两张不相同数值的牌4 :两对 5 :顺子 包括 10, J, Q K, A6:什么都不是 7 :只有一对思路:将数组排序,统计相同的数字的个数,再分情况讨论void sort( int a) int temp;for (int i=0;i<5;i+)for (int j=0;j<5;j+)if (ai>aj)temp=ai;ai=aj;aj=temp;)void

17、test( int a) int *b= new int 5;int k=1;for (int i=0;i<5;i+) bi=ai;for (int j=0;j<4;j+)if (aj=aj+1)k+;if (k=4)if (b1=b3)cout<< "四条"<<endl;elsecout<< "三条带一对"<<endl;if (k=3)if (b1!=b211b2!=b3)cout<< "三条带两个不同的牌 "<<endl;elsecout<&

18、lt; "两对"<<endl;if (k=2)cout<< "对"<<endl;if (k=1)if (b4-b0=4&&b4-b1=3&&b4-b2=2&&b4-b3=1)cout<< "顺子 <<endl;elsecout<< "什么都不是"<<endl;int main() int a=1,2,4,4,4;test(a);return 0;第二题:求两个数组的和差就是去掉两个数组中相同的元

19、素然后将两个数组中的元素存放在一个新的数组中,按大小顺序排序思路:将数组A和数组B分别进行排序,然后将A与B进行比较,重复的跳过去,不重复的 赋给数组C,依次输出。while (i < la && j < lb) if (aai < bbj)csub = aai;+sub;+i;else if (aai > bbj) csub = bbj;+sub;+j;else if (aai = bbj) +i;+j; for (; i < la; +i)csub = aai;+sub;for (; j < lb; +j)csub = bbj;+sub;

20、四:逆序单链表 node *reverse(node *head) node *p1,*p2,*p3;p1=head;p2=head->next;while (p2)p3=p2->next;p2->next=p1;p1=p2;p2=p3;head->next=NULL;head=p1;return head;2.将一个字符串的元音字母复制到另一个字符串,并排序(30分)问题描述:有一字符串,里面可能包含英文字母(大写、小写)、数字、特殊字符,现在需要实现一函数,将此字符串中的元音字母挑选出来,存入另一个字符串中,并对字符串中的字母进行从小到大的排序(小写的元音字母在前,

21、大写的元音字母在后,依次有序)。说明:1、元音字母是a,e,i,o,u,A,E,I,O,U 。2、筛选出来的元音字母,不需要剔重;最终输出的字符串,小写元音字母排在前面,大写元音字母排在后面,依次有序。要求实现函数:void sortVowel (char* input, char* output);using namespace std;void fun( char a, char s)/提取元音字母,放入数组 int i=0,n=0;while (ai!='0' )if (ai= 'a' |ai='e' |ai='i' |ai

22、='o' |ai='u')sn+=ai;else if(ai= 'A' |ai='E' |ai='I' |ai='O' |ai='U')sn+=ai;i+;char temp;/将数组排序for (int i=0;i<n-1;i+)for (int j=0;j<n-i-1;j+)if (sj>sj+1)temp=sj;sj=sj+1;sj+1=temp;int k=0;/定位大写字母的最后位置while (sk>= 'A' &&

23、sk<= 'Z' ) k+;for (int j=0;j<n;j+)/输出原字符串cout<<sj<< ' ' ; cout<<endl;char *p= new char 20;/将字符串变换位置,输出。char *q=p;for (int i=k;i<n;i+)*p=si;p+;for (int j=0;j<k;j+) *p=sj;p+;*p= '0' ;cout<<q<<endl;int main() char str= "HaJsdStOoAOe

24、INaPQaWEiAIiO"char s20;fun(str,s);return 0;3.身份证号码合法性判断 我国公民的身份证号码特点如下:1、 长度为18位;2、 第117位只能为数字;3、 第18位可以是数字或者小写英文字母x。4、 身份证号码的第714位表示持有人生日的年、月、日信息。例如:511002 19880808 0111 或 511002 19880808011x 。请实现身份证号码合法性判断的函数。除满足以上要求外,需要对持有人生日的年、月、日信息进行校验。年份大于等于1900年,小于等于2100年。需要考虑闰年、大小月的情况。所谓闰年,能被4整除且不能被100整

25、除 或能被400整除的年份,闰年的2月份为29天, 非闰年的2月份为28天。其他情况的合法性校验,考生不用考虑。函数返回值:1) 如果身份证号合法,返回 0;2) 如果身份证号长度不合法,返回 1;3) 如果身份证号第117位含有非数字的字符,返回 2;4) 如果身份证号第18位既不是数字也不是英文小写字母x,返回3;5) 如果身份证号的年信息非法,返回4;6) 如果身份证号的月信息非法,返回5;7) 如果身份证号的日信息非法,返回 6 (请注意闰年的情况);要求实现函数:int verifyIDCard(char* input)示例1) 输入:” 511002 111222 ”,函数返回值:

26、1;2)输入3)输入4)输入5)输入6)输入7)输入8)输入511002 abc123456789511002 19880808123a511002 188808081234511002 198813081234511002 198808321234511002 1989 0229 1234511002 198808081234,函数返回值:2;,函数返回值:3;,函数返回值:4;,函数返回值:5;,函数返回值:6;”,函数返回值:7;,函数返回值:0;I nt fun( char *str) Int year=0,month=0,day=0;If (strlen(str)-1)<18)

27、/1 for (Int i=0;i<18;i+) If (strI>='0' &&strI<= '9' )/2;else return 2;If (str17= 'x' |(str17>='0' &&str17<= '9' )/3for (Int i=6;i<10;i+)year=year*10+strI-'0'If (year>1900&&year<2100) /4 for (Int I=10;I<

28、;12;I+)month=month*10+strI- '0'If (month>0&&month<=12)/5for (int i=12;i<14;i+) day=day*10+strI- '0' (day<=31) /6 If (year%4!=0&&month=2&&day<=28) return 0;else If (year%4=0&&month=2&&day<29) return 0;else If (year%4!=4&&am

29、p;month!=2&&day<31) return 0;else return 6; else return 6;else return 5; else return 4; else return 3;else return 1;Int main() char a= "340621198608377817”;Int k=fun(a);cout<<k<<endl;return 0;第二题:比较一个数组的元素是否为回文数组判断是否是回文数组:bool fun( char a)(int n=strlen(a);int i=0,j=n-1;wh

30、ile (i<j)if (ai!=aj) return false ;i+;j-;return true ;第三题:求两个数组的和差:就是去掉两个数组中相同的元素然后将两个数组中的元素存放在一个新的数组中 且数组A中元素要在吸组元素之前 思路:利用循环比较,将相同的数字的标记为0,再赋给数组Cint main() int a尸1,3,5,7,9,12,13;int s=1,3,5,6,7,8,9;int len1= sizeof (a)/ sizeof (int );int len2= sizeof (s)/ sizeof (int );for (int i=0;i<len1;i+

31、)for (int j=0;j<len2;j+) if (ai=sj) ai=0;sj=0;int t30;int k=0,i=0,j=0;while (i<len1)if (ai!=0) tk+=ai;i+;while (j<len2)if (sj!=0) tk+=sj;j+;for (int i=0;i<k;i+) cout<<ti<< '' return 0;字符串计算1、选秀节目打分,分为专家评委和大众评委,score数组里面存储每个评委打的分数,judge_type 里存储与 score数组对应的评委类别,judge_t

32、ype = 1,表示专家评委,judge_type = 2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大 众评委的分数先分别取一个平均分(平均分取整),然后,总分=专家评委平均分 * 0.6+大众评委* 0,4,总分取整。如果没有大众评委,则总分=专家评委平均分,总分取整。函数最终返回选手得分。 int cal_score( int score, int judge_type, int n) int sum1=0,sum2=0,avg1=0,avg2=0; int m=0,k=0; for (int i=0;i<n;i+) if (judge_typei=1) sum1=su

33、m1+scorei;m+; if (judge_typei=2) sum2=sum2+scorei;k+; avg1=sum1/m;avg2=sum2/k; return ( int )(avg1*0.6+avg2*0.4); int main() int input尸3,6,1,9,7,8;int output尸1,1,2,1,2,2;int n= sizeof (input)/ sizeof (int ); int p=cal_score(input,output,n); cout<<p<<endl;return 0; 2、给定一个数组input ,如果数组长度n为

34、奇数,则将数组中最大的元素放 到output口数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到output口数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。 例如:input = 3,6,1,9,7 output = 3,7,9,6,1; input=3,6,1,9,7,8output = 1,6,8,9,7,3函数接口void sort(int input, int n, int output)using namespace std; void sort( int input, int n, int ou

35、tput) int i=0,j=n-1;int temp; for (int i=0;i<n-1;i+) for (int j=0;j<n-i-1;j+) if (inputj>inputj+1) temp=inputj;inputj=inputj+1;inputj+1=temp; int k=0;i=0;j=n-1; while (i<j) outputi+=inputk+; outputj-=inputk+; cout<<output3<<endl;int main() int input尸3,6,1,9,7,8;int output20;s

36、ort(input,6,output); return 0;3、操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级< 50,用户任务的优先级>=50且<=255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task口 ,长度为n, task中的元素值表示任务的优先级,数值越小,优先级越高。函数 scheduler实现如下功能,将task口中的任务按照系统任务、用户任务依次存放到system_task口 数组和 user_task 数组中(数组中元素的值是任务在task口数组中的下标),并且优先级高的任务排在前面,数组元素为-1表示

37、结束。task口=0,30,155,1,80,300,170,40,99system_task=0,3,1,7,-1user_task =4,8,2,6,-1函数接口:void scheduler(int task口,int n,int system_task, int user_task) int *p = new intn;int i,j,temp;int k1=0,k2=0;for(i = 0;i<n;i+) pi = i;for(i = 0;i<n-1 ;i+) for(j=0;j<n-i-1;j+) if(*(task+pj)>*(task+pj+1)temp

38、 = pj;pj = pj+1;pj+1 = temp; /此处是排下标for(j=0;j<n;j+)if(*(task+pj)<50)system_taskk1+ = pj;if(*(task+pj)>=50 && *(task+pj)<=255) user_taskk2+ = pj;system_taskk1 = -1; user_taskk2 = -1;地区2:单链表的操作:排序,插入,删除,逆序,创建。struct nodeint data;struct node* next;);node *creat() node *head,*p,*s;he

39、ad=new node1;p=head; /p 只是定义,并没有分配空间,int k;while (cin>>k) / 创建单链表s=new node1;s->data=k;p->next=s;p=s;)head=head->next; /开始的的时候head是表头节点,现在是第一个节点p->next=NULL;return head;)node *reverse(node *head) node *p1,*p2,*p3;p1=head;p2=head->next;while (p2)p3=p2->next;p2->next=p1;p1=p

40、2;p2=p3;)head->next=NULL;head=p1;return head;)node *del(node *head, int num) node *p,*s;p=head;while (p->data!=num&&p->next!=NULL) s=p;p=p->next; if (p->data=num)if (p=head)head=p->next; delete p; else s->next=p->next; delete p;elsecout<< "未找到要删除的节点"&l

41、t;<endl; return head;)node *insert(node *head, int num) /要插入和删除的时候要考虑判断特殊位置点 node *p,*s,*t;p=head;t= new node1; t->data=num;while (p->data<num&&p->next!=NULL) s=p;p=p->next; if (num<=p->data) if (p=head) t->next=p;head=s; elset->next=p;s->next=t;else /把插入点定位在

42、了链尾p->next=t;t->next=NULL; return head;node *sort(node* head) node *p; int temp;int n= sizeof (head)/ sizeof (node);if (head=NULL&&head->next=NULL) return head;p=head;for (int i=0;i<n;i+) p=head;for (int j=0;j<n-i;j+) if (p->data>p->next->data) temp=p->data;p-&g

43、t;data=p->next->data; p->next->data=temp; return head;栈的基本操作:struct listint data;struct node *next;*node;void initstack(node &top)top=NULL;)void push(node &top, int num) node *p;p=new node;p->data=num;p->next=top;top=p;)void pop(node &top) node *p=top;int n=top->data

44、;top=top->next;cout<<n<<endl;delete p;)int Isempty(node &top)return top=NULL;)改进后的冒泡排序:oid maopao( int *s, int n) int i=1,j,b=1;int temp;while (b)b=0;for (j=n-i-1;j>i;j-)if (sj<sj-1) b=1;temp=sj;sj=sj-1;sj-1=temp;)for (j=i;j<n-1;j+)if (sj>sj+1) b=1;temp=sj;sj=sj+1;sj+1

45、=temp;)i+;)扫描数组,求出最大的增量长度:int main() int a=7,2,3,4,5,6,8);int n=7;int max=1,len=1;for (int i=1;i<n;i+)if (ai>=ai-1) len+; continue; /跳出本次循环,继续以下的部分)if (max<len) max=len;len=1;)cout<<max<<endl;return 0;)扫描整数序列,求出最大长度子序列:思路:定义两个游标i j分别在数组的左右,从两边收缩,计算i j之间数组的总和,然后比较,求出最大的记录,并将此时的 i

46、 j 记录下来。int main() int s尸1,20,-3,49,59,10,30,20,-41,90,-2,-30,60.-29;int n= sizeof (s)/ sizeof (int );int i,k,j,a,b,num,max=0;for ( i=0;i<n;i+)for ( j=n-1;j>=i;j-) num=0;for ( k=i;k<=j;k+) num=num+sk;if (max<num) max=num; a=i; b=j;for (int m=a;m<=b;m+) cout<<sm<< ''

47、;return 0;直接插入排序:void insertsort( int a, int n) int x,j;for (int i=1;i<n;i+) x=ai;for ( j=i-1;j>=0&&x>aj;j-) aj+1=aj;aj+1=x;)提取字符串中的数字:在字符串"ab00cd+123fght456-253.005fgh"中提取的字符是 0,123,456,253 , 5。void fun( char str, int outArray口) char *p=str;int count=0,value=0;while (*p!=

48、 '0' )if (*p<= '0' &&*p>='9' ) value=0;while (*p<='0' &&*p>='9' )value=value*10+(*p- '0'); p+ ; )outArraycount+=value; ) p+;) 数字转换成字符串: int main() char str20,temp20; int i=0,j=0;int num=1234567;while (num>0) stri=num%10+

49、'0' num=num/10;i+; i-; while (i>=0) tempj+=stri-;tempj= '0'cout<<temp<<endl; return 0;如下输入方法:第一行输入要输入字符的行数N,接下输入N亍字符,统计字符中特定字符的个数。方法如下: int main() char ch;int N,num=0;cin>>N; /定义输入的行数 getchar();/输入的N行字符for (int i=0;i<N;i+)while (1)/记住控制方法ch=getchar();/ 这是单个字符i

50、f (ch= 'a' )num+; if (ch= 'n' ) break ; cout<<num<<endl;return 0;大数的运算:void fun( char *num1, char *num2, char *result) int i=strlen(num1)-1,j=strlen(num2)-1;char *p=num1;char *q=num2;int n=0,k=0;if (p0!= '-' &&q0!= '-' )/两个正数相加,两个负数相加一样,就是在 resultn

51、中再加上一个'-',再反序输出。 while (i>=0&&j>=0)resultn+=(pi-'0' )+(qj-'0' )+k)%10+'0'k=(pi-'0' )+(qj-'0' )/10;i-;j-;while (i>=0) resultn+=(pi-'0' )+k)%10+'0'k=(pi-'0' )+k)/10;i-;while (j>0) resultn+=(qj-'0' )+k)%

52、10+'0'k=(qj-'0' )+k)/10;i-;if (k=1)resultn+=1;/ 如果是两个负数相加,加上 resultn+='-'resultn= '0'求字符串中最大的回文长度:void fun( char a口)int len=strlen(a);int i=0,j=len-1,len2=0; /len2 是回文的一半长度char *p,*q;int max=0,pos1=0,pos2=0;for (i=0;i<len;i+)for (j=len-1;j>i;j-) p=&ai;q=&

53、;aj;while (p<q)if (*p=*q)len2+;p+;q-;日se /上式中,如若不成立,保留下来的len的值可能很大,要将其变成0,以便继续使用。 len=0, break ;if (max<len2)max=len2;pos1=i;pos2=j;len2=0;while (pos1<=pos2)cout<<apos1+;int main()char a= "ddaffafFEaabbccccbbaabsgbsbgsbg" ;fun(a);return 0;求一串字符串中出现次数最多的单词:void fun( char a口)

54、char str100100;char temp200;int value200;int k1=0,k2=0,k3=0;int i=0,j=0;while (ai!='0' )if (i=0) while (ai!='')tempk3+=ai+;tempk3= '0' ; k3=0;strcpy(strk1,temp);valuek1+=1;else if (ai='')i+;while (ai!='0' &&ai!='')tempk3+=ai+;tempk3= '0'

55、; ;k3=0;j=0;while (j<k1)if (strcmp(strj,temp)=0) valuej+=1; break ; j+;if (j=k1) strcpy(strk1,temp);valuek1=1;k1+;cout<<value7<<endl;cout<<str7<<endl;int main() char a= "aa aa aa aa aa aa aa aa aa aa amedede am am am jnnk adfp crpcwe crwc qa qa qa qa qa qa qa qa qa &q

56、uot;fun(a);return 0;一个字符串“ aasbbsdsskkff ”,求出重复的次数,并写到数组后面,输出为 “ a2s1b2s1d1s2k2f2”void fun( char *a, char *s) int n=1,k=0;char *p=a,*q=a;q+; sk+=*p;while (*p!= '0' )if (*p=*q) n+;p+;q+;elsesk+=n+ '0'sk+=*q;p+; q+;n=1;) cout<<s<<endl;)单链表操作:struct nodeint data;node *next;);node* creat() int num;node *head,*p,*q;head=new node1;q=head;while (cin>>num) p=new node1; p->data=num; p->next=NULL; q->next=p;q=p;)return head;)void reverse(node *head)node *p1,*p2,*p3;p1=*head;p2=p1-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论