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]);
展开
 我来答
经海秋皋骄
2020-02-26 · TA获得超过3万个赞
知道大有可为答主
回答量:1.2万
采纳率:34%
帮助的人:799万
展开全部
strcat
函数是把两个字符串做连接,并返回连接后的字符串。

strcat(a,b)="aab"

所以,即求
strcmp("aab","ab")
的值,

strcmp
函数只有3种值,
当前面的字符串大于后面的字符串时,返回
1
当前面的字符串小于后面的字符串时,返回
-1
当前面的字符串等于后面的字符串时,返回
0

"aab" 和
"ab",第一个字母是相等的,第二个字母
,a比b
小,

所以,最终strcmp(strcat(a,b),b)的值是:
-1
L_o_o_n_i_e
2009-06-16 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5253万
展开全部
你错在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个
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式