| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1960 人关注过本帖
标题:程序输入20个数就死了,,不能输入数,也没运行结果。sos
只看楼主 加入收藏
qinxinhai
Rank: 1
来 自:湖南长沙
等 级:新手上路
帖 子:237
专家分:0
注 册:2008-4-27
收藏
得分:0 
那样没效果的!
  我下课了,帮你弄一份

我秀我自己
2008-05-07 17:58
qinxinhai
Rank: 1
来 自:湖南长沙
等 级:新手上路
帖 子:237
专家分:0
注 册:2008-4-27
收藏
得分:0 
#include <stdio.h>
#define N 20
void arrange(int a[]);
void main()
{
    int a[N]={0},i=0,m=N,n=0,num=0,t=0;
    printf("请输入你的数组:\n");
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
    }
    arrange(a);//排序函数,推荐使用插入排序.
    for(i=0;i<N;i++)
    {
        printf("%4d",a[i]);
    }
    printf("请输入你要查找的数字:\n");
    scanf("%d",&num);
    while(m-n>1)
    {
        t=(m+n)/2;
        if(num==a[t])
               break;
        else
            if(num<a[t])
                m=t;
            else
                n=t;
    }
    if(num==a[t])
    {
        printf("你查找的数字是: %4d在数组的第%d个位置.\n",a[t],t+1);
    }
    else
    {
        if(num==a[t+1])
            printf("你查找的数字是: %4d在数组的第%d个位置.\n",a[t+1],t+1);
        else
            if(num==a[t-1])
                printf("你查找的数字是: %4d在数组的第%d个位置.\n",a[t+1],t);
            else
                printf("没有你要查找的编号:\n");
    }
}
void arrange(int a[])
{
    int i=0,j=0,temp=0;
    for(i=0;i<N;i++)
    {
        temp=a[i];
        for(j=i-1;j>=0 && temp<a[j];j--)//从小到大排序,如果要从大到小则temp>a[j].
            a[j+1]=a[j];
        a[j+1]=temp;
    }
}

我秀我自己
2008-05-07 18:27
〓成都〓
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-5-7
收藏
得分:0 
回复 1# 的帖子
#include<stdio.h>
void main()
{
    int arrange(int a[]);
    int m=19,n=0,num,t,i,k=1,a[20]={0};
    printf("请输入一个数组:");
    /*输入一个20个数的数组给a*/
    for(i=0;i<20;i++)
        {
        scanf("%d",&a[i]);
        }
    //arrange(a);
    /*数组a原样输出*/
    for(i=0;i<20;i++)
        {
        printf("%d ",a[i]);
        }
    /*输入要找的数num*/
    printf("please input a number:");
    scanf("%d",&num);
    /*折半查找*/
    while(m-n>1)
    {
        t=(m+n)/2;
        if(num==a[t])
            break;
        else if(num<a[t])
            m=t;
        else
            n=t;
    }
    if(num==a[t+1]) printf("在原始数组中找到了你要找的数字%d,它是数组的第%d元素.\n",num,t+1);
    else if(num==a[t-1])printf("在原始数组中找到了你要找的数字%d,它是数组的第%d元素.\n",num,t);
    else if(num==a[t])printf("在原始数组中找到了你要找的数字%d,它是数组的第%d元素.\n",num,t+1);
    else    printf("在原始数组中没有找到你要找的数字%d\n",num);
}
/*int arrange(int a[])   
{
    int i,t,k;
    /*数组a从在大到时小排序
    do
        {
            for(i=0;i<19;i++)
            {
            if(a[i]>a[i+1]){t=a[i+1];a[i+1]=a[i];a[i]=t;}
            }
            k++;
        }while(k<20);
return a;
}*/
2008-05-07 18:27
qinxinhai
Rank: 1
来 自:湖南长沙
等 级:新手上路
帖 子:237
专家分:0
注 册:2008-4-27
收藏
得分:0 
如果楼主的意思是查找原始数组的位置
那就不用这么麻烦

