问题:
输入两个字符串,并对其进行如下操作:
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;
}
|