| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 406 人关注过本帖
标题:数组里数据段交换问题
只看楼主 加入收藏
gaochizhen33
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:114
专家分:101
注 册:2010-11-4
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:4 
数组里数据段交换问题
将a[20]分为3段 P Q R ,交换R和P的位置,P与Q长度自己设置 下面是写的程序 在TC上能运行 在VC上运行时总提示“该内存不能为read” 看网上说是内存有问题,拜托来个好心人帮我运行下 看看程序本身有没有问题
程序代码:
#include"stdio.h"
#define N 20
main()


{   
    void move(a,q,r);
    int a[N],r,q,i;
    printf("input %d number:\n",N);
    for(i = 0;i < N;i++)
        scanf("%d",&a[i]);
    for(i = 0;i < N;i++)
        printf("%d ",a[i]);
    printf("\ninput the first number's positions of Q&R:\n");
    scanf("%d%d",&q,&r);
    printf("\ndata P is:\n");
    for(i = 0;i < q;i++)
        printf("%d ",a[i]);
    printf("\ndata Q is:\n");
    for(i = q;i < r;i++)
        printf("%d ",a[i]);
    printf("\ndata R is:\n");
    for(i = r;i < N;i++)
        printf("%d ",a[i]);
    printf("\n");
    if(!(q > 0 && q < r && r < N))
    {
        printf("wrong\n");
        exit(1);
    }
    move(a,q,r);                 /* 在这步就提示该内存不能为read了 是调用的程序有错误还是电脑本身有毛病啊 最近编程序总是提示应用程序错误 怎么回事啊 */
    for(i = 0;i < N;i++)

        printf("%d ",a[i]);
}

void move(a,q,r)              /*设置交换程序 */
int a[],q,r;
{
    int i,j,t[N];
    for(j = r;j < N;j++)
        t[i++] = a[i];
    for(j = q;j < r;j++)
        t[i++] = a[i];
    for(j = 0;j < q;j++)
        t[i++] = a[i];
    for(i = 0; i < N; i++)
        a[i] = t[i];
}


[ 本帖最后由 gaochizhen33 于 2010-11-17 20:29 编辑 ]
搜索更多相关主题的帖子: 里数 
2010-11-17 20:26
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:10 
程序代码:
#include<stdio.h>
#include <stdlib.h>  // exit函数你的编译器难道不需要这个头文件吗

#define N 20
int main()
{  
    void move(int a[] ,int q,int r); // 先是声明就有问题
    int a[N],r,q,i;
    printf("input %d number:\n",N);
    for(i = 0;i < N;i++)
        scanf("%d",&a[i]);
    for(i = 0;i < N;i++)
        printf("%d ",a[i]);
    printf("\ninput the first number's positions of Q&R:\n");
    scanf("%d%d",&q,&r);
    printf("\ndata P is:\n");
    for(i = 0;i < q;i++)
        printf("%d ",a[i]);
    printf("\ndata Q is:\n");
    for(i = q;i < r;i++)
        printf("%d ",a[i]);
    printf("\ndata R is:\n");
    for(i = r;i < N;i++)
        printf("%d ",a[i]);
    printf("\n");
    if(!(q > 0 && q < r && r < N))
    {
        printf("wrong\n");
        exit(1);
    }
    move(a,q,r);                 /* 在这步就提示该内存不能为read了 是调用的程序有错误还是电脑本身有毛病啊 最近编程序总是提示应用程序错误 怎么回事啊 */
    for(i = 0;i < N;i++)

        printf("%d ",a[i]);
}

void move( int a[],int q,int r)              /*设置交换程序 */
{
    int i,j,t[N]; // 这个i 就定义了下,没初始化,譬如i=0,像你这么写,难道你的编译器认得i++而且作下标,难道不报错吗
    for(j = r;j < N;j++)//
        t[i++] = a[i];
    for(j = q;j < r;j++)
        t[i++] = a[i];
    for(j = 0;j < q;j++)
        t[i++] = a[i];
    for(i = 0; i < N; i++)
        a[i] = t[i];
}



大堆错误能说没错误吗?

[ 本帖最后由 m21wo 于 2010-11-17 21:01 编辑 ]

If You Want Something, Go Get It, Period.
2010-11-17 20:52
gaochizhen33
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:114
专家分:101
注 册:2010-11-4
收藏
得分:0 
我们老师课上用的TC就是这么编译的  可是在VC上就用不了了

[ 本帖最后由 gaochizhen33 于 2010-11-17 21:37 编辑 ]
2010-11-17 21:27
gaochizhen33
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:114
专家分:101
注 册:2010-11-4
收藏
得分:0 
貌似我没说没错误吧 而且改完了之后结果正确么 我用VC运行了次 结果没有交换啊 还是原样输出 调用交换程序 要怎么写代码 程序中调用没有用啊

[ 本帖最后由 gaochizhen33 于 2010-11-17 21:55 编辑 ]
2010-11-17 21:35
gaochizhen33
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:114
专家分:101
注 册:2010-11-4
收藏
得分:0 
..调用函数中的a[j]写成a[i]了 后来才看出来 白费力气了

[ 本帖最后由 gaochizhen33 于 2010-11-17 22:50 编辑 ]
2010-11-17 22:17
快速回复:数组里数据段交换问题
数据加载中...
 
   



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

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