当前位置: 代码迷 >> 综合 >> 华科15_2
  详细解决方案

华科15_2

热度:34   发布时间:2023-09-22 23:21:47.0

问题:

输入两个字符串,并对其进行如下操作:

1.将两字符串进行拼接  如string buff   ----->  stringbuff

2.对于拼接后的字符串,输出奇数下标组成的子串和偶数下标组成的子串。例如srnbf,tiguf

3.对于奇数下标组成的子串以及偶数下标组成的子串进行排序,如bfnrs fgitu

分析:

字符串拼接可以使用string.h 中的strcat;子串排序可以使用stdlib.h中的qsort

代码:

#include <iostream>  
#include <stdio.h>   
#include <string.h>  
#include <math.h>  
#include <vector>  
#include <queue>  
#include <stack>  
#include <map>  
#include <string>  
#include <algorithm>  
#include <iomanip>
#include <stdlib.h>
#define MAX 1000
using namespace std;/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void display(char * str){int length= strlen(str);for(int i=0;i<length;i++){printf("%c",str[i]);}printf("\n");
}
void display(char * str,int length){for(int i=0;i<length;i++){printf("%c",str[i]);}printf("\n");
}
int comp(const void *a, const void *b){return *(char *)a-*(char *)b;
}
int main(int argc, char** argv) {char str1[MAX],str2[MAX];scanf("%s %s",str1,str2);//1.拼接 char *str3=strcat(str1,str2);display(str3);//2.输入奇数下标和偶数下标子串 char odd[MAX],even[MAX];int size1=0,size2=0;int length=strlen(str3);for(int i=0;i<length;i++) {if((i+1) % 2 == 1){odd[size1++]=str3[i];}else{even[size2++]=str3[i];}}display(odd,size1);display(even,size2);//3.对于奇数下标组成的子串和偶数下标组成的子串 进行排序qsort(odd,size1,sizeof(odd[0]),comp);qsort(even,size2,sizeof(even[0]),comp);display(odd,size1);display(even,size2);return 0;
}


代码分析:

1.字符串拼接

str3=strcat(str1,str2)

2.qsort函数

功 能: 使用快速排序例程进行排序
头文件:stdlib.h
用 法: void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));
参数: 1 待排序数组首地址
2 数组中待排序元素数量
3 各元素的占用空间大小
4 指向函数的指针,用于确定排序的顺序
int a[100];
qsort(a,1000,sizeof(int),comp);
1
2
3
4
int  comp( const  void *a, const  void *b)
{
return  *( int *)a-*( int *)b;
}




  相关解决方案