使用数组,指针,函数,还冒泡排序的方式,使输入3个数字按照从大到小排序出来,输入数字后无反应。

Patience01 2016-02-06 05:29:29
题目简介:使用数组,指针,函数,还冒泡排序的方式,使输入3个数字按照从大到小排序出来;
我的代码:
#include <stdio.h>
int main(int argc, char const *argv[]) {
int a[3],*b[3],i;
void compare(int *b1[],int a1[]);
printf("please enter 3 number:");
for (i = 0; i < 3; i++) {
scanf("%d\n",&a[i]);
}

for (i = 0; i < 3; i++) {
b[i]=&a[i];
}

compare(b,a);

for (i = 0; i < 3; i++) {
printf("%d\n",a[i]);
}
return 0;
}

void compare(int *b1[],int a1[]) {
int i,j,t;
for (i = 0; i < 3; i++) {
for (j = 0; j < i-1; j++) {
if(a1[i]>a1[i+1]){
t=*b1[i];
*b1[i]=*b1[i+1];
*b1[i+1]=t;
}
}
}
}

问题:编译没错误,但是执行后,输入3个数字后没反应了
求解,万分感谢,检查了好久,查了部分资料,就是想不通解决不了,求救求解惑,谢谢各位大神!
...全文
801 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
苏叔叔 2016-02-14
  • 打赏
  • 举报
回复
Patience01 2016-02-14
  • 打赏
  • 举报
回复
感谢各位的帮助,非常谢谢,不好意思,这两天新年很忙没时间来看,非常谢谢
gh_99 2016-02-06
  • 打赏
  • 举报
回复
#include <stdio.h>
int main(int argc, char const *argv[]) {
    int a[3],*b[3],i;
    void compare(int *b1[],int a1[]);
    printf("please enter 3 number:");
    for (i = 0; i < 3; i++) {
        scanf("%d",&a[i]);  //修改处 输入时如:1 2 3 回车 数间加空格。
    }
     
    for (i = 0; i < 3; i++) {
        b[i]=&a[i];
    }
     
    compare(b,a);
    
    for (i = 0; i < 3; i++) {
        printf("%d\n",a[i]);
    }
    return 0;
}
 
void compare(int *b1[],int a1[]) {
    int i,j,t;
    for (i = 3; i > 0; i--) {  //修改处 
        for (j = 0; j < i-1; j++) {
            if(a1[j]<a1[j+1]){
                t=*b1[j];   //修改处 
                *b1[j]=*b1[j+1];  //修改处 
                *b1[j+1]=t;  //修改处 
            }
        }
    }
}
paschen 2016-02-06
  • 打赏
  • 举报
回复
用空白符结尾时,scanf会跳过空白符去读下一个字符,所以你必须再输入一个数 空白符包括空格,制表符,换行符,回车符和换页符
paschen 2016-02-06
  • 打赏
  • 举报
回复
scanf("%d\n",&a[i]); 改成 scanf("%d",&a[i]);

69,382

社区成员

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

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