C语言编程题:输入N个英文单词,建立字符串数组,按字典顺序输出这些英文单词,要求用指针实现。
#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("<格式化字符串>",<参量表>)。
其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。
参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。
比如:
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型。
#include <stdio.h>
#include <malloc.h>
#define N 10
int main( void )
{
int i, j;
char *p, temp;
p = ( char * )malloc( sizeof( char ) * ( N + 1 ) );
fgets( p, N + 1, stdin );
for(i = 0; i < N - 1; i++ )
for( j = i; j < N; j++ )
if( *( p + i ) > *( p + j ) ){
temp = *( p + i );
*( p + i ) = *( p + j );
*( p + j ) = temp;
}
printf( "%s\n", p );
return 0;
}
#include<stdio.h>
#include<string.h>
#define N 5
void swap(char *p1,char *p2){
char temp[100];
strcpy(temp,p1);
strcpy(p1,p2);
strcpy(p2,temp);
}
int main(){
int i,j;
char str1[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");
return 0;
}