C语言strcmp 使用方法
#include"string.h"structst{charname[5];intscore[3];};voidfun(structsts){inti,j,it;str...
#include"string.h"
struct st
{
char name[5];
int score[3];
};
void fun(struct st s)
{
int i,j,it;
struct st t;
for (i=0;i<2;i++)
{
it=i;
for (j=i+1;j<3;j++)
---------if (strcmp(s[it].name,s[j].name)>0)------------
it=j;
t=s[i];
s[i]=s[it];
s[it]=t;
}
}
main()
{
struct st stu[3];
int i,j;
for (i=0;i<=2;i++)
{
scanf("%s",&stu[i],name);
for (j=0;j<=2;j++)
scanf("%d,%d,%d",&stu[i].score[j]);
}
fun(stu);
for (i=0;i<=2;i++)
{
printf ("%s ",stu[i].name);
for (j=0;j<=2;j++)
printf (" %d ",stu[i].score[j]);
printf ("\n");
}
}
---------为问题句 ,好象说什么"类型转换错误",strcmp里面变量应该可以放字符串常量和和字符串变量吧 ,要实现将结构体按name从小到大排列
第7行改void fun(struct st s[])
倒数第11行该成scanf("%d",&stu[i].score[j]); 展开
struct st
{
char name[5];
int score[3];
};
void fun(struct st s)
{
int i,j,it;
struct st t;
for (i=0;i<2;i++)
{
it=i;
for (j=i+1;j<3;j++)
---------if (strcmp(s[it].name,s[j].name)>0)------------
it=j;
t=s[i];
s[i]=s[it];
s[it]=t;
}
}
main()
{
struct st stu[3];
int i,j;
for (i=0;i<=2;i++)
{
scanf("%s",&stu[i],name);
for (j=0;j<=2;j++)
scanf("%d,%d,%d",&stu[i].score[j]);
}
fun(stu);
for (i=0;i<=2;i++)
{
printf ("%s ",stu[i].name);
for (j=0;j<=2;j++)
printf (" %d ",stu[i].score[j]);
printf ("\n");
}
}
---------为问题句 ,好象说什么"类型转换错误",strcmp里面变量应该可以放字符串常量和和字符串变量吧 ,要实现将结构体按name从小到大排列
第7行改void fun(struct st s[])
倒数第11行该成scanf("%d",&stu[i].score[j]); 展开
2个回答
展开全部
strcat
函数是把两个字符串做连接,并返回连接后的字符串。
strcat(a,b)="aab"
所以,即求
strcmp("aab","ab")
的值,
strcmp
函数只有3种值,
当前面的字符串大于后面的字符串时,返回
1
当前面的字符串小于后面的字符串时,返回
-1
当前面的字符串等于后面的字符串时,返回
0
"aab" 和
"ab",第一个字母是相等的,第二个字母
,a比b
小,
所以,最终strcmp(strcat(a,b),b)的值是:
-1
函数是把两个字符串做连接,并返回连接后的字符串。
strcat(a,b)="aab"
所以,即求
strcmp("aab","ab")
的值,
strcmp
函数只有3种值,
当前面的字符串大于后面的字符串时,返回
1
当前面的字符串小于后面的字符串时,返回
-1
当前面的字符串等于后面的字符串时,返回
0
"aab" 和
"ab",第一个字母是相等的,第二个字母
,a比b
小,
所以,最终strcmp(strcat(a,b),b)的值是:
-1
展开全部
你错在if 语句后面 漏了一对扩号,以致未做交换。
void fun(struct st s[])
{
int i,j,it;
struct st t;
for (i=0;i<2;i++)
{it=i;
for (j=i+1;j<3;j++)
if (strcmp(s[it].name,s[j].name)>0){ // 注意括号
it=j;t=s[i];s[i]=s[it];s[it]=t;
};
}
}
scanf("%s",&stu[i],name); -- scanf("%s",&stu[i].name); // 点号
for (j=0;j<=2;j++)
scanf("%d",&stu[i].score[j]);// 注意格式,一个%d, 不是3个
void fun(struct st s[])
{
int i,j,it;
struct st t;
for (i=0;i<2;i++)
{it=i;
for (j=i+1;j<3;j++)
if (strcmp(s[it].name,s[j].name)>0){ // 注意括号
it=j;t=s[i];s[i]=s[it];s[it]=t;
};
}
}
scanf("%s",&stu[i],name); -- scanf("%s",&stu[i].name); // 点号
for (j=0;j<=2;j++)
scanf("%d",&stu[i].score[j]);// 注意格式,一个%d, 不是3个
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询