首页 > 解决方案 > 从C中结构的数组成员中打印元素

问题描述

我一直在解决 CyclicRotation 的问题。这是我的代码:

#include<stdio.h>
#include<stdlib.h>

struct Results{
  int *A;
  int N;
};

struct Results solution(int A[], int N, int K){
  struct Results result;
  int *tab, i=0, j=0;
  tab = (int*) malloc(N*sizeof(int));
  if(N==0){
    result.A = A;
    result.N = N;
    return result;
  }
  if(K>N){
    K = K % N;
  }
  if(K<N && N != 0){
    for(i=N-K;i<N;i++){
      tab[j] = A[i];
      j = j + 1;
    }
    i = 0;
    while(i<N-K){
      tab[j] = A[i];
      i++;
      j++;
    }
  } else {
    tab = A;
  }
  result.A = tab;
  result.N = N;
  return result;
}

int main()
{
  int j[]={2,3,4,5,6,7,8};
  int mylen;
  int myk = 3;
  mylen = sizeof(j)/sizeof(j[0]);
  return 0;
}

我在代码中试过这个:

int main()
{
  int j[]={2,3,4,5,6,7,8};
  int mylen;
  int myk = 3;
  mylen = sizeof(j)/sizeof(j[0]);
  printf("The result is %d",solution(j,mylen,myk).A);
  return 0;
}

预期结果为 6782345,但控制台中的结果不同:

The result is -591373584

我不确定数组打印是否正确(鉴于这是一个数组,也许我需要一个循环?)。拜托,你能给我一个帮助吗?先感谢您。

标签: c

解决方案


int main()
{
  int j[]={2,3,4,5,6,7,8};
  int mylen;
  int myk = 3;
  mylen = sizeof(j)/sizeof(j[0]);
    struct Results results = solution(j, mylen, myk);
    for(int i = 0; i < mylen; i++)
        printf("%d\n", results.A[i]);
    free(results.A);
  return 0;
}

推荐阅读