c语言: 输入10个字符串,用选择排序法对十个字符串按大到小排序并输出

如题所述

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#define N 10/* 设定要输入的字符串个数,可更改 */

int cmp(char *p1,char *p2) /* 字符串比较函数 */
{int i=0;
while (*(p1+i)==*(p2+i))
if (*(p1+i++)=='\0') return 0; /* 这里是先判断*(p1+i)=='\0',然后再是i++ */
return (*(p1+i)-*(p2+i));
}

void sort(char *a[N]) /*排序函数*/
{char *temp;
int i,j;
for(i=0;i<N-1;i++)/* 选择排序 */
for(j=i+1;j<N;j++)
if(cmp(a[i],a[j])<0)
{temp=a[i];/* 交换的是字符串的地址,不是字符串的内容,可更改 */
a[i]=a[j];
a[j]=temp;
}
}
int main(void )
{int i;
char s[N][81],*p[N];/* 设定每个字符串不超过80字节 */
printf("Please input %d strings one by one:\n",N);
for(i=0;i<N;i++)
{gets(s[i]);
p[i]=s[i];
}
sort(p);
printf("\nThe sequence after sort is:\n");
for(i=0;i<N;i++)
printf("%s\n",p[i]);
getch();
return 0;
}

运行结果:
Please input 10 strings one by one:
asdf
dfggf
jkhl
uiop
ghjk
aaaa
vnbmkgh
bbbb
dgfjyt
cccc

The sequence after sort is:
vnbmkgh
uiop
jkhl
ghjk
dgfjyt
dfggf
cccc
bbbb
asdf
aaaa
温馨提示:内容为网友见解,仅供参考
无其他回答

...输入10个字符串,用选择排序法对十个字符串按大到小排序并输出
include<stdio.h> include<stdlib.h> define N 10\/* 设定要输入的字符串个数,可更改 *\/ int cmp(char *p1,char *p2) \/* 字符串比较函数 *\/ {int i=0;while (*(p1+i)==*(p2+i))if (*(p1+i++)=='\\0') return 0; \/* 这里是先判断*(p1+i)=='\\0',然后再是i++ *\/...

如题。用选择排序法编写c语言,实现从键盘上输入10个数,按从大到小的...
int i,j,a[10],t;printf("输入数");for (i = 0; i < 10; i++)scanf("%d",&a[i]);for (i = 0; i < 10; i++){ for (j = i + 1; j < 10;j++)if (a[i] < a[j]){ t = a[i];a[i] = a[j];a[j] = t;} } printf("从大到小");for (i = 0;...

C语言编程题: 输入10个字符串,将其从大到小排序后输出。
char n;int a[15];while(~scanf("%c",&n)){ for(int i=0;i<10;i++){ scanf("%d",&a[i]);} getchar();if(n=='A') swap1(a,10);else swap2(a,10);for(int i=0;i<10;i++){ if(i==0)printf("%d",a[i]);else printf(" %d",a[i]);} printf("\\n");} ...

C语言:,用"选择法"对输入的10个字符按由大到小顺序排列
include<stdio.h> int main(void){ char a[11];int i,j;int max;int t;printf("请输入10个字符:\\n");gets(a);for(i = 0; i < 9; i++){ max = i;for(j = i+1; j < 10; j++)if(a[max] < a[j])max = j;t = a[max];a[max] = a[i];a[i] = t;} puts...

c语言高手帮忙:从键盘输入10个整数。用选择法或冒泡法将它们从小到大...
main(){ int s[10],t,i,j,x;printf("input 10 numbers:\\n");for(t=0;t<10;t++)scanf("%d",&s[t]);for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(s[j]>s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;} printf("the result is:\\n ");for(j=0;j<10;j++)p...

C语言问题:从键盘输入十个整数,用选择排序法对输入的数据从小到大的顺序...
int a[10],i;printf("please input 10 numbers:\\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("The array is:\\n");for(i=0;i<10;i++)printf("%-4d",a[i]);SelectSort(a,10);printf("\\nAfter sort the array is:\\n");for(i=0;i<10;i++)printf("%-4d",a[...

...输入10个整数,对其按照从小到大的顺序排序,并输出结果。
至于printf()函数,它是C语言中非常重要的格式化输出工具,它允许我们根据预设的格式控制字符串来定制输出内容。在这个程序中,它用于接收用户输入、显示排序结果以及输出控制信息。总结,通过以上步骤,C语言程序就能实现用户输入10个整数并按顺序输出的功能,同时利用printf()函数进行格式化输出和数据交换。

C语言用选择法对10个整数按从大到小排序。10个整数用scanf函数...
min]=temp;} \\x0d\\x0aprintf("\\n从大到小排列是:\\n"); \/\/输出字符\\x0d\\x0afor(i=10;i>=1;i--) \/\/循环输出按大小排列的数据\\x0d\\x0aprintf("%5d",a[i]);\\x0d\\x0aprintf("\\n");\/\/每输出一个数据换行\\x0d\\x0a} ...

...输入10个整数,对其按照从小到大的顺序排序,并输出结果。
{ int a[10];int i,j;int temp;printf("请输入10个整数:");for(i=0;i<10;i++){ scanf("%d",&a);} for(i=0;i<9;i++){ for(j=0;j<9-i;j++){ if(a[j]>a[j+1]){ temp=a[j];a[j]=a[j+1];a[j+1]=temp;} } } printf("排列后顺序为:");for(i=0;i...

C语言:从键盘输入10个整数存入数组,找出其中最大和最小值,并输出。 麻...
intmain(){ inti;floatmax,min,num[10];printf("请输入10个数,每输入一个数按回车键结束:\n");for(i=0;i<10;i++){ scanf("%f",&num[i]);} max=min=num[0];for(i=1;i<10;i++){ if(max<num[i])max=num[i];elseif(min>...

相似回答