标题:没有error没有warning 程序可以运行 但是出错
只看楼主
xiaoseqingch
Rank: 2
等 级:论坛游民
帖 子:36
专家分:42
注 册:2010-6-19
结帖率:88.89%
 问题点数:0 回复次数:4 
没有error没有warning 程序可以运行 但是出错
1、定义一个数组a[11],用以存放学生的成绩。2、从键盘输入10个学生成绩3、采用冒泡法,将学生成绩按照从高到低进行排序4、再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组5、将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。

#include <stdio.h>
void main()
{
    int a[11];
    int i,temp,n;
    for(i=0;i<10;i++)
    {
    scanf("%d",&a[i]);
    }
    for(n=0;n<10;n++)
    {   
    for(i=0;i<9;i++)
    {
        if(a[i]<a[i+1])
        {
            temp=a[i];
            a[i]=a[i+1];
            a[i+1]=temp;        
        
        }
   
    }
    }
        for(i=0;i<10;i++)
        {
            printf("之后=%d\n",a[i]);
        }
        scanf("%d",&a[11]);


        for(n=0;n<11;n++)
        {   
        for(i=0;i<11;i++)
        {
        if(a[i]<a[i+1])
        {
            temp=a[i];
            a[i]=a[i+1];
            a[i+1]=temp;        
        
        }   
        }
        }
        for(i=0;i<11;i++)
        {
            printf("之后=%d\n",a[i]);
        }

        for(n=0;n<11;n++)
        {   
        for(i=0;i<10;i++)
        {
        if(a[i]>a[i+1])
        {
            temp=a[i];
            a[i]=a[i+1];
            a[i+1]=temp;        
        
        }   
        }
        }
        for(i=0;i<11;i++)
        {
            printf("最后=%d\n",a[i]);
        }


}
搜索更多相关主题的帖子: 成绩单 include warning 
2012-09-30 09:07
Sukhavati
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2012-9-25
得分:0 
#include <stdio.h>
int main()
{
    int a[11];
    int i,temp,n;
   
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
   
    for(n=0;n<10;n++)
    {   
        for(i=0;i<9;i++)
        {
            if(a[i]<a[i+1])
            {
                temp=a[i];
                a[i]=a[i+1];
                a[i+1]=temp;
            }
        }
        
    }
      
    for(i=0;i<10;i++)
    {
        printf("之后=%d\n",a[i]);
    }
   
    scanf("%d",&a[10]);   //这个问题很明显

    for(n=0;n<11;n++)
    {   
        for(i=0;i<10;i++)
        {
            if(a[i]<a[i+1])
            {
                temp=a[i];
                a[i]=a[i+1];
                a[i+1]=temp;        
        
            }   
        }
    }
   
    for(i=0;i<11;i++)
    {
        printf("之后=%d\n",a[i]);
    }
        

        for(n=0;n<11;n++)
        {   
            for(i=0;i<10;i++)
            {
                if(a[i]>a[i+1])
                {
                    temp=a[i];
                    a[i]=a[i+1];
                    a[i+1]=temp;        
        
                }   
            }
        }
      
        
    for(i=0;i<11;i++)
    {
        printf("最后=%d\n",a[i]);
    }
        
    return 0;
}


下次尽量描述清楚,比如具体说明执行到那一步出错Geany + gcc测试通过
2012-10-01 14:27
lx1066198952
Rank: 2
等 级:论坛游民
帖 子:16
专家分:24
注 册:2012-9-28
得分:0 
我告诉你哈,运行时没有错误和警告只是告诉你没有语法性错误,知道吗?可能有赋值错误等问题
2012-10-03 09:42
q13678986740
Rank: 4
等 级:业余侠客
帖 子:114
专家分:245
注 册:2012-7-7
得分:0 
冒泡排序都有问题,建议找个简单的冒泡排序看看
2012-10-03 21:37
编程论坛逛逛
Rank: 1
等 级:新手上路
帖 子:10
专家分:2
注 册:2012-6-28
得分:0 
#include <stdio.h>
int main()
{
    int a[11];
    int i,temp,n;
   
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }

    //排序的第一阶段

    for(n=0;n<9;n++)    //对已有的10个数进行排序 由高到低 10个数需要比较9趟
    {   
        for(i=0;i<9-n;i++)//每当比较完一趟后,剩下的数比较的次数相应减少
        {
            if(a[i]<a[i+1])
            {
                temp=a[i];
                a[i]=a[i+1];
                a[i+1]=temp;
            }
        }
        
    }
     printf(" 排序后的结果输出为:\n");  
   
    for(i=0;i<10;i++)//排序后的结果输出
    {
        printf("a[%d]=%d ",i,a[i]);
        if((i+1)==5)printf("\n");
    }

    printf("\n");

    scanf("%d",&a[10]);  //输入第11个数,存放在最后一个存储单元


    for(i=10;i>0;i--)//将此成绩按照排序规律插入原学生成绩数组,从后面开始比较
    {   
        
            if(a[i-1]<a[i])
            {
                temp=a[i];
                a[i]=a[i-1];
                a[i-1]=temp;        
        
            }   
        
    }
    printf("\n");
    printf(" 输出插入后的排序结果为:\n");
    for(i=0;i<11;i++) //输出插入后的排序结果
    {
        printf("a[%d]=%d ",i,a[i]);
        if((i+1)==5)printf("\n");
    }
        
//由低到高再次进行排序
        for(n=0;n<10;n++)//对已有的11个数进行排序 由低到高 11个数需要比较10趟
        {   
            for(i=0;i<10-n;i++)//每当比较完一趟后,剩下的数比较的次数相应减少
            {
                if(a[i]>a[i+1])
                {
                    temp=a[i];
                    a[i]=a[i+1];
                    a[i+1]=temp;        
        
                }   
            }
        }
       printf("\n");
     printf(" 输出最后由低到高排序的结果为:\n");   
    for(i=0;i<11;i++)//输出最后由低到高排序的结果
    {
       printf("a[%d]=%d ",i,a[i]);
       if((i+1)==5)printf("\n");
    }
      printf("\n");  
    return 0;
}


这是我按照你的思路进行修改的程序,经调试没有问题,还有对于后面的有序数组进行排序有更简单的方法,这里就不在列出。大家相互学习。
2012-10-03 23:58



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




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

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