| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 762 人关注过本帖
标题:赋值给数组时遇到的问题。
只看楼主 加入收藏
宅云云丶
Rank: 2
等 级:论坛游民
帖 子:71
专家分:11
注 册:2011-10-25
结帖率:92.86%
收藏
已结贴  问题点数:15 回复次数:7 
赋值给数组时遇到的问题。
我保证不是纯低级问题了。。。
程序代码:
#include<stdio.h>
#define N 7
int main()
{
    int a[N];
    int i,j,t;
    printf("请输入七个数:\n");
    for(i=0;i<N;i++)
        scanf("%d",&a[i]);
    for(j=0;j<N-1;j++)
    {
        for(i=0;i<N-1-j;i++)
            if (a[i]>a[i+1])
            {t=a[i];
            a[i]=a[i+1];
            a[i+1]=t;
            }
    }
    printf("拍完序的数组为:\n");
   
    for(i=0;i<N;i++)
        printf("%d\n",a[i]);
    return 0;
   


}

这个 冒泡排序 完全没问题,
可以输出,但是我一旦赋值了。
程序代码:
#include<stdio.h>
#define N 7
int main()
{
    int a[N],b[N];
    int i,j,t;
    printf("请输入七个数:\n");
    for(i=0;i<N;i++)
        scanf("%d",&a[i]);
    for(j=0;j<N-1;j++)
    {
        for(i=0;i<N-1-j;i++)
            if (a[i]>a[i+1])
            {t=a[i];
            a[i]=a[i+1];
            a[i+1]=t;
            }
    }
    printf("拍完序的数组为:\n");
    b[i]=a[i];
    for(i=0;i<N;i++)
        printf("%d\n",b[i]);
    return 0;
   

他就输不出来了呢、、

搜索更多相关主题的帖子: include return 
2011-11-10 16:29
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:5 
不能这样赋值吧。。。我给你改一下弄成 b[7]=a[7];也是不行。都溢出了  如果没有这句反而可以了 一个一个对应赋值就可以了

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-11-10 16:37
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:5 
回复 2楼 cqm9266
他数组里本来只到a[6],你给他个a[7]当然就溢出了
他的程序里,N为7,i<N-1是循环条件,而此时,结束循环了,i就是7,所以,当你b[i]=a[i];时,就是b[7]=a[7]。
都超过了数组a的范围,当然就不行了。
如果要把一个数组赋值到另一个数组,可以用循环,一个一个赋值过去
for(i=0;i<N;i++)
    b[i]=a[i];
就行了
2011-11-10 16:51
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:5 
你把数组a中的数据复制到b中也应一个一个地复制。
for(i=0;i<n;i++)
  b[i]=a[i];
2011-11-10 16:51
宅云云丶
Rank: 2
等 级:论坛游民
帖 子:71
专家分:11
注 册:2011-10-25
收藏
得分:0 
回复 3楼 luchar

改成这样呢?


#include<stdio.h>
#define N 7
int main()
{
    int a[N],b[N];
    int i,j,t;
    printf("请输入七个数:\n");
    for(i=0;i<N;i++)
        scanf("%d",&a[i]);
    for(j=0;j<N-1;j++)
    {
        for(i=0;i<N-1-j;i++)
            if (a[i]>a[i+1])
            {t=a[i];
            a[i]=a[i+1];
            a[i+1]=t;
            }
    b[j]=a[j];
    }
    printf("拍完序的数组为:\n");
       for(i=0;i<N;i++)
        printf("%d\n",b[i]);
    return 0;
   

2011-11-10 17:04
宅云云丶
Rank: 2
等 级:论坛游民
帖 子:71
专家分:11
注 册:2011-10-25
收藏
得分:0 
回复 4楼 heroinearth
恩,这个可以,
谢谢啊。
但是总觉得有点麻烦、、
2011-11-10 17:05
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:0 
回复 5楼 宅云云丶
这样也可以啊,只是这样把数组a的值再放进数组b没有意义啊,如果是a数组不改变,把数组a中的数排序后放到数组b也就算了
2011-11-10 17:12
宅云云丶
Rank: 2
等 级:论坛游民
帖 子:71
专家分:11
注 册:2011-10-25
收藏
得分:0 
回复 7楼 luchar
这样。。。
我再试试,谢谢你。
2011-11-10 17:20
快速回复:赋值给数组时遇到的问题。
数据加载中...
 
   



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

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