和c语言斗智斗勇 2024-12-04 10:47 采纳率: 100%
浏览 7
已结题

怎么用函数交换字符数组的字符串?


#include <stdio.h>
#include <string.h>

void delmaxmin(int a[],double *ave,int len);
void sort (int a1[],int a2[],int a[3],int len,
            char name1[],char name2[],char name3[]);
void swap(int *a,int *b);

int main ()
{
    int s1[]={96,97,98,98,100,97,96};//682
    int s2[]={94,97,98,96,100,99,97};//681
    int s3[]={95,100,99,96,97,96,97};//680
    double *ave;
    int length=7;
    char n1[20]="li";
    char n2[20]="zhang";
    char n3[20]="zhou";
    
    
    delmaxmin(s1,ave,length);
    
    sort (s1,s2,s3,length,n1,n2,n3);
    
    printf("ave=%.2f\n",*ave);
    return 0;
}

void delmaxmin(int a[],double *ave,int len)
{
    int max,min;
    double sum=0;
    max=min=a[0];
    for(int i=0;i<len;i++){
        if(a[i]>max){
            max=a[i];
        }
        if(a[i]<min){
            min=a[i];
        }
        sum+=a[i];
    }

    sum-=(max+min);
    *ave=sum/(len-2);
}
void sort (int a1[],int a2[],int a3[],int len,
            char *name1,char *name2,char *name3)
{
    int sum1,sum2,sum3;
    sum1=sum2=sum3=0;
    for(int i=0;i<len;i++){
        sum1+=a1[i];
    }
    for(int i=0;i<len;i++){
        sum2+=a2[i];
    }
    for(int i=0;i<len;i++){
        sum3+=a3[i];
    }
    
    int *p,*q,*r;
    p=&sum1,q=&sum2,r=&sum3;
    
    if(*p>*q) swap(name1,name2);
    if(*p>*r) swap(name1,name3);
    if(*q>*r) swap(name2,name3);
    printf("%s<%s<%s\n",name1,name2,name3);
}

void swap(char *a,char *b)
{
    char t[20];
    strcpy(t,a);
    strcpy(a,b);
    strcpy(b,t);
}

img

  • 写回答

2条回答 默认 最新

  • 浪客 2024-12-04 10:58
    关注

    swap的声明和实现对不上。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月13日
  • 已采纳回答 12月5日
  • 创建了问题 12月4日