首页 > 学院 > 开发设计 > 正文

字符串排序

2019-11-11 06:19:34
字体:
来源:转载
供稿:网友

之前写博客发现网页打不开,不知是什么原因,

今天试了一下 终于打开了 之前也一直应付考试  没时间写代码 还要学习汇编语言 先来一小段开个头吧:

# include <stdio.h>

/*查昊昊:输入字符个数 然后输入字符串 对字符串进行升序或降序排列*/# define N 101   //如果想录入x个字节那么就把N的数值改成x+1int gainint(int *p,int a,int b);//返回数字的位数int gainchar(char *a,int min,int max);//返回字符长度void paixu(char a[],int n,int b);void main(){    int n,c,i,d;    char B[N],S[][3]={"升","降"};do{PRintf("请输入字符串长度(2--%d):",N-1);gainint(&n,2,N-1);printf("输入字符串:/n");c=gainchar(B,n,n+1);printf("原字符串:/n%s/n",B);for(i=0;i<2;i++){printf("%s序:/n",S[i]);        paixu(B,c,i);printf("%s/n",B);}}while(1);}int gainint(int *p,int a,int b)//p相当于地址,在主函数中传入&a,就是把a的地址传到函数里,那么在函数里就可以改变a的值了{int c[2]={0,1};do{scanf("%d",p);while(getchar()!='/n');  if(*p>b||*p<a)printf("输入有误,请重新输入(%d--%d):",a,b);}while(*p>b||*p<a);    return *p;}int gainchar(char *a,int min,int max)//对*a输入范围(min,max),如果字符数组中存在'/n',将其改为'/0'{int c=-1;do{fgets(a,max,stdin);while(a[++c]);c=a[c-1]=='/n'&&c<max?c-1:c;if(c>=max-1)while(getchar()!='/n');elsea[c]='/0';if(c&&(c>max||c<min))//如果用户只输入'/n'则不提示输入错误,否则提示错误printf("输入有误,请重新输入只录入(%d--%d)字节:/n",min,max-1);}while(c>max||c<min);    return c;}void paixu(char a[],int n,int b){    int i,j,k,temp;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(b?a[j]>a[k]:a[j]<a[k])   //b=0升序  b为其他降序k=j;if(k!=i){temp=a[k];a[k]=a[i];a[i]=temp;}}}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表