标题:请问我写的程序哪里出问题了??排序,删除,插入功能实现不了?
只看楼主
h364437177
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2012-11-19
结帖率:75%
已结贴  问题点数:10 回复次数:6 
请问我写的程序哪里出问题了??排序,删除,插入功能实现不了?
#include <stdio.h>
int n=8;
void sort(float a[]){
    int i,j;
    float t;
    for(i=0;i<n-1;i++){
        for(j=i+1;j<n;j++)
            if(a[i]>a[j]){
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
    }
}


int search(float a[],float x){
int i;
for(i=0;i<n;i++)
if(x==a[i])
   return i;
return -1;
}

void insert(float a[],float x){
int i,j,t;
for(i=0;i<n;i++)
    if(x<a[i])break;
t=i;
 for(j=n-1;j>=i;i--){
    a[j+1]=a[j];
    a[t]=x;
    }
}

void delet(float a[],float x){
    int i,m;
    m=search(a,x);
    if(m>=0){
        for(i=m;i<n-1;i++)
            a[i]=a[i+1];
    }
}

void print(float a[],int k){
    int i;
    for(i=0;i<k;i++)
        printf("%f",a[i]);
}


int main(){
    float b,m,c,score[50]={78.5,87,68,89.5,92,83.5,86,67};
    int t,n,num;
    while(1){
        printf("0.结束程序    1.排序    2.查找    3.插入    4.删除");
        printf("请输入以上数字做选择:");
        scanf("%d",&num);
        if(num==0) break;
        else
            switch(num){
            case 1:
                sort(score);
                printf("排序后的结果为:");
                print(score,n);
                break;

            case 2:
                printf("请输入要查找的数:");
                scanf("%f",&b);
                t=search(score,b);
                if(t>=0)
                    printf("%f是下标为%d的数组元素",b,t);
                else
                    printf("查无此数");
                break;

            case 3:
                printf("请输入要插入的数:");
                scanf("%f",&m);
                insert(score,m);
                printf("插入的结果为:");
                print(score,n+1);
                break;

            case 4:
                printf("请输入要删除数:");
                scanf("%f",&c);
                delet(score,c);
                printf("删除后的结果为:");
                print(score,n-1);
                break;
            default:
                printf("输入有错误,请重新输入!\n");
                break;
        }
    }
}


            
搜索更多相关主题的帖子: search void include return insert 
2012-11-22 18:32
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
得分:3 
                sort(score);
                printf("排序后的结果为:");
                print(score,n);
                break;

上面代码的n没有赋值?
另外你的else后面少了个{

[ 本帖最后由 pauljames 于 2012-11-22 19:03 编辑 ]

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2012-11-22 19:00
h364437177
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2012-11-19
得分:0 
回复 2楼 pauljames
我开始已经把n赋值为8了嘛!全局变量啊!
2012-11-22 19:26
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
得分:0 
问题是你的main里面又申明了int t,n,num;
这样就是局部变量n了,你没有赋值,你可以去看看变量作用域问题了

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2012-11-22 19:38
Magic_July
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:109
注 册:2012-9-25
得分:3 
intsert是死循环?
2012-11-22 19:54
youngdavid
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:698
注 册:2012-9-24
得分:3 
在main函数里面把n的定义去掉就可以了。因为在main函数里定义的n是局部变量,它的值在main函数里会覆盖全局变量n的值,而在main函数里面这个值没赋初值,值是不确定的。
2012-11-24 21:32
张朝成
Rank: 4
等 级:业余侠客
帖 子:149
专家分:265
注 册:2012-3-22
得分:3 
把主函数里定义n去了就好了
2012-11-25 19:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-387964-1-1.html




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

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