|

楼主 |
发表于 2015-3-23 01:04:24
|
显示全部楼层
- /**********************************************************************************************
- 在主函数中输入10个等长的字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串。
- **********************************************************************************************/
- #if(0)
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- void sort(char s[][20]);
- int i;
- char str[10][20];
- printf("input 10 strings:\n");
- for (i=0;i<10;i++)
- scanf("%s",str[i]);
- sort(str);
- printf("Now,the sequence is:\n");
- for (i=0;i<10;i++)
- printf("%s\n",str[i]);
- return 0;
- }
- void sort(char s[][20])
- {
- int i,j;
- char *p,temp[20];
- p=temp;
- for (i=0;i<9;i++)
- for (j=0;j<9-i;j++)
- if (strcmp(s[j],s[j+1])>0)
- {
- strcpy(p,s[j]);
- strcpy(s[j],s[+j+1]);
- strcpy(s[j+1],p);
- }
- }
- #endif
- #if(1)
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- void sort(char (*p)[6]);
- int i;
- char str[10][6];
- char (*p)[6];
- printf("input 10 strings:\n");
- for (i=0;i<10;i++)
- scanf("%s",str[i]);
- p=str;
- sort(p);
- printf("Now,the sequence is:\n");
- for (i=0;i<10;i++)
- printf("%s\n",str[i]);
- return 0;
- }
- void sort(char (*s)[6])
- {
- int i,j;
- char temp[6],*t=temp;
- for (i=0;i<9;i++)
- for (j=0;j<9-i;j++)
- if (strcmp(s[j],s[j+1])>0)
- {
- strcpy(t,s[j]);
- strcpy(s[j],s[+j+1]);
- strcpy(s[j+1],t);
- }
- }
- #endif
- #if(0)
- #include <stdio.h>
- #include <string.h>
- char *a[10]; //全局变量,目的是在调用后返回时,指针的指向也跟着变化
- int main()
- {
- void px(char *c[],int n);
- char b[10][20]={0},temp;
- int i,j,k,n=10;
-
- for (i=0,k=0; i<10; i++,k++) //字符串输入
- {
- a[k]=b[i];
- for(j=0;j<20;j++)
- {
- temp=getchar();
- if(temp=='\n')
- {
- b[i][j]='\0';
- break;
- }
- b[i][j]=temp;
-
- }
- }
-
- for (i=0;i<10;i++) //打印输入的字符串
- {
- if(i%5==0)
- printf("\n");
- printf("%10s",b[i]); //这里b[i]换成a[i]输出是一样的,因为这时a[i]指向b[i]
- }
- printf("\n\n");
-
-
- px(a,10); // 调用实参把数组调入
-
-
- for(i=0;i<10;i++) //打印排序后的,字符口串
- {
- if(i%5==0)
- printf("\n");
- printf("%10s",b[i]); // 这里用的是b[i]即打印数组,因为数组里字符位置没变所以原样输出
- }
-
-
- printf("\n\n");
-
- for (i=0;i<10;i++) //打印排序后的,字符口串(指针)
- {
- if(i%5==0)
- printf("\n");
- printf("%10s",a[i]); //这里用工a[i]即用指针,指针已经重新排序了,所以打印排序后的结果
- }
-
- printf("\n\n");
-
- return 0;
-
-
- }
- void px(char *c[],int n)
- {
- int i,k;
- char *temp;
- for (i=n-1;i>=0;i--)
- {
- for (k=0;k<i;k++)
- {
- if(strcmp(c[k],c[k+1])>0) //指针所指字符串比较(排序)
- {
- temp=c[k]; //指针地址交换
- c[k]=c[k+1];
- c[k+1]=temp;
-
-
- }
-
- }
- }
-
-
- }
- #endif
- #if(0)
- #include <stdio.h>
- #include <string.h>
- char b[10][20]={0}; // 全局变量数组,目的在调用函数后,数组本体已经排过序了
- int main()
- {
- void px(char d[][20],int n);
- char *a[10],temp;
- int i,j,k,n=10;
-
- for (i=0,k=0; i<10; i++,k++) //字符串输入
- {
- a[k]=b[i];
- for(j=0;j<20;j++)
- {
- temp=getchar();
- if(temp=='\n')
- {
- b[i][j]='\0';
- break;
- }
- b[i][j]=temp;
-
- }
- }
-
- for (i=0;i<10;i++) //打印输入的字符串
- {
- if(i%5==0)
- printf("\n");
- printf("%10s",b[i]); //这里b[i]换成a[i]输出是一样的,因为这时a[i]指向b[i]
- }
- printf("\n\n");
-
- px(b,10); // 调用实参把数组调入
-
- for(i=0;i<10;i++) //打印排序后的,字符口串(数组)
- {
- if(i%5==0)
- printf("\n");
- printf("%10s",b[i]);
- }
-
- printf("\n\n");
-
- for (i=0;i<10;i++) //打印排序后的,字符口串(指针)
- {
- if(i%5==0)
- printf("\n");
- printf("%10s",a[i]);
- }
-
- printf("\n\n");
-
- return 0;
-
-
- }
- void px(char d[][20],int n)
- {
- int i,k;
- char temp[20];
- for (i=n-1;i>=0;i--)
- {
- for (k=0;k<i;k++)
- {
- if(strcmp(d[k],d[k+1])>0) //字符串比较,并排序
- {
- strcpy(temp,d[k]); //字符串复制
- strcpy(d[k],d[k+1]);
- strcpy(d[k+1],temp);
- }
-
- }
- }
-
-
- }
- #endif
- #if(0)
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char *px(char *c[],int n),*w;
- char *a[10],b[10][20]={0},temp;
- int i,j,k,n=10;
-
- for (i=0,k=0; i<10; i++,k++) //字符串输入
- {
- a[k]=b[i];
- for(j=0;j<20;j++)
- {
- temp=getchar();
- if(temp=='\n')
- {
- b[i][j]='\0';
- break;
- }
- b[i][j]=temp;
-
- }
- }
-
- for (i=0;i<10;i++) //打印输入的字符串
- {
- if(i%5==0)
- printf("\n");
- printf("%10s",b[i]); //这里b[i]换成a[i]输出是一样的,因为这时a[i]指向b[i]
- }
- printf("\n\n");
-
-
-
-
- w=px(a,10); // 调用实参把数组调入
-
-
-
- #if(0)
- for(i=0;i<10;i++) //打印排序后的,字符口串
- {
- if(i%5==0)
- printf("\n");
- printf("%10s",b[i]); // 这里用的是b[i]即打印数组,因为数组里字符位置没变所以原样输出
- }
- #endif
-
- printf("\n\n");
-
-
-
-
- for (i=0;i<10;i++) //打印排序后的,字符口串(指针)
- {
- if(i%5==0)
- printf("\n");
- printf("%10s",w); //这里用工a[i]即用指针,指针已经重新排序了,所以打印排序后的结果
- }
-
- printf("\n\n");
-
- return 0;
-
-
- }
- char *px(char *c[],int n)
- {
- int i,k,j=0;
- char *temp,*o[10];
- for (i=n-1;i>=0;i--)
- {
- for (k=0;k<i;k++,j++)
- {
- if(strcmp(c[k],c[k+1])>0) //指针所指字符串比较(排序)
- {
- temp=c[k]; //指针地址交换
- c[k]=c[k+1];
- c[k+1]=temp;
- o[j]=c[k+1];
-
- }
-
- }
- }
-
- return *o;
- }
- #endif
复制代码
前二个是网上找的,后面的是我自己做的
|
|