给定一个包含n个整数分量的数组x,写出允许执行以下操作的函数:对给定数组进行循环置换
我尝试在代码中不使用poiter,因为它最终只使用数组。
我认为问题在于pcircular中的数组丢失了,无法将值传递给write函数
注意:对于大于6的阵列,它将不起作用
#include <stdio.h>
int ArraySize(){ // get the size of the array
int size;
printf("What's the array size? ");
scanf("%d", &size);
return size;
}
void readArray(int size, int array[]){ /*put the values in the first array*/
for (int i = 0; i < size; i++){
printf("What is the \033[1;36m%d\033[m value? ", i+1);
scanf("%d", &array[i]);
}
}
void pcircular(int size, int array[size][size]){ //Circular permutation function
for (int j = 0; j <= size; j++){
/* printf("("); */
for (int i = 0; i < size; i++){
if (i == size - 1){
array[j+1][0] = array[j][i];
/* printf("%d", array[j+1][0]); */
}
else{
array[j+1][i+1] = array[j][i];
/* printf("%d", array[j+1][i+1]);
printf(", "); */
}
}
/* printf(")"); */
}
}
void writeArray(int size, int array[size][size]){ //Write the Array
for (int i = 0; i <= size; i++){
printf("(");
for (int j = 0; j < size; j++){
/* printf("\ni = %d j = %d\n", i, j); */
printf("%d", array[i][j]);
if (j != size-1){
printf(", ");
}
}
printf(")");
}
}
void main(){
int size = ArraySize();
int list[size][size]; // create the array
readArray(size, list[0]);
pcircular(size, list);
writeArray(size, list);
}
输入:
数组大小是多少?6
1的值是多少?1
2的值是多少?2
3的值是多少?3
4的值是多少?4
5的值是多少?5
6的值是多少?6
预期输出:(一、二、三、四、五、六)(一、二、三、四、五)(五、六、一、二、三、四)(四、五、六、一、二、三)(三、四、五、六、一、二)(二、三、四、五、六、一)(一、二、三、四、五、六)
真实的输出:(
1条答案
按热度按时间i34xakig1#
编写pcircular函数如下:
但主要的问题是:
因为您创建的行比编号多一行,所以最后一行实际上是第一行的副本。
如果你不改变pcircular函数,而使用你的版本,你也应该添加到第二维。