求各位大佬帮忙看看,这是哪里有错

WSALYDL 2019-12-31 10:53:58
...全文
59 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
柒贰伍玖 2019-12-31
  • 打赏
  • 举报
回复
if 语句后面 如果没有大括号 默认后面的一条语句 属于判断条件范围内的 其他的不属于条件范围内,不管条件满不满足都执行 如果紧跟着大括号 大括号内的语句都属于条件范围内,满足条件才执行 另外 函数再用之前要main之前声明 ,如果想不声明,就在main之前实现它的代码
自信男孩 2019-12-31
  • 打赏
  • 举报
回复
注意加大括号,否则就没有判断的意义了~
WSALYDL 2019-12-31
  • 打赏
  • 举报
回复
引用 6 楼 棉猴的回复:
[quote=引用 5 楼 qq_1457346882 的回复:]
[quote=引用 4 楼 棉猴 的回复:]

void sort(int* a, int* b)
{
int t;
if (*a < *b)
{
t = *a;
*a = *b;
*b = t;
}
}

这样改会不会跟他的思路或是逻辑不一致?看他是sort排序的话,应该是分从小到大还是从大到小的[/quote]
抛砖引玉,抛砖引玉[/quote] 谢谢😜,我明白了,我是新手,嘿嘿,万分感谢
WSALYDL 2019-12-31
  • 打赏
  • 举报
回复
谢谢😜,明白了,万分感谢,我是新手,哈哈
WSALYDL 2019-12-31
  • 打赏
  • 举报
回复
谢谢,懂了,对了,函数声明到main里面是我们课本上写的呀?
棉猴 2019-12-31
  • 打赏
  • 举报
回复
引用 5 楼 qq_1457346882 的回复:
[quote=引用 4 楼 棉猴 的回复:]

void sort(int* a, int* b)
{
int t;
if (*a < *b)
{
t = *a;
*a = *b;
*b = t;
}
}

这样改会不会跟他的思路或是逻辑不一致?看他是sort排序的话,应该是分从小到大还是从大到小的[/quote]
抛砖引玉,抛砖引玉
qq_1457346882 2019-12-31
  • 打赏
  • 举报
回复
引用 4 楼 棉猴 的回复:

void sort(int* a, int* b)
{
int t;
if (*a < *b)
{
t = *a;
*a = *b;
*b = t;
}
}

这样改会不会跟他的思路或是逻辑不一致?看他是sort排序的话,应该是分从小到大还是从大到小的
棉猴 2019-12-31
  • 打赏
  • 举报
回复

void sort(int* a, int* b)
{
int t;
if (*a < *b)
{
t = *a;
*a = *b;
*b = t;
}
}
棉猴 2019-12-31
  • 打赏
  • 举报
回复
代码没问题啊,sort()函数中,
if (*a > *b)

只有a指向的内容大于b指向内容时,才会交换。但是a[0]是4,a[1]是6,
sort(&a[0], &a[1]);

此时不会触发if语句,所以输出仍然是4,6
如果想触发,要把sort()函数中的if条件改为
if (*a < *b)

此时,VS2015 C++环境调试结果
qq_1457346882 2019-12-31
  • 打赏
  • 举报
回复
打错了,是课本
qq_1457346882 2019-12-31
  • 打赏
  • 举报
回复
害,你们是现在刻本编的有问题?函数声明不要写main函数里,虽然不会错,代码规范,还有就是不论你的执行语句是一句还是几句,都要加大括号!!!你这个执行起来是if(*a>*b){t=*a}
*a=*b;
*b=t;
你后面两句就不在if语句里,所以你a[0]的值是a[1]的,a【1】的值是t的

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