注册 登录
编程论坛 C++教室

我这个程序真的找不到哪错了,求大神

csfbsbv 发布于 2012-11-04 21:00, 813 次点击
不好意思,没说清楚程序的意图,是这样的,编一个数组,实现下面3种功能:
1.进行从小到大的排序,输出数组
2.在当前数组的a[4]和a[5]间插入一个数,输出数组
3。删除a[2],输出数组。
#include <stdio.h>
int a[100],t,i,j,x;
main()
{
    a[100]={45,9,63,12,7,3,92,47,9,61};
    int x;
    scanf("%d",&x);
    switch(x)
    {
    case 1:
    {
        for(i=0;i<9;i++)
        for(j=i+1;j<10;j++)
        {
            if(a[i]>a[j])
            {
                t=a[i];a[j]=a[i];a[j]=t;
            }
        }
        printf("%s\n",a);
    }
    case 2:
        {
            for(i=10;i>4;i--)
        a[i-1]=a[i];
    scanf("%d",&a[5]);
    printf("%s\n",a);
        }
    case 3:
        {
            for(i=3;i<10;i++)
        a[i-1]=a[i];
            printf("%s\n",a);
        }
    }
}

[ 本帖最后由 csfbsbv 于 2012-11-5 09:16 编辑 ]
11 回复
#2
彭正文2012-11-04 22:03
       t=a[i];a[j]=a[i];a[j]=t;
这句话,好像中间有问题吧???
#3
csfbsbv2012-11-04 22:07
回复 2楼 彭正文
这不就是交换么,哪里错啦?请详细赐教
#4
qunxingw2012-11-04 22:07
楼的意图是什么。
if(a[i]>a[j])
            {
                t=a[i];a[j]=a[i];a[j]=t;
            }
此处是否有问题?
#5
小小小火柴2012-11-04 22:13
以下是引用csfbsbv在2012-11-4 21:00:16的发言:

#include
main()
{
    int t,i,j,x;

    int a[100]={45,9,63,12,7,3,92,47,9,61};//这样定义就可以了!
    scanf("%d",&x);
    switch(x)
    {
    case 1:
    {
        for(i=0;i<9;i++)
        for(j=i+1;j<10;j++)
        {
            if(a>a[j])
            {
                t=a;a[j]=a;a[j]=t;     //这个是冒泡排序?
            }
        }
        printf("%s\n",a);//最后你想输出什么?   你所有的case 语句,最后都不写  break; 那么选择case 语句有用么?都会运行一遍!
    }
    case 2:
        {
            for(i=10;i>4;i--)
        a=a;
    scanf("%d",&a[5]);
    printf("%s\n",a);            
        }
    case 3:
        {
            for(i=3;i<10;i++)
        a=a;
            printf("%s\n",a);
        }
    }
}
  
#6
小小小火柴2012-11-04 22:20
  楼主这个程序的意图!!!!!是什么!说清楚嘛!
#7
彭正文2012-11-04 22:37
你这个程序需要什么功能啊?
  t=a[i];a[j]=a[i];a[j]=t;这里有问题。
     case 2:
        {
            for(i=10;i>4;i--)
        a[i-1]=a[i];
    scanf("%d",&a[5]);
    printf("%s\n",a);
这里好像也有问题。i应该从9开始,而且你这个赋值不太对吧,输出也有点问题的。
这个程序你还是重新写一个吧。
#8
彭正文2012-11-04 22:42
回复 4楼 qunxingw
if(a[i]>a[j])
            {
                t=a[i];a[j]=a[i];a[j]=t;
            }
哥,,你仔细看看。
t=a[i],
a[j]=a[i],
a[j]=t,
好像到最后,都等于a[i]
#9
青春无限2012-11-04 22:58
同求
#10
zxd5432012-11-04 23:07
case 1:
            {
                for(i=0;i<10;i++)
                for(j=9;j>i;j--)
                {
                    if(a[j]>a[j-1])
                    {
                        t=a[j];
                        a[j]=a[j-1];
                        a[j-1]=t;
                    }
                }
                for(i=0;i<10;i++)
                    printf("%d ",a[i]);
                printf("\n");
            }
交换应该这样写吧
case2:
case3:看不出来做什么

[ 本帖最后由 zxd543 于 2012-11-4 23:16 编辑 ]
#11
猎人生2012-11-04 23:47
#include <stdio.h>


void  main()
{   int t,i,j,x;
    int a[10]={ 45,9,63,12,7,3,92,47,9,61 };
    scanf("%d",&x);
    switch(x)
    {
    case 1:
        
        for(i=0;i<9;i++)
        {
            for(j=i+1;j<10;j++)
            {
                if(a[i]>a[j])
                {
                    t=a[i];
                    a[i]=a[j];
                    a[j]=t;
                }
            }
            printf("%d\n",a[i]);
            
            
        }
        break;
    case 2:
        {
            for(i=10;i>4;i--)
                a[i-1]=a[i];
            scanf("%d",&a[i]);
            printf("%d\n",a[i]);
        }
        break;
    case 3:
        {
            for(i=3;i<10;i++)
                a[i-1]=a[i];
            printf("%d\n",a[i]);
        }
        break;
    }
}

很多错误啊,下次注意啊一些基本的东西,测试可以先小型数组,测试通过再该数据大小,试试是不是你想要的结果啊
#12
qq8725519692012-11-05 08:12
是连接错误?
1