| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 460 人关注过本帖
标题:求助!一个数组的课后题。不懂。
只看楼主 加入收藏
菜鸟auto
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:100
注 册:2010-7-23
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:4 
求助!一个数组的课后题。不懂。
#include<stdio.h>
void main()
{
 int a[11]={1,4,6,9,13,16,19,28,40,100};
 int num,i,j;
 printf("arry a:\n");
 for(i=0;i<10;i++)
     printf("%5d",a[i]);
 printf("\n");
 printf("insret data:");
 scanf("%d",&num);
 if (num>a[9])
    a[10]=num;
 else
    {
      for(i=0;i<10;i++)
     if(a[i]>num)
          {
           for(j=9;j>=i;j--)
           a[j+1]=a[j];
           a[i]=num;
           break;
           }
     }
 printf("Now , array a:\n");
 for(i=0;i<11;i++)
   printf("%5d",a[i]);
 printf("\n");
}
哪位能解释下红色字体的是意思?
而且我改成了:
   for(i=0;i<10;i++)
      if(a[i]>num)
         a[i]=num;
         {for(j=9;j>=i;j--)
               a[j+1]=a[j];
            break;
          }
当我输入5时,结果是1,4,5,5,9,13,16,19,28,40,100。“6"没了。这是为什么?
搜索更多相关主题的帖子: void include 
2010-07-30 10:23
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:3 
else
    {
      for(i=0;i<10;i++)
     if(a[i]>num)
          {
           for(j=9;j>=i;j--)
           a[j+1]=a[j];
           a[i]=num;
           break;
           }
     }
这段话的意思是,找到第一个比num大的数之后,就把num插到这个a[i]之前,
那么对应的a[i]和之后的所有元素都要向后移一个单位,就这样了。
2010-07-30 11:06
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:0 
  for(i=0;i<10;i++)
      if(a[i]>num)
         a[i]=num;                //这个操作把num的值赋给了a[i],那么原来a[i]中的值就被覆盖掉了
         {for(j=9;j>=i;j--)        //向后移每个元素的时候,这个a[i]上的num也后移了啊
               a[j+1]=a[j];
            break;
          }
2010-07-30 11:10
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:2 
    {
      for(i=0;i<10;i++)//循环,i从0开始,i<10,i++,循环十次
     if(a[i]>num)//如果数组的某个元素大于num
          {
           for(j=9;j>=i;j--)//再继续循环
           a[j+1]=a[j];//这里就是替换了
           a[i]=num;//同上
           break;//跳出
           }
     }

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-07-30 13:33
tracyjk
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-8-20
收藏
得分:0 
以下是引用erikyo在2010-7-30 11:10:01的发言:

  for(i=0;i<10;i++)
      if(a>num)
         a=num;                //这个操作把num的值赋给了a,那么原来a中的值就被覆盖掉了
         {for(j=9;j>=i;j--)        //向后移每个元素的时候,这个a上的num也后移了啊
               a[j+1]=a[j];
            break;
          }
正解,6被覆盖掉了
2010-07-30 17:39
快速回复:求助!一个数组的课后题。不懂。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019317 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved