| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 279 人关注过本帖
标题:大侠能给看看么
只看楼主 加入收藏
CC新手
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-7-17
收藏
 问题点数:0 回复次数:4 
大侠能给看看么
刚学的c,学到数组,碰见一个求6个从小到大排列程序试着编了编
#include<stdio.h>
void main()
{
    int a[7];
    int i=1,j=1,n=1,s;
    printf("pleaes input six maibe\n");
    for(;i<=6;i++)
        scanf("%d",&a[i]);
    while(j<5)
    {
        for(;n<=6;n++)
        {
            s=a[n];
            if(a[n]>a[n+1])
            {
            a[n]=a[n+1];
            a[n+1]=s;
            }
        }
        j++;
    }
    printf("%d  %d  %d  %d  %d  %d",a[1],a[2],a[3],a[4],a[5],a[6]);
}
程序能运行但是结果不对,嵌套的外层循环只运行了一次 我输入764521  输出的是645217 我找了 半天也不知道哪里错了
我就把for循环换成while循环
while(j<5)
    {
        for(;n<=6;n++)
        {
            s=a[n];
            if(a[n]>a[n+1])
            {
            a[n]=a[n+1];
            a[n+1]=s;
            }
        }
        j++;
    }
就是却可以  可是答案是用的for啊 是不是我的编译器有问题啊 我用的是vc6
搜索更多相关主题的帖子: include 
2012-10-31 18:28
CC新手
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-7-17
收藏
得分:0 
错了 #include<stdio.h>
void main()
{
    int a[7];
    int i=1,j=1,n=1,s;
    printf("pleaes input six maibe\n");
    for(;i<=6;i++)
        scanf("%d",&a[i]);
    for(;j<5;j++)
    {
        for(;n<=6;n++)
        {
            s=a[n];
            if(a[n]>a[n+1])
            {
            a[n]=a[n+1];
            a[n+1]=s;
            }
        }
    }
    printf("%d  %d  %d  %d  %d  %d",a[1],a[2],a[3],a[4],a[5],a[6]);
}
这是运行不出结果的程序

我是新手
2012-10-31 18:32
李建龙
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-10-7
收藏
得分:0 
for(;n<=6;n++)
         {
             s=a[n];
             if(a[n]>a[n+1])
             {
             a[n]=a[n+1];
             a[n+1]=s;
             }
这里出错了, 第一次循环完后n = 7了所以在进行while循环后for循环不执行
可以这样改
#include<stdio.h>
void main()
{
    int a[7];
    int i=1,j=1,n=1,s;
    printf("pleaes input six maibe\n");
    for(;i<=6;i++)
    {
        scanf("%d",&a[i]);
    }
        
    while(j <= 5)
    {
        for(; n<=6; n++)
        {
            s=a[n];
            if(a[n]>a[n+1])
            {
                a[n]=a[n+1];
                a[n+1]=s;
            }
        }
        n = 1;
        j++;
    }
    printf("%d  %d  %d  %d  %d  %d",a[1],a[2],a[3],a[4],a[5],a[6]);
 }
2012-10-31 21:07
hepigzhang
Rank: 2
等 级:论坛游民
帖 子:5
专家分:20
注 册:2012-7-31
收藏
得分:0 
这里数组也越界了,当取6时,   需要比较  a【6】  和 a[7],  问题你定义时候   没有a[7]
int a[7]   他的元素是  a[0]---a[6]
2012-10-31 21:30
CC新手
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-7-17
收藏
得分:0 
回复 3楼 李建龙
ok了谢谢

我是新手
2012-11-01 08:35
快速回复:大侠能给看看么
数据加载中...
 
   



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

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