weixin_44716261 2019-03-03 14:21 采纳率: 0%
浏览 309

这个怎么怎么都插不进去,哪里有问题?

#include
main()
{
int a[10]={3,6,9,11,14,16,18,23,26};
int i,temp;
for(i=0;i<=9;i++){
printf("%d ",a[i]);}
printf("\n");
printf("Please input a integer data");
scanf("%d",&temp);
for(i=8;i>=0;i--)
{
if(temp<a[i]){
a[i]=a[i+1];}
else{
temp=a[i+1];
break;}
}
for(i=0;i<=9;i++)
printf("%d ",a[i]);
printf("\n");
}

  • 写回答

1条回答 默认 最新

  • 柰茶 2019-03-03 15:38
    关注

    我跑了一下,发现了你的问题,错的是代码的逻辑上。楼主是否对于赋值

        a[i]=a[i+1]
    

        a[i+1]=a[i]
    

    有点混淆?问题出在这段代码:

        for(i=8;i>=0;i--)
        {
            if(temp<a[i]){
                a[i]=a[i+1];}
            else{
                temp=a[i+1];
            break;}
        }
    

    逻辑应该是,你将输入的数与数组中的每个数进行大小比较,而且是从后往前。当比较的数比你输入的数大时,你应该把这个数往后移一位,就是

        a[i+1]=a[i]
    

    这句代码的意思就是将a[i]上的值赋给a[i+1]上,“=”是从右赋值向左的。
    当比较到的数比你输入的数小时,此时下一位就是你要放的位置,而那个位置已经从之前的操作中空出来了。就正确了。
    修改代码如下:

    
    #include<iostream>
    void main()
    {
        int a[10]={3,6,9,11,14,16,18,23,26};
        int i,temp;
        for(i=0;i<=9;i++){
            printf("%d ",a[i]);}
        printf("\n");
        printf("Please input a integer data");
        scanf("%d",&temp);
        for(i=8;i>=0;i--)
        {
            if(temp<a[i]){
                //a[i]=a[i+1];
                a[i+1] = a[i];
            }
            else{
                //temp=a[i+1];
                a[i+1] = temp;
                break;}
        }
        for(i=0;i<=9;i++)
            printf("%d ",a[i]);
        printf("\n");
    }
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 聚类分析或者python进行数据分析
  • ¥15 如何用visual studio code实现html页面
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?