华为上机-字符串相关题目
2015-09-04 15:29
381 查看
华为校园招聘机考试题总结(软件)1、删除子串,只要是原串中有相同的子串就删掉,不管有多少个,返回子串个数。
#include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include "assert.h" //函数:在sub字符串中删除substr子串 int DeleteSubstr(const char* str, const char* substr, char* result) { if (NULL == str || NULL == substr) { return -1; } const char *p, *q; char *temp = result; int icount = 0; int isublen = strlen(substr); //作为匹配的依据 int icurlen = 0; //当前已经匹配的长度 p = str; q = substr; while (*p != '\0') { if (*p == *q) { icurlen++; //当前长度加1 q++; p++; if (icurlen == isublen) //匹配结束 { icount++; icurlen = 0; //清空待用 q = substr; //返回头部待用 //跳过了复制,此时temp中没有保存这个字符 } } else { if (icurlen != 0) //匹配未完成即发生不匹配,则进行清零 { q = substr; while (icurlen != 0) { *temp++ = *q++; //把前面未成功匹配的都拷贝回去 icurlen--; } q = substr; icurlen = 0; p++; } else *temp++ = *p++; //拷贝到结果字符串 } } if (icurlen != 0) //匹配未完成即发生不匹配,则进行清零 { q = substr; while (icurlen != 0) { *temp++ = *q++; //把前面未成功匹配的都拷贝回去 icurlen--; } } temp = '\0'; result = temp; return icount; } int delete_sub_str(const char* str, const char* sub_str, char* result) { assert(str != NULL && sub_str != NULL);//assert判断后面条件是否是假,是的话结束程序 const char *p, *q; char *t, *temp; p = str; q = sub_str; t = result; int n, count = 0; n = strlen(q); temp = (char*)malloc(n + 1); memset(temp, 0x00, n + 1);//将tmp内存区域的前n+1个字符赋为‘\0’ while (*p) { memcpy(temp, p, n);//将后面的前n个字符复制给前面 if (strcmp(temp, q) == 0)//strcmp比较相等返回零,前者大返回1,否则返回-1 { count++; memset(temp, 0, n + 1); p = p + n; } else { *t = *p; p++; t++; memset(temp, 0x00, n + 1); } } free(temp); return count; } int main() { char s[100] = { '\0' }; char str[100] = { '\0' }; char substr[100] = { '\0' }; while (gets_s(str,100) != NULL) { int num = DeleteSubstr(str, "123", s); printf("The number of sub_str is %d\r\n", num); printf("The result string is %s\r\n", s); memset(s, 0, 100); memset(str, 0, 100); memset(substr, 0, 100); } return 0; }2、约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
#include<stdio.h> #include<stdlib.h> typedefstructNode { int num; structNode*next; }LinkList; LinkList*creat(int n) { LinkList*p,*q,*head; int i=1; p=(LinkList*)malloc(sizeof(LinkList)); p->num=i; head=p; for(i=2;i<=n;i++) { q=(LinkList*)malloc(sizeof(LinkList)); q->num=i; p->next=q; p=q; } p->next=head;/*使链表尾指向链表头 形成循环链表*/ return head; } void fun(LinkList*L,int m) { int i; LinkList*p,*s,*q; p=L; printf("出列顺序为:"); while(p->next!=p) { for(i=1;i<m;i++) { q=p; p=p->next; } printf("%5d",p->num); s=p; q->next=p->next; p=p->next; free(s); } printf("%5d\n",p->num); } int main() { LinkList*L; int n, m; n=9; m=5; L=creat(n); fun(L,m); return0; }[/code]3、比较一个数组的元素 是否为回文数组
#include<stdio.h> #include<string.h> int huiwen(char str[]) { int i,len,k=0; len=strlen(str); for(i=0;i<len/2;i++) { if(str[i]!=str[len-i-1]) { k=1; break; } } if(k==0) printf("%s 不是一个回文数\n",str); else printf("%s 是一个回文数\n",str); } void main() { char str[100]={0}; int i; int len; printf("Input a string:");/*提示输入Input a string:*/ scanf("%s", str);/*scan()函数输入一个字符串:*/ huiwen(str); }[/code]4、 数组比较(20分)• 问题描述:比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。请编程实现上述比较,并返回比较中发现的不相等元素的个数比如:数组{1,3,5}和数组{77,21,1,3,5}按题述要求比较,不相等元素个数为0数组{1,3,5}和数组{77,21,1,3,5,7}按题述要求比较,不相等元素个数为3• 要求实现函数:int array_compare(int len1, int array1[], int len2, int array2[])【输入】 int len1:输入被比较数组1的元素个数;int array1[]:输入被比较数组1;int len2:输入被比较数组2的元素个数;int array2[]:输入被比较数组2;【输出】 无【返回】 不相等元素的个数,类型为int• 示例1) 输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5},int len2 = 5函数返回:02) 输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5,7},int len2 = 6函数返回:3
#include<stdlib.h> #include<stdio.h> #include<string.h> int array_compare(int len1,int array1[],int len2,int array2[]) { int count=0; for(;len1>0&&len2>0;len1--,len2--) { if(array1[len1-1]!=array2[len2-1]) { count++; } } return count; } int main() { int result=0; int array1[]={1,3,5}; int len1=3; int array2[]={77,12,1,3,5}; int len2=5; result=array_compare( len1, array1, len2, array2);///result=array_compare( len1, array1[], len2, array2[]);不能这样 // 函数形参中永远只是传得首地址,不能传数组 切记切记!!!!!! printf("the result is %d", result); }[/code]5、约瑟夫问题• 问题描述:输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。从数列首位置开始计数,计数到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所在位置开始计数最后一轮计数出列数字为4,计数过程完成。输出数值出列顺序为:2,3,1,4。• 要求实现函数:void array_iterate(int len, int input_array[], int m, int output_array[])【输入】 int len:输入数列的长度;int intput_array[]:输入的初始数列int m:初始计数值【输出】 int output_array[]:输出的数值出列顺序【返回】 无• 示例输入:int input_array[] = {3,1,2,4},int len = 4, m=7输出:output_array[] = {2,3,1,4}
////////////循环链表实现////////////////////// #include<stdio.h> #include<stdlib.h> #include<string.h> typedefstructNode { int num; struct node *next; } node; node *creat(int len ,int input_array[]) { node *h,*s,*p; int i; h=(node*)malloc(sizeof(node)); h->num=input_array[0]; p=h; for(i=1;i<len;i++) { s=(node*)malloc(sizeof(node)); s->num=input_array[i]; p->next=s; p=s; } p->next=h; return(h); } void array_iterate(int len,int input_array[],int m) { node *q,*p,*s; int i=0,j=0,k; int output_array[4]; p=creat(len,input_array); while(p->next!=p) { for(i=1;i<m;i++) { q=p; p=p->next; } m=p->num; printf("%5d",m); output_array[j++]=m; s=p; q->next=p->next; p=p->next; free(s); s=NULL; } m=p->num; printf("%5d\n",m); output_array[j]=p->num; k=j; for(j=0; j<=k; j++) { printf("%5d",output_array[j]); } } int main() { int input_array[]={3,1,2,4}; int len=4; int m=7; int output_array[4]; array_iterate(len, input_array, m, output_array); }[/code]6、 手机号码合法性判断(20分)l问题描述:我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下:1、 长度13位;2、 以86的国家码打头;3、 手机号码的每一位都是数字。请实现手机号码合法性判断的函数要求:1) 如果手机号码合法,返回0;2) 如果手机号码长度不合法,返回13) 如果手机号码中包含非数字的字符,返回2;4) 如果手机号码不是以86打头的,返回3;【注】除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。l要求实现函数:int verifyMsisdn(char* inMsisdn)【输入】 char* inMsisdn,表示输入的手机号码字符串。【输出】 无【返回】 判断的结果,类型为int。l示例输入: inMsisdn = “869123456789“输出: 无返回: 1输入: inMsisdn = “88139123456789“输出: 无返回: 3输入: inMsisdn = “86139123456789“输出: 无返回: 0
#include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h> #define LENGTH 13 int verifyMsisdn(char*inMsisdn) { char*pchar=NULL; assert(inMsisdn!=NULL); if(LENGTH==strlen(inMsisdn)) { if(('8'==*inMsisdn)&&(*(inMsisdn+1)=='6')) { while(*inMsisdn!='\0') { if((*inMsisdn>='0')&&(*inMsisdn<='9')) inMsisdn++; else return2; } } else return3; } else return1; return0; } int main() { char*pchar=NULL; unsignedchar ichar=0; int result; switch(ichar) { case0: pchar="8612345363789";break; case1: pchar="861111111111111";break; case2: pchar="86s1234536366";break; default: break; } result =verifyMsisdn(pchar); printf("result is %d\n",result); }[/code]7、 数组比较(20分)• 问题描述:比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。请编程实现上述比较,并返回比较中发现的不相等元素的个数比如:数组{1,3,5}和数组{77,21,1,3,5}按题述要求比较,不相等元素个数为0数组{1,3,5}和数组{77,21,1,3,5,7}按题述要求比较,不相等元素个数为3• 要求实现函数:int array_compare(int len1, int array1[], int len2, int array2[])【输入】 int len1:输入被比较数组1的元素个数;int array1[]:输入被比较数组1;int len2:输入被比较数组2的元素个数;int array2[]:输入被比较数组2;【输出】 无【返回】 不相等元素的个数,类型为int• 示例1) 输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5},int len2 = 5函数返回:02) 输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5,7},int len2 = 6函数返回:3
#include<stdlib.h> #include<stdio.h> #include<string.h> int array_compare(int len1,int array1[],int len2,int array2[]) { int count=0; for(;len1>=0&&len2>=0;len1--,len2--) { if(array1[len1-1]==array2[len2-1]) { count++; } } return count; } int main() { int result=0; int array1[]={1,3,5}; int len1=3; int array2[]={77,12,1,3,5}; int len2=5; result=array_compare(len1, array1, len2, array2); ///result=array_compare( len1, array1[], len2, array2[]);不能这样 // 函数形参中永远只是传得首地址,不能传数组 切记切记!!!!!! printf("the result is %d", result); }[/code]8、简单四则运算• 问题描述: 输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值注: 1、表达式只含 +, -, *, / 四则运算符,不含括号2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况3、要考虑加减乘除按通常四则运算规定的计算优先级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”函数返回:69、选秀节目打分分为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,judge_type[] 里存储与 score[] 数组对应的评委类别,judge_type[i] == 1,表示专家评委,judge_type[i] == 2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分 = 专家评委平均分 * 0.6 + 大众评委 * 0.4,总分取整。如果没有大众评委,则 总分 = 专家评委平均分,总分取整。函数最终返回选手得分。函数接口 int cal_score(int score[], int judge_type[], int n)
#include<stdio.h>#include<string.h>#include<iostream.h>#include<conio.h>#define N 5int cal_score(int score[],int judge_type[],int n){int expert=0;int dazhong=0;int zongfen=0;int i;int number=0;for(i=0;i<N;i++){if(judge_type[i]==1){expert=expert+score[i];number++;}else dazhong=dazhong+score[i];}if(number==N){zongfen=(int)(expert/N);}else{expert=(int)(expert/number);dazhong=(int)(dazhong/(N-number));zongfen=int(0.6*expert+0.4*dazhong);}return zongfen;}int main(){int score;int judge_type;int numberlast=0;int i;printf("please input the %d score:\n",N);for(i=0;i<N;i++)scanf("%d",&score[i]);printf("please input the level(1:expert,2:dazhong)\n");for(i=0;i<N;i++)scanf("%d",&judge_type[i]);numberlast=cal_score(score,judge_type,N);printf("the last score is %d\n",numberlast);return0;}[/code]10、给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。例如:input[] = {3, 6, 1, 9, 7} output[] = {3, 7, 9, 6, 1}; input[] = {3, 6, 1, 9, 7, 8} output[] = {1, 6, 8, 9, 7, 3}
#include<stdio.h>#include<string.h>#include<conio.h>void sort(int input[],int n,int output[]){int i,j;int k=1;int temp;int med;for(i=0;i<n;i++)for(j=0;j<n-i;j++)if(input[j]>input[j+1]){temp=input[j];input[j]=input[j+1];input[j+1]=temp;}if(n%2!=0){for(i=0;i<n;i++)printf("%2d",input[i]);printf("\n");med=(n-1)/2;output[med]=input[n-1];for(i=1;i<=med;i++){output[med-i]=input[n-1-k];output[med+i]=input[n-2-k];k=k+2;}}else{for(i=0;i<n;i++)printf("%2d",input[i]);printf("\n");med=n/2;output[med]=input[n-1];for(i=1;i<=med-1;i++){output[med-i]=input[n-1-k];output[med+i]=input[n-2-k];k=k+2;}output[0]=input[0];}for(i=0;i<n;i++)printf("%2d",output[i]);printf("\n");}int main(){int a[6]={3,6,1,9,7,8};int b[6]={0};for(int i=0;i<6;i++)printf("%2d",a[i]);printf("\n");sort(a,6,b);return0;}[/code]11、操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 < 50,用户任务的优先级 >= 50且 <=255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。函数scheduler实现如下功能,将task[] 中的任务按照系统任务、用户任务依次存放到 system_task[] 数组和 user_task[] 数组中(数组中元素的值是任务在task[] 数组中的下标),并且优先级高的任务排在前面,数组元素为-1表示结束。例如:task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99} system_task[] = {0, 3, 1, 7, -1} user_task[] = {4, 8, 2, 6, -1}函数接口 void scheduler(int task[], int n, int system_task[], int user_task[])12、 从两个数组的最后一个元素比较两个数组中不同元素的个数,如有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。 函数原型为 int compare_array( int len1, int array1[], int len2, int array2[] ); 其中,len1与len2分别为数组array1[]和array2[]的长度,函数返回值为两个数组不同元素的个数。 以下是上题的函数完整实现:
#include<stdio.h>int compare_array(int len1,int array1[],int len2,int array2[]){int i,t,small,num=0;//把两数组倒置for(i=0;i<len1/2;i++){t=array1[i];array1[i]=array1[len1-i-1];array1[len1-i-1]=t;}for(i=0;i<len2/2;i++){t=array2[i];array2[i]=array2[len2-i-1];array2[len2-i-1]=t;}//输出倒置后的两数组/* for(i=0;i<len1;i++)printf("%d ",array1[i]);printf("\n");for(i=0;i<len2;i++)printf("%d ",array2[i]);*/ printf("\n");if(len1>len2)small=len2;elsesmall=len1;num=small;for(i=0;i<small;i++){if(array1[i]==array2[i])num--;}printf("num=%d\n",num);return num;}void main(){int array1[5]={77,21,1,3,5},array2[3]={1,3,5};int len1=5,len2=3;compare_array(len1,array1,len2,array2);}[/code]13、输入一个字符串,用指针求出字符串的长度。答案:
#include <stdio.h>int main(){char str[20], *p;int length=0;printf(“Please input a string: ”);gets(str);p=str;while(*p++){length++;}printf(“The length of string is %d\n”, length);return 0;}[/code]14、使用C语言实现字符串中子字符串的替换描述:编写一个字符串替换函数,如函数名为 StrReplace(char* strSrc, char* strFind, char* strReplace),strSrc为原字符串,strFind是待替换的字符串,strReplace为替换字符串。举个直观的例子吧,如:“ABCDEFGHIJKLMNOPQRSTUVWXYZ”这个字符串,把其中的“RST”替换为“ggg”这个字符串,结果就变成了:ABCDEFGHIJKLMNOPQgggUVWXYZ答案一:
#include <stdio.h>#include <string.h>void StrReplace(char* strSrc, char* strFind, char* strReplace);#define M 100;void main(){char s[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";char s1[]="RST";char s2[]="ggg";StrReplace(s,s1,s2);printf("%s\n",s);}void StrReplace(char* strSrc, char* strFind, char* strReplace){int i=0;int j;int n=strlen(strSrc);int k=strlen(strFind);for(i=0;i<n;i++){if(*(strSrc+i)==*strFind){for(j=0;j<k;j++){if(*(strSrc+i+j)==*(strFind+j)){*(strSrc+i+j)=*(strReplace+j);}else continue;}}}}[/code]答案二:
#include <stdio.h>#define MAX 100StrReplace(char *s, char *s1, char *s2) {char *p;for(; *s; s++) {for(p = s1; *p && *p != *s; p++);if(*p) *s = *(p - s1 + s2);}}int main(){char s[MAX]; //s是原字符串char s1[MAX], s2[MAX]; //s1是要替换的//s2是替换字符串puts("Please input the string for s:");scanf("%s", s);puts("Please input the string for s1:");scanf("%s", s1);puts("Please input the string for s2:");scanf("%s", s2);StrReplace(s, s1, s2);puts("The string of s after displace is:");printf("%s\n", s);return 0;}[/code]答案三:
#include <stdio.h>#include <stdlib.h>#include <string.h>#define M 100void StrReplace(char* strSrc, char* strFind, char* strReplace);int main(){char s[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";char s1[]="RST";char s2[]="gggg";StrReplace(s,s1,s2);printf("%s\n",s);return 0;}void StrReplace(char* strSrc, char* strFind, char* strReplace){while(*strSrc != '\0'){if(*strSrc == *strFind){if(strncmp(strSrc,strFind,strlen(strFind)) == 0 ){int i = strlen(strFind);int j = strlen(strReplace);printf("i = %d,j = %d\n",i,j);char *q = strSrc + i;printf("*q = %s\n",q);while((*strSrc++ = *strReplace++) != '\0');printf("strSrc - 1 = %s\n",strSrc - 1);printf("*q = %s\n",q);while((*strSrc++ = *q++) != '\0');}else{strSrc++;}}else{strSrc++;}}}[/code]15、编写一个程序实现功能:将字符串”Computer Secience”赋给一个字符数组,然后从第一个字母开始间隔的输出该串,用指针完成。答案:
#include <stdio.h>#include <string.h>int main(){char str[]=”Computer Science”;int flag=1;char *p=str;while(*p){<span style="white-space:pre"> </span>if ( flag )<span style="white-space:pre"> </span> {<span style="white-space:pre"> </span>printf(“%c”,*p);<span style="white-space:pre"> </span>}<span style="white-space:pre"> </span> flag = (flag + 1) % 2;<span style="white-space:pre"> </span>p++;}printf(“\n”);return 0;}[/code]16、编写一个程序实现功能:将两个字符串合并为一个字符串并且输出,用指针实现。char str1[20]={“Hello ”}, str2[20]={“World ”};答案:
#include <stdio.h>int main(){char str1[20]={“Hello ”}, str2[20]={“World ”};char *p=str1, *q=str2;while( *p ) p++;while( *q ){*p = *q;p++;q++;}*p = ‘\0’;printf(“%s\n”, str1);return 0;}[/code]17、算分数的问题,去掉一个最高分一个最低分,求平均分
float iMin = 5;float iMax = 0;int i;int n;float Num; // 实际代码需要用一个比n大的值,或动态分配float Sum = 0;float average;for (i=0; i<n; i++){Sum += Num[i];if (Num[i]<iMin) iMin = Num[i];if (Num[i]>iMax) iMax = Num[i];}if (n>2){Sum -= iMin + iMax;average = Sum/(n-2);}[/code]运行结果:the last score is :85.7518、对一个数组,将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数 若奇数和偶数不等长,则把剩下的直接放到数组中。思路:先进行奇偶判断,得到奇数和偶数数组。然后对两数组排序,进行长度判断,最后组织数据。
#include<stdio.h>#include<malloc.h>void jiou(int a[],int n){int*p1;int*p2;int i,j;int k=0;int kk=0;int count1=0;int count2=0;int temp;int temp2;int m=0;p1=(int*)malloc(sizeof(int)*n);p2=(int*)malloc(sizeof(int)*n);for(i=0;i<n;i++){p1[i]=0;p2[i]=0;}for(i=0;i<n;i++){if((a[i]%2)!=0)p2[kk++]=a[i];elsep1[k++]=a[i];}count1=k;count2=kk;for(i=0;i<count2;i++)printf("%3d",p2[i]);printf("\n");for(i=0;i<count2;i++)for(j=0;j<count2-1-i;j++)if(p2[j]>p2[j+1]){temp2=p2[j];p2[j]=p2[j+1];p2[j+1]=temp2;}for(i=0;i<count2;i++)printf("%3d",p2[i]);printf("\n");for(i=0;i<count1;i++)printf("%3d",p1[i]);printf("\n");for(i=0;i<count1;i++)for(j=0;j<count1-i;j++)if(p1[j]<p1[j+1]){temp=p1[j];p1[j]=p1[j+1];p1[j+1]=temp;}for(i=0;i<count1;i++)printf("%3d",p1[i]);printf("\n");if(count1>count2){for(i=0;i<count2;i++){a[i+m]=p2[i];a[i+1+m]=p1[i];m=m+1;}for(i=0;i<count1-count2;i++)a[2*count2+i]=p1[i+count2];}else{for(i=0;i<count1;i++){a[i+m]=p2[i];a[i+1+m]=p1[i];m=m+1;}for(i=0;i<count2-count1;i++)a[2*count1+i]=p2[i+count1];}for(i=0;i<n;i++)printf("%3d",a[i]);printf("%\n");}void main(){int a[10]={2,3,14,6,2,15,12,14,4,11};jiou(a,10);}
运行结果:
31511
31115
2146212144
1414126422
314111415126422
相关文章推荐
- 寻找最大的k个数
- 阿里校招笔试的一道逻辑题
- Eclipse修改编码格式(比较全的)
- 欢迎使用CSDN-markdown编辑器
- C++/CLR 使用(VS2012,VS2013,VS2015)编写Windows窗体应用程序
- Tutorial 06: Synching Audio
- 【codeforces#25B】 Phone numbers
- html5 use video camera
- pip install 出现报asciii码错误的问题
- 557 - Burger(递推)
- [APUE] 再读之进程环境
- C语言实现快速排序
- Hibernate学习笔记整理系列-------一、Hibernate简介
- JavaScript实现的多个图片广告交替显示效果代码
- Linux磁盘管理及文件系统管理中命令的使用
- 浅拷贝——C++编译器默认提供的赋值运算符
- 【机房收费系统】——回
- 在线支付
- [LeetCode] Find Minimum in Rotated Sorted Array
- 第四讲:debugging simulation mismatches