| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 482 人关注过本帖
标题:请教一维数组问题
只看楼主 加入收藏
kikokokoo
Rank: 2
等 级:论坛游民
帖 子:21
专家分:29
注 册:2011-8-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
请教一维数组问题
在一组已排序的数组中(由大到小),插入一个数,并保持原数组的排列顺序。
main()
{
    int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
    for(i=0;i<10;i++)
    {
        p=i;q=a[i];
        for(j=i+1;j<10;j++)
        if(q<a[j])
        {
            p=j;q=a[j];
        }
        if(p!=i)
        {
            s=a[i];
            a[i]=a[p];
            a[p]=s;
        }
        printf("%d ",a[i]);
    }
    printf("\ninput number:\n");
    scanf("%d",&n);
    for(i=0;i<10;i++)
        if(n>a[i])
        {
            for(s=9;s>=i;s--)
            a[s+1]=a[s];
            break;

        }
        a[i]=n;
        for(i=0;i<=10;i++)
            printf("%d ",a[i]);
        printf("\n");
        
        system("pause");
}

有个地方想不通,这个内嵌循环里的break,感觉上不加也可以,但是运行结果就不对,请高手解惑,谢谢
 for(i=0;i<10;i++)
        if(n>a[i])
        {
            for(s=9;s>=i;s--)
            a[s+1]=a[s];
            break;
        }
搜索更多相关主题的帖子: number 
2011-08-18 11:50
leaf_yyl
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:19
专家分:104
注 册:2011-8-13
收藏
得分:10 
for(i=0;i<10;i++)
        if(n>a[i])
        {
            for(s=9;s>=i;s--)
            a[s+1]=a[s];
            break;                            //break的作用是跳出外层for循环,不然外层循环只会在i=10时结束
        }
这段代码等价于下面的
for(i=0;i<10&&n<=a[i];i++);                    //找到n要插入的位置
for(s=9;s>=i;s--)                              //从i开始数组元素依次后移一位(建立数组时要注意不会越界)
        a[s+1]=a[s];
2011-08-18 12:31
kikokokoo
Rank: 2
等 级:论坛游民
帖 子:21
专家分:29
注 册:2011-8-6
收藏
得分:0 
break的作用是不是只能跳出一层循环。。。看来我的概念不清。。。。
2011-08-18 13:58
fenghelong
Rank: 3Rank: 3
来 自:上海
等 级:论坛游侠
威 望:2
帖 子:209
专家分:197
注 册:2011-8-18
收藏
得分:10 
作用是跳出外层for循环。
2011-08-18 14:19
kikokokoo
Rank: 2
等 级:论坛游民
帖 子:21
专家分:29
注 册:2011-8-6
收藏
得分:0 
明白了,谢谢。的确是跳出外层循环
2011-08-18 14:27
死蜜蜂
Rank: 2
等 级:论坛游民
帖 子:16
专家分:15
注 册:2011-8-16
收藏
得分:0 
for(s=9;s>=i;s--)
            a[s+1]=a[s];
            break;
这层循环执行到S=4时,跳出该循环,但是
 for(i=0;i<10;i++)
        if(n>a[i])
这个循环还在执行,使i++,然后啊n=60>a[i]=54依然成立,使得for(s=9;s>=i;s--)继续执行,见下面的调试过曾
图片附件: 游客没有浏览图片的权限,请 登录注册
(1)
图片附件: 游客没有浏览图片的权限,请 登录注册
(2)
2011-08-18 14:30
快速回复:请教一维数组问题
数据加载中...
 
   



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

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