| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 890 人关注过本帖, 1 人收藏
标题:一个程序引发的问题
只看楼主 加入收藏
冷夜冰风
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2009-1-17
结帖率:100%
收藏(1)
已结贴  问题点数:30 回复次数:15 
一个程序引发的问题
程序作用:输入10个数然后从小到大排列并且输出,然后再输入一个数插入相应的位置;
错误:能自动排列但是插入时就会出现错误,请帮忙改正;
希望(指出错误的同时):能优化的帮优化;
不胜感激!!!!!
#include "stdio.h"
void main()
{
 int i,j,n,number,a[11];
 printf("\n");
 for(i=0;i<10;i++)
 scanf("%d",&a[i]);
 for(i=0;i<10;i++)
   for(j=i+1;j<10;j++)
     if(a[i]>a[j])
     {
       n=a[i];
       a[i]=a[j];
       a[j]=n;
     }
 for(i=0;i<10;i++)
 printf(" %d",a[i]);
 printf("\nplease input a number\nnumber:");
 scanf("%d",&number);
 for(i=0;i<11;i++)
 if(number<a[i])
   {
     for(j=10;i<=j;j--)
     {
      a[j+1]=a[j];
     }
     a[i]=number;
   }
 for(i=0;i<11;i++)
 printf(" %d",a[i]);
 getchar();
}
搜索更多相关主题的帖子: 优化 void 不胜感激 include number 
2009-07-13 18:08
liumang_D
Rank: 2
来 自:计算机
等 级:论坛游民
威 望:1
帖 子:89
专家分:50
注 册:2008-10-20
收藏
得分:30 
break
程序代码:
#include <stdio.h>

int main(void)
{
    int i = 0, j = 0, number = 0;
    int a[10] = {0};
    
    printf("input ten integrated number:\n");
    for(i = 0; i < 10; i++){
        scanf("%d", &a[i]);
    }
    
    for(i = 0; i < 10; i++){
        for(j = i + 1; j < 10; j++){
            if(a[i] > a[j]){
                number = a[i];
                a[i] = a[j];
                a[j] = number;
            }
        }
    }
    
    for(i = 0; i < 10; i++){
        printf(" %d",a[i]);
    }
    
    printf("\nplease input a number:\n");
    scanf("%d",&number);
    for(i = 0; i < 10; i++){
        if(number < a[i]){
            for(j = 9; i <= j; j--){
                a[j+1] = a[j];
            }
            
            a[i] = number;
            break;
        }
    }
    
    if(i == 10){
        a[i] = number;
    }
    
    printf("the last array:\n");
    for(i = 0; i < 11; i++){
        printf(" %d", a[i]);
    }
    
    printf("\n");
    return 0;
} 


[[it] 本帖最后由 liumang_D 于 2009-7-14 13:51 编辑 [/it]]
2009-07-13 18:30
冷夜冰风
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2009-1-17
收藏
得分:0 
虽然结贴了还是希望在原程序上改;
原程序错哪了
知道的回复个谢谢了
2009-07-14 15:20
如满月
Rank: 2
等 级:论坛游民
帖 子:25
专家分:30
注 册:2009-4-6
收藏
得分:0 
插入时,你用的j是从10开始的,a[j+1]=a[j];a[j+i]是a[11],a[11]并不存在。
2009-07-14 16:26
冷夜冰风
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2009-1-17
收藏
得分:0 
我改成for(j=9;i<=j;j--)
还是不行···
2009-07-14 17:10
冷夜冰风
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2009-1-17
收藏
得分:0 
回复 6楼 mfh
说的不错  
2009-07-16 15:26
liumang_D
Rank: 2
来 自:计算机
等 级:论坛游民
威 望:1
帖 子:89
专家分:50
注 册:2008-10-20
收藏
得分:0 
回复 6楼 mfh
你被人误导了,程序有误!仔细找找,而且还是个挺大的错误
2009-07-16 15:58
liumang_D
Rank: 2
来 自:计算机
等 级:论坛游民
威 望:1
帖 子:89
专家分:50
注 册:2008-10-20
收藏
得分:0 
回复 3楼 冷夜冰风
希望你好好读读程序代码,不可能读不懂,和你原来的程序差别不大,只是帮你修正了
2009-07-16 15:59
冷夜冰风
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2009-1-17
收藏
得分:0 
回复 8楼 liumang_D
实在看不出来有什么错误
而且运行也没问题啊
请你讲解下
2009-07-16 16:18
sjzunter
Rank: 2
等 级:论坛游民
帖 子:15
专家分:26
注 册:2009-7-16
收藏
得分:0 
我也是新手···只是简单的改了一下···有缺陷,就是10数中有两相同数的时候会出错!
#include "stdio.h"
void main()
{
int i,j,n,number,a[15];
printf("\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
   for(j=i+1;j<10;j++)
     if(a[i]>a[j])
     {
       n=a[i];
       a[i]=a[j];
       a[j]=n;
     }
for(i=0;i<10;i++)
printf(" %d",a[i]);
printf("\nplease input a number\nnumber:");
scanf("%d",&number);
for(i=0;i<11;i++)
if(number<a[i]&&number>a[i-1])/*条件说明一点*/
   {
     for(j=9;i<=j;j--)/*j=10改为j=9*/
     {
      a[j+1]=a[j];
     }
     a[i]=number;
   }
for(i=0;i<11;i++)
printf(" %d",a[i]);
getchar();
}
2009-07-16 17:31
快速回复:一个程序引发的问题
数据加载中...
 
   



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

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