1条回答 默认 最新
- 技术专家团-小桥流水 2021-11-20 11:15关注
代码如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> void fenlei(char all[][100],int n,char zm[][100],char nmb[][100],int *nzm,int *nsz) { int i; int k=0,m=0; //记录数字和字母数组的个数 int o=0,p=0,q=0; for (i=0;i<n;i++) { o=0;p=0;q=0; while(all[i][o]) { if(all[i][o] >='0' && all[i][o]<='9') nmb[k][p++] = all[i][o]; else if(all[i][o] >='0' && all[i][o]<='9') zm[m][q++] = all[i][o]; o++; } nmb[k][p] = 0; zm[m][q] = 0; k++; m++; } *nzm = m; *nsz = k; } //选择排序,升序 void select_sort(int a[],int n) { int i,j; int minindex,tmp; for (i=0;i<n-1;i++) { minindex = i; //找出第i小的数所在的位置 for(j=i+1;j<n;j++) { if(a[j] < a[minindex]) minindex = j; } //将第i小的数放在第i个位置 if (i != minindex) { tmp = a[i]; a[i] = a[minindex]; a[minindex] = tmp; } } } //冒泡排序 void bubble_sort(char a[][100],int n) { int i,j; char t[100]; for (i=0;i<n-1;i++) { for (j=0;j<n-1-i;j++) { if(strcmp(a[j], a[j+1]) > 0) //从小到大,升序 { memset(t,0,100); memcpy(t,a[j],strlen(a[j])); memset(a[j],0,100); memcpy(a[j],a[j+1],strlen(a[j+1])); memset(a[j+1],0,100); memcpy(a[j+1],t,strlen(t)); } } } } int main() { int i,n; int nmbsz = 0,nmbzm = 0; //数字和字母的组数 char all[30][100],nmb[30][100],zm[30][100]; int sz[30]; //保存转换后的数字 printf("请输入字符串的个数:"); scanf("%d",&n); printf("请输入%d个字符串:\n",n); for(i=0;i<n;i++) scanf("%s",all[i]); //读取一行字符串 //分类 fenlei(all,n,zm,nmb,&nmbzm,&nmbsz); //将数字字符转成数字 for(i=0;i<nmbsz;i++) sz[i] = atoi(nmb[i]); //数字排序 select_sort(sz,nmbsz); //将字母字符串排序 bubble_sort(zm,nmbzm); //显示 printf("排序后的字母:\n"); for (i=0;i<nmbzm;i++) { printf("%s\n",zm[i]); } printf("排序后的数字:\n"); for (i=0;i<nmbsz;i++) { printf("%d ",sz[i]); } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
- ¥20 神经网络Sequential name=sequential, built=False
- ¥16 Qphython 用xlrd读取excel报错
- ¥15 单片机学习顺序问题!!
- ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
- ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
- ¥15 相敏解调 matlab
- ¥15 求lingo代码和思路
- ¥15 公交车和无人机协同运输
- ¥15 stm32代码移植没反应