C语言基础题出现错误,想了好久,求各位大佬纠错

0xArthur 2020-03-01 03:11:52
想用冒泡写一下这个排序,感觉这个输出有点莫名其妙的,各位大佬看出来了吗?




这是源码:
#include <stdio.h>
int main()
{
int i,j;
char a[3],temp;
while(scanf("%c%c%c",&a[0],&a[1],&a[2])!=EOF)
{
for(i=0;i<3-1;i++)
{
for(j=0;j<3-i-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printf("%c %c %c\n",a[0],a[1],a[2]);
}
return 0;
}
...全文
193 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
aguang 2021-05-07
  • 打赏
  • 举报
回复
while (scanf("%3s", a)!=EOF) //用%s, 并且提供数组长度: 详情查阅scanf官方文档
0xArthur 2021-05-07
  • 打赏
  • 举报
回复
tql,真大佬 已关注666
源代码大师 2021-05-06
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
自信男孩 2020-03-01
  • 打赏
  • 举报
回复
引用 1 楼 Dreamypurple 的回复:
想起来了,加一个getchar()就可以了,如果哪位大佬能解释一下getchar()这个函数,分就给您了谢谢~

%c是会匹配'\n'即换行符的,所以会出现楼主的现象
院里有座山 2020-03-01
  • 打赏
  • 举报
回复
while(scanf("%c%c%c",&a[0],&a[1],&a[2])!=EOF),还剩一个\n在缓冲区里
孤远无梦 2020-03-01
  • 打赏
  • 举报
回复
getchar()就是接收一个字符,包括空格,回车
0xArthur 2020-03-01
  • 打赏
  • 举报
回复
想起来了,加一个getchar()就可以了,如果哪位大佬能解释一下getchar()这个函数,分就给您了谢谢~

69,369

社区成员

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

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