| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1093 人关注过本帖, 1 人收藏
标题:请教C循环问题。
只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
再想想……


[ 本帖最后由 有容就大 于 2012-2-29 22:28 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-02-29 22:16
fanliguang
Rank: 2
等 级:论坛游民
帖 子:31
专家分:52
注 册:2012-2-26
收藏
得分:0 
回复 11楼 有容就大
确实是想不出来了。才来求救的。
2012-02-29 22:23
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:1 
構造一個“影像”數組,存儲下標。

授人以渔,不授人以鱼。
2012-03-01 00:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
有容在苦思冥想呢。其實解法說出來誰都會做,只是想沒想到的問題。返璞归真才是王道!

授人以渔,不授人以鱼。
2012-03-01 02:28
fanliguang
Rank: 2
等 级:论坛游民
帖 子:31
专家分:52
注 册:2012-2-26
收藏
得分:0 
那谁能邦我返璞归真?
2012-03-01 07:28
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
还在想吗?
现在我知道你的目的了,但是你的程序很难实现这个目的,因为一个数组下标是固定的,而你排序施行的数值交换的同时没有合理的处理下标,必然造成混乱,如果不实行辅助设计恐怕达不到目的,我提供几种方法你参考下,我也练练手。如果那里不对你指出来,一起学习(代码要有缩进和适当的间隔):
第一个,输出一个数,拿掉一个数:
程序代码:
#include <stdio.h>
#define N 10

int main(void)
{
    int max, min, i, j, index, a[N];

    printf("Please input 10 number:\n");
    for (i = 0; i < N; i++)
    {
        scanf("%d", &a[i]);
    }
    max = min = a[0];
    for (i = 0; i < N; i++)
    {
       if (min > a[i])
          min = a[i];
    }

    for (j = 0; j < N; j++)
    {
        for (i = 0; i < N; i++)
            if (max < a[i])
            {
                max = a[i];   
                index = i;
            }       
        a[index] = min - 1;
        printf("a[%d] = %d\n", index, max);
        max = min - 1;   
    }
        return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册



梅尚程荀
马谭杨奚







                                                       
2012-03-01 09:43
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
第2个 辅助数组法
程序代码:
#include <stdio.h>
#define N 10

int main(void)
{
    int i, j, index, temp, a[N], b[N];

    printf("Please input 10 number:\n");
    for (i = 0; i < N; i++)
    {
        scanf("%d", &a[i]);
    }
    for (i = 0; i < N; i++)
    {
        b[i] = a[i];
    }
    for (i = 0; i < N-1; i++)
    {
        index = i;
        for (j = i+1; j < N; j++)
        {
            if ( b[j] > b[index])
               index = j;
        }
        if (index != i)
        {
            temp = b[i];
            b[i] = b[index];
            b[index] = temp;
        }
    }
    for (j = 0; j < N; j++)
    {
        for (i = 0; i < N; i++)
        {
            if (b[j] == a[i])
                printf("a[%d] = %d\n", i, b[j]);
        }
    }
        return 0;
}


梅尚程荀
马谭杨奚







                                                       
2012-03-01 10:07
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
第3个 结构体数组法
程序代码:
#include <stdio.h>
#define N 10

struct num_id
{
    int data;
    int index;
}a[N];

int main(void)
{
    int i, j, index;
    struct num_id temp;

    printf("Please input 10 number:\n");
    for (i = 0; i < N; i++)
    {
        scanf("%d", &a[i].data);
        a[i].index = i;
    }
  
    for (i = 0; i < N-1; i++)
    {
        index = i;
        for (j = i+1; j < N; j++)
        {
            if ( a[j].data > a[index].data)
               index = j;
        }
        if (index != i)
        {
            temp = a[i];
            a[i] = a[index];
            a[index] = temp;
        }
    }
    for (i = 0; i < N; i++)
        printf("a[%d] = %d\n", a[i].index, a[i].data);
   
    return 0;
}


梅尚程荀
马谭杨奚







                                                       
2012-03-01 10:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
這傢伙還是有點悟性的,沒提示之前想到的?

授人以渔,不授人以鱼。
2012-03-01 11:22
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用TonyDeng在2012-3-1 11:22:41的发言:

這傢伙還是有點悟性的,沒提示之前想到的?
老大 说我吗
你说的那个下标映像貌似有点复杂。


[ 本帖最后由 有容就大 于 2012-3-1 11:43 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-03-01 11:33
快速回复:请教C循环问题。
数据加载中...
 
   



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

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