猿问

如何使用C语言实现一个函数,并将数组整体升序排列?

函数原型为:
void inplace_merge(int* start, int* middle, unsigned int n)
参数start为数组首地址,middle为数组后半部首地址,n为数组元素个数
要求有主函数,便于我测试程序正确性
重复了,此题改为:
实现一个函数,将某字符串中最后一次出现的指定子串替换为另一个字符串
函数原型为:
void rp_last(char* s, char* sub1, char* sub2)
参数s为待处理的字符串,sub1为指定的子串,使用sub2替换最后一次出现的sub1
要求有主函数,便于我测试程序正确性

aluckdog
浏览 176回答 2
2回答

ITMISS

我亲手写的。#include<stdio.h>#include<stdlib.h>int get_len(char *);void rp_last(char* , char* , char* );int get_len(char* str){if(str == NULL) return -1;int i;for(i=0;str[i];i++);return i;}void rp_last(char *s,char *sub1,char *sub2){int i,j;int k;int sLen;int sub1Len;int sub2Len;sLen=get_len(s);sub1Len=get_len(sub1);sub2Len=get_len(sub2);for(i=sLen-1;i>=0;i--){for(j=sub1Len-1,k=i;j>=0&&k>=0;j--,k--)if(s[k]!=sub1[j]) break;if(j<0) break;}//printf("%d\n",i);if(j>=0)printf("not found!\n");else if(sub1Len>sub2Len){k=sub1Len-sub2Len;for(j=i+1;s[j-k]=s[j];j++);for(j=sub2Len-1;j>=0;j--,i--)s[i-k]=sub2[j];}else{k=sub1Len-sub2Len;s[k+sLen]='\0';for(j=sLen-1;j>i;j--)s[j+k]=s[j];for(j=sub2Len-1;j>=0;j--,i--)s[i+k]=sub2[j];}printf("result:%s\n",s);return ;}void main(){char s[256];char sub1[100];char sub2[100];printf("s :");gets(s);printf("sub1:");gets(sub1);printf("sub2:");gets(sub2);rp_last(s,sub1,sub2);return ;}

汪汪一只猫

#include<iostream.h>void sort(int a[],int n) //升序{for(int i=0;i<n;i++)for(int j=i+1;j<n;j++){if(a[i]<a[j]){int temp;temp=a[i];a[i]=a[j];a[j]=temp;}}}void main(){int a[10];for(int i=0;i<10;i++)cin>>a[i];sort(a,10);cout<<"after sorted,the array is:"<<endl;for(i=0;i<10;i++)cout<<a[i]<<" ";cout<<endl;}
随时随地看视频慕课网APP
我要回答