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型。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-20
#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;
}

本回答被提问者采纳
第2个回答  2017-12-08
#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;
}

相似回答