结构体数组比较大小(结构体型数组)

http://www.itjxue.com  2023-01-29 15:19  来源:未知  点击次数: 

两个结构体数组比较Comp(tagAnswer *Ans,tagAnswer *AnsRead,int n)

这里我想知道,你想什么时候comp函数返回true,是所有数组中的对应元素都相等吗?

什么时候返回false,是只要有一个元素不相等,就返回?

看你的代码,与上面的情况相反,是不相同返回true,相同返回false?究竟是那种情况?

你的程序中,比较第一个元素时,就会直接返回true/false,接着退出该函数,而且char数组是不能直接判断相等不相等的,如果数组可以直接判断相等不相等的话,哪你就不用写comp了,直接比较就可以了。

另外,我知道你程序是想给出说明,但是还是要严谨一些,像main函数是一个特殊的函数,不要随便使用这个名字。如果是在C语言中,是没有true和false定义的,你是否定义了?c++好像不需要。

下面是我一种修改方案,看是否符合你的要求

它是不相等是返回true,都相等时返回false。

#includestring.h

typedef struct {

char gddm[10];

char gdxm[10];

char jysdm[10];

} tagAnswer;

int comp(tagAnswer *Ans,tagAnswer *AnsRead,int n)

{

int i;

for(i=0;in;i++)

{

if(strcmp(Ans[i].gddm,AnsRead[i].gddm) !=0 || strcmp(Ans[i].gdxm,AnsRead[i].gdxm)!=0 || strcmp(Ans[i].jysdm,AnsRead[i].jysdm)!=0)

return true;

}

return false;

}

c语言结构体数组 下面的代码为什么无法执行比较大小的部分

#include stdio.h

#include string.h

#include stdlib.h

#define N 20

typedef struct

{

char name[N];

char idnum[N];

float yw;

}stu;

stu b[N];

int shuru(stu *p);

void max(stu *s,int a);

int main()

{

int k=0;

while(true)

{

printf("开始输入学生的信息\n");

k=shuru(b);

printf("找出最高分\n");

max(b,k);

}

return 0;

}

int shuru(stu *p)

{

int i=0;

printf("输入学生信\n");

do

{ scanf("%s",p-name);

scanf("%s",p-idnum);

scanf("%f",(p-yw));

if(!strcmp(p-name,"end"))

{

break;

}

p++;

i++;

}while(true);

return i;

}

void max(stu *s,int a)

{

float max;

int i;

s=b;

max=s[0].yw;

for(i=1;ia;i++)

{

if(maxs[i].yw)

max=s[i].yw;

}

printf("%f",max);

}

这个是改了下的代码,原因在于

do

{ scanf("%s",p-name);

scanf("%s",p-idnum);

scanf("%f",(p-yw));

p++;

i++;

}while(strcmp((--p)-name,"end"));

中,你让p++,然后--p,所以被赋值一直都是b[0],所以不会对的,比较函数木有错。

怎么用快速排序法比较结构体数组中成员中字符串的大小?比如有一个结构体数组,里面有 char s[1

#include?stdio.h

#include?string.h

struct?A{

char?s[10];

int?no;

};

int?main(){

struct?A?a[5]={"asd",1,"qwe",2,"zxc",3,"rty",4,"vbn",5};

struct?A?*p[5]={a[0],a[1],a[2],a[3],a[4]},*t;

for(int?i=1;i5;i++){

????t=p[i];

for(int?j=i-1;j=0;j--)

if(strcmp(t-s,p[j]-s)0){

p[j+1]=p[j];

p[j]=t;

}

}

for(i=0;i5;i++)

printf("%d?",p[i]-no);

printf("\n");

}

这个程序只是用结构体A做了个排序的例子,至于你要结构体中有我不知道,你自己加吧。

我就加了个no,让你看看结果而已。

(责任编辑:IT教学网)

更多

推荐JSP教程文章