我秀我自己
2008-05-07 18:28
qinxinhai
Rank: 1
来 自:湖南长沙
等 级:新手上路
帖 子:237
专家分:0
注 册:2008-4-27
收藏
得分:0 
#include <stdio.h>
#define N 20
void main()
{
    int a[N]={0},i=0,num=0;
    printf("请输入你的数组:\n");
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("请输入你要查找的数字:\n");
    scanf("%d",&num);
    for(i=0;i<N;i++)//N是你定义的宏定义.
    {
        if(num==a[i])
               break;
    }
    if(i==N)
    {
        printf("没有你要查找的数字:\n");
    }
    else
    {
        printf("你查找的数字是:%d.在原始数组的第%d个位置.\n",a[i],i+1);
    }
}

[[it] 本帖最后由 qinxinhai 于 2008-5-7 18:35 编辑 [/it]]

我秀我自己
2008-05-07 18:32
daocaorenhe
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2008-4-22
收藏
得分:0 
回复 1# 的帖子
#include<stdio.h>

void main()
{
    void arrange(int a[]);
    int m=19, n=0, num, t, i, k=1, a[20]={0};
    printf("请输入一个数组:");
    /*输入一个20个数的数组给a*/
    for(i=0;i<20;i++)
        {
        scanf("%d",&a[i]);
        }
    printf("ok you have input 20\n");
    arrange(a);
    /*数组a原样输出*/
    for(i=0;i<20;i++)
        {
        printf("%d ",a[i]);
        }
    /*输入要找的数num*/
    printf("please input a number:");
    scanf("%d",&num);
    /*折半查找*/
    while(m-n>1)
    {
        t=(m+n)/2;
        if(num==a[t])
            break;
        else if(num<a[t])
            m=t;
        else
            n=t;
    }
    if(num==a[t+1])      printf("在原始数组中找到了你要找的数字%d,它是数组的第%d元素.\n",num,t+1);
    else if(num==a[t-1]) printf("在原始数组中找到了你要找的数字%d,它是数组的第%d元素.\n",num,t);
    else if(num==a[t])   printf("在原始数组中找到了你要找的数字%d,它是数组的第%d元素.\n",num,t+1);
    else                 printf("在原始数组中没有找到你要找的数字%d\n",num);
}
void arrange(int a[])   
{
    int i,t,k = 0;//  k没有初始化肯定死了,,,
    /*数组a从在大到时小排序*/
       do
        {
            for(i=0;i<19;i++)
            {
            if(a[i]>a[i+1])
            {
                t=a[i+1];
                a[i+1]=a[i];
                a[i]=t;
            }
            }
            k++;
        }while(k<20);

}
2008-05-08 09:06
qinxinhai
Rank: 1
来 自:湖南长沙
等 级:新手上路
帖 子:237
专家分:0
注 册:2008-4-27
收藏
得分:0 
楼上的啊
你数组不是从大到小排列了吗?
后面怎么还
while(m-n>1)
    {
        t=(m+n)/2;
        if(num==a[t])
            break;
        else if(num<a[t])
            m=t;
        else
            n=t;
    }
这样永远找不到

我秀我自己
2008-05-08 13:31
chuniyb
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-5-7
收藏
得分:0 
int arrange(int a[])   
{
    int i,t,k=0;                //没有附初值把
    /*数组a从在大到时小排序*/
    do
        {
            for(i=0;i<19;i++)
            {
            if(a[i]>a[i+1]){t=a[i+1];a[i+1]=a[i];a[i]=t;}
            }
            k++;
        }while(k<20);
return a;
}
2008-05-09 10:22
秋之爱
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-4-24
收藏
得分:0 
只能输入20个数,是因为你定义数组才20个长度
2008-05-09 10:28
qinxinhai
Rank: 1
来 自:湖南长沙
等 级:新手上路
帖 子:237
专家分:0
注 册:2008-4-27
收藏
得分:0 
我的天啊

我秀我自己
2008-05-09 13:11
快速回复:程序输入20个数就死了,,不能输入数,也没运行结果。sos
数据加载中...
 
   



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

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