用二维数组记录书名,再声明一个指针数组并使各元素分别指向各书名,然后对指针数组元素按其指向的书名的字典顺序排序。这样比直接拷贝书名的效率会高些。举例如下:
//#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"
#include "string.h"
#define N 10
void mysort(char *s[],int n){
int i,j,k
for(i=0i<ni++){
for(k=i,j=k+1j<nj++)
if(strcmp(s[k],s[j])>0)
k=j
if(i!=k){
s[i]=(char *)((unsigned)s[i]^(unsigned)s[k])//交换指针
s[k]=(char *)((unsigned)s[k]^(unsigned)s[i])
s[i]=(char *)((unsigned)s[i]^(unsigned)s[k])
}
}
}
int main(void){
char book[N][30],*pbook[N]
int i,k
for(i=0i<Npbook[i]=book[i++])
printf("Please enter 10 book-name...\n")
for(i=0i<Npbook[i]=book[i++])
scanf("%s",book+i)
mysort(pbook,N)
for(k=i=0i<Nprintf(++k%5 ? "%s " : "%s\n",pbook[i++]))//打出来看看......
if(k%5) printf("\n")
return 0
}
#include<stdio.h>
#include<string.h>
#defineN5
voidswap(char*p1,char*p2){
chartemp[100];
strcpy(temp,p1);
strcpy(p1,p2);
strcpy(p2,temp);
}
intmain(){
inti,j;
charstr1[N][100],*str[N];
for(i=0;i<N;i++){
scanf("%s",*(str1+i));
}
for(i=0;i<N;i++){
str[i]=*(str1+i);
}
for(i=0;i<N;i++){
for(j=i+1;j<N;j++){
if(strcmp(str[i],str[j])>0){swap(str[i],str[j]);}
}
}
for(i=0;i<N;i++){
printf("%s",str[i]);
}
printf("\n");
return0;
}
扩展资料:printf用法:
printf()函数的调用格式为:printf("&lt;格式化字符串&gt;",&lt;参量表&gt;)。
其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。
参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。
比如:
inta=1234;
printf("a=%d\n",a);
输出结果为a=1234。
printf的格式控制的完整格式:
%-0m.nl或h格式字符
下面对组成格式说明的各项加以说明:
①%:表示格式说明的起始符号,不可缺少。
②-:有-表示左对齐输出,如省略表示右对齐输出。
③0:有0表示指定空位填0,如省略表示指定空位不填。
④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。
⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)