| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 400 人关注过本帖
标题:求问大神下面程序哪里错了?
只看楼主 加入收藏
qq384200403
Rank: 2
等 级:论坛游民
帖 子:35
专家分:39
注 册:2013-3-1
结帖率:87.5%
收藏
已结贴  问题点数:10 回复次数:9 
求问大神下面程序哪里错了?
#include <stdio.h>

int main ()
{
int pass,i,hold,S,a[S];

printf("请输入要输入的数据数目:\n");
scanf("%d",&S);

for(i = 0;i < S;i++)
{printf("请输入第%d个数:\n",i+1);
           scanf("%d",&a[i]);
}
for(pass = 0;pass< S-1;pass ++)
{
    for(i=0;i<S-1;i ++)
    {
        {    if(a[i]>a[i+1])
            hold = a[i];
            a[i] = a[i+1];
            a[i+1] = hold;
        }
    }   
}
    printf("\n升序排序后:\n");
    for(i= 0;i< S;i++)
        printf("%4d",a[i]);
    printf("\n----排序完毕!----\n");
    return 0;
搜索更多相关主题的帖子: include hold 
2013-03-04 21:09
darling_mand
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-3-2
收藏
得分:0 
你的程序大致是对的,但是细节方面要注意一点;我修改了一点点,开头的int a[S]是不对的,因为此时S没有值,在C语言里不可以那么用,还有你一个大括号加错了位置,希望对你有帮助!
#include <stdio.h>

int main ()
{
int pass,i,hold,S,a[100];

printf("请输入要输入的数据数目:\n");
scanf("%d",&S);

for(i=0;i<S;i++)
{printf("请输入第%d个数:\n",i+1);
           scanf("%d",&a[i]);
}
for(pass=0;pass<S-1;pass ++){
    for(i=0;i<S-1;i ++)
    {
        if(a[i]>a[i+1]){
            hold = a[i];
            a[i] = a[i+1];
            a[i+1] = hold;
        }
    }   
}
    printf("\n升序排序后:\n");
    for(i= 0;i< S;i++)
        printf("%4d",a[i]);
    printf("\n----排序完毕!----\n");
    return 0;
}
2013-03-04 21:37
shmilyflf
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:356
专家分:1008
注 册:2012-12-9
收藏
得分:0 
#include <stdio.h>
 
int main ()
 {
 int pass,i,hold,S,a[S];//这个地方还真不知道你对不对,没运行看,c语言确实是要求数组必须确定大小。
 
printf("请输入要输入的数据数目:\n");
 scanf("%d",&S);
 //或许你可以把int a[S];放到这里,我知道c语言又规定变量必须在最开始的时候声明,你试试吧,也许这样也可以呢,就可以节约不少空间。
for(i = 0;i < S;i++)
 {printf("请输入第%d个数:\n",i+1);
            scanf("%d",&a[i]);
 }
for(pass = 0;pass< S-1;pass ++)
 {
     for(i=0;i<S-1;i ++)//这里,你真是不考虑效率啊!i<S-pass-1就可以。如果数据很多的话,会少比较很多次。好好理解一下冒泡排序吧。
     {
         {    if(a[i]>a[i+1])//这里你丢大括号了,这样只能运行hold=a[i];这一句!
             {
                    hold = a[i];
                    a[i] = a[i+1];
                    a[i+1] = hold;
              }
         }
     }   
}
     printf("\n升序排序后:\n");
     for(i= 0;i< S;i++)
         printf("%4d",a[i]);
     printf("\n----排序完毕!----\n");
     return 0;
}//最后还少个大括号,我情愿相信这个是你复制落了。
2013-03-04 21:55
古剑魂2012
Rank: 2
等 级:论坛游民
帖 子:9
专家分:20
注 册:2013-2-26
收藏
得分:0 
#include <stdio.h>

int main ()
{
int pass,i,hold,S,a[S];

printf("请输入要输入的数据数目:\n");
scanf("%d",&S);

for(i = 0;i < S;i++)
{printf("请输入第%d个数:\n",i+1);
           scanf("%d",&a[i]);
}
for(pass = 0;pass< S-1;pass ++)
{
    for(i=0;i<S-1;i ++)
    {
            if(a[i]>a[i+1])
          {
            hold = a[i];
            a[i] = a[i+1];
            a[i+1] = hold;
          }
    }   
}
    printf("\n升序排序后:\n");
    for(i= 0;i< S;i++)
        printf("%4d",a[i]);
    printf("\n----排序完毕!----\n");
    return 0;
2013-03-05 15:07
qq384200403
Rank: 2
等 级:论坛游民
帖 子:35
专家分:39
注 册:2013-3-1
收藏
得分:0 
回复 3楼 shmilyflf
那能实现由用户输入S码?S没有限制,想输多少输多少啊
2013-03-06 18:21
qq384200403
Rank: 2
等 级:论坛游民
帖 子:35
专家分:39
注 册:2013-3-1
收藏
得分:0 
回复 4楼 古剑魂2012
那能实现由用户输入S码?S没有限制,想输多少输多少啊
2013-03-06 18:21
小xiong
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:388
专家分:1722
注 册:2013-2-8
收藏
得分:0 
这个好像不能无限输入吧
2013-03-06 18:47
qq384200403
Rank: 2
等 级:论坛游民
帖 子:35
专家分:39
注 册:2013-3-1
收藏
得分:0 
回复 7楼 小xiong
那可以用别的方法实现吗?
2013-03-06 18:48
虾米想
Rank: 1
来 自:广西南宁
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-3-6
收藏
得分:0 
没有a[S]这种表达吧 你要想这样表达   就要在你输入了S指后再定义a[S]才行,不然系统不认识的
2013-03-06 20:34
cuixinyu
Rank: 2
等 级:论坛游民
帖 子:14
专家分:22
注 册:2013-3-3
收藏
得分:10 
哥们 首先把 你应该明确一点首先吧
定义数组的时候你应该确定数组的大小
因为c语言并不支持用户通过输入数字来确定数组的大小
唯一有可能通过输入的就是定义一个函数
然后在主函数中
列如
int fact(int n)
{  int a[n];
   ...
}
int main()
{  int b;
   scanf("%d",&b);
   fact(b);
   ...
}
2013-03-06 23:03
快速回复:求问大神下面程序哪里错了?
数据加载中...
 
   



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

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