當前位置:首頁 » 編程語言 » 數組的旋轉c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

數組的旋轉c語言

發布時間: 2022-01-18 02:39:01

㈠ C/C++ c語言 二維數組 旋轉 輸出。


voidrotateArr(){

inttemp[ROW][COL],i,j,k;

for(i=0,j=COL-1;j>=0;i++,j--)

for(k=0;k<COL;k++)

{

temp[k][j]=arr[i][k];//temp作為臨時數組,存放90度翻轉後的arr數組

}

for(i=0;i<ROW;i++)

{

for(j=0;j<COL;j++)

{

printf("%5d",arr[i][j]=temp[i][j]);//把temp數組的內容逐個賦給arr數組,以改變arr數組的值,使得多次調用rotateArr函數時arr的值會不斷改變

}

printf(" ");

}

printf(" ");

}

㈡ C語言二維數組通過指針旋轉90度

//初始的二維數組:
//1234
//5678
//9101112
//13141516

//順時針轉90度後的二維數組:
//13951
//141062
//151173
//161284

#include<stdio.h>
//#include<stdlib.h>//該頭文件暫時不用
//#include<string.h>//該頭文件暫時不用
#defineN4

//原代碼inta[N][N];//放在這里定義,二維數組a屬於全局變數

//將二維數組通過指針旋轉90度(順時針轉90度)
voidproc(intbuf[N][N],intn)
{
inti,j,t;
int*parr;//指向int類型的指針

parr=&buf[0][0];//將二維數組看成一維數組

for(i=0;i<=n-1;i++)
{
for(j=i;j<n-i-1;j++)
{
t=*(parr+i*n+j);
*(parr+i*n+j)=*(parr+(n-1-j)*n+i);
*(parr+(n-1-j)*n+i)=*(parr+(n-1-i)*n+n-1-j);
*(parr+(n-1-i)*n+n-1-j)=*(parr+j*n+n-1-i);
*(parr+j*n+n-1-i)=t;
}
}
}
voidOutput(inta[N][N])//輸出二維數組
{
inti,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%4d",a[i][j]);
}
printf(" ");
}
}
intmain()//原代碼voidmain()
{
//N的數值不大,二維數組a可放在函數main里定義,作為局部變數
inta[N][N];
inti,j,c=0;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
a[i][j]=++c;
}
}
Output(a);
printf(" ");
//原代碼proc(&a[N][N],N);
proc(a,N);
Output(a);

return0;
}

㈢ 簡單的C語言問題,數組翻轉

做矩陣轉置需要發現其中的規律。仔細分析之後就會知道:從最後一列開始,先輸出最下面的元素,然後依次向上輸出,該列輸出完之後,輸出前一列;知道元素全部輸出。

下面是我寫的代碼和運行的結果:

#include<stdio.h>

intmain()

{

inta[100][100],n,i,j;

printf("請輸入矩陣的維數:n=% ");

scanf("%d",&n);

printf("請輸入矩陣中的元素: ");

for(i=0;i<n;i++)

{

for(j=0;j<n;j++)

{

scanf("%d",&a[i][j]);

}

}

printf("矩陣轉置之後為: ");

for(j=n-1;j>=0;j--)

{

for(i=n-1;i>=0;i--)

{

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

}

printf(" ");

}

}

㈣ C語言的編程問題,是數組的旋轉問題,有誰能夠幫我找出我的錯誤在哪裡並幫我改正,謝謝。

給數組進行順時針90度旋轉,先以左斜對角線為軸,對數組進行翻轉,得到結果後,再上下翻轉,就可以得到順時針90度旋轉的效果,逆時針同理
參考代碼

#include<stdio.h>
#define N 5
void main(void)
{
int i,j,x,y,a[N][N],k=1;
printf("輸入一個5*5方陣\n");
printf("轉置前\n");
for(i=0; i<N; i++)
for(j=0; j<N; j++)a[i][j]=k++;
for(i=0; i<N; i++)
{
printf("\n");
for(j=0; j<N; j++)
printf("%5d",a[i][j]);
}
printf("\n");
for(i=0; i<N; i++)//以左斜對角線為軸進行翻轉
{
for(j=0; j<N-i-1; j++)
{
x=a[i][j];
a[i][j]=a[N-j-1][N-1-i];
a[N-j-1][N-1-i]=x;
}
}
for(i=0; i<N/2; i++) //上下翻轉
{
for(j=0; j<N; j++)
{
x=a[i][j];
a[i][j]=a[N-i-1][j];
a[N-i-1][j]=x;
}
}
printf("沿順時針方向旋轉九十度後:\n");
for(i=0; i<N; i++)
{
printf("\n");
for(j=0; j<N; j++)
printf("%5d",a[i][j]);
}
for(i=0; i<N; i++)//以右斜對角線為軸進行翻轉
{
for(j=0; j<N; j++)
{
if(j>i)
{
x=a[i][j];
a[i][j]=a[j][i];
a[j][i]=x;
}
}
}
for(i=0; i<N/2; i++) //上下翻轉
{
for(j=0; j<N; j++)
{
x=a[i][j];
a[i][j]=a[N-i-1][j];
a[N-i-1][j]=x;
}
}
printf("\n");
printf("沿逆時針方向旋轉九十度後:\n");
for(i=0; i<N; i++)
{
printf("\n");
for(j=0; j<N; j++)
printf("%5d",a[i][j]);
}
printf("\n");
}

㈤ C語言二維數組元素怎麼「順時針旋轉」,如圖

#include"stdio.h"

int main()

{int i,j,n,t,a[20][20];

int c;

scanf("%d",&n);

for(i=0;i<n;i++)

{for(j=0;j<n;j++)

{a[i][j]=n*i+j+1;

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

}

printf(" ");

}

printf("After: ");

for(i=0;i<n-1;i++)

for(j=i;j<n-1-i;j++)

{t=a[i][j];

a[i][j]=a[n-1-j][i];

a[n-1-j][i]=a[n-1-i][n-1-j];

a[n-1-i][n-1-j]=a[j][n-1-i];

a[j][n-1-i]=t;

}

for(i1=0;i1<n;i1++)

{for(j1=0;j1<n;j1++)

printf("%3d",a[i1][j1]);

printf(" ");

}

return 0;

}

㈥ C語言中怎樣將一個三行四列的二維數組 逆時針旋轉90°啊,幫幫忙啊

下面程序的功能是將一個 3 行 4 列的數組進行逆時針旋轉 90 度後輸出,要求原始數組的數據隨機輸入,新數組以 4 行 3 列的方式輸出。

主要涉及知識點:二維數組的輸入及輸出、循環嵌套與二維數組的結合、輸出的格式控制。

代碼實現:

#include<stdio.h>
intmain(){
inta[3][4],b[4][3],i,j;/*a存放原始數組數據,b存放旋轉後數組數據*/
printf("input16numbers:");
/*輸入一組數據存放到數組a中,然後旋轉存放到b數組中*/
for(i=0;i<3;i++){
for(j=0;j<4;j++){
scanf("%d",&a[i][j]);
printf("%6d",a[i][j]);
b[3-j][i]=a[i][j];
}
printf(" ");
}
printf("arrayb: ");
for(i=0;i<4;i++){
for(j=0;j<3;j++)
printf("%6d",b[i][j]);
printf(" ");
}
return0;
}

㈦ c語言,將二維數組繞一個角旋轉90度 不藉助第二數組,

可以,如果如不改寫數組,你需要提供一個內聯函數。
如果需要保存轉置,你必須使用第二數組。
inline int zhuan(int* list,int n ,int newn, int newh){
newn++,newh++;
//n表示數組第一維元素個數,newn表示你調用的轉置後的數組的橫索引.
return list[(n-newn+1)+(newh-1)*n-1]
}
你試試吧:
int list[][]={{11,12,13,14},{21,22,23,24},{31,32,33,34},};
zhuan((int*)list,4,0,0);
獲取轉置後矩陣的第一個元素0,0;
------c 代碼:
#include <stdio.h>
int list[][4]={11,12,13,14,21,22,23,24,31,32,33,34,};
inline int zhuan(int* list,int n ,int newn, int newh){
newn++,newh++;
//n表示數組第一維元素個數,newn表示你調用的轉置後的數組的橫索引.
return list[(n-newn+1)+(newh-1)*n-1];
}
using namespace std;
int main(){
int i=0;
int b=0;
int n=0;
for (;i<4;i++){
b=0;
for(;b<3;b++){
n++;
printf("%d,",zhuan((int*)list,4,i,b));
if(n>2){printf("\n");n=0;}
}
}
getchar();
}

㈧ c語言中把一維數組的內容翻轉後輸出。 不懂什麼叫把數組的內容翻轉。 翻轉是什麼意思是倒序存放嗎

翻轉應該就是n存到0,1存到n-1這樣,就是倒序存放

㈨ c程序數組的轉置

你的數組轉置程序,主要有兩個問題,

一 C語言二維數組的參數聲明和傳參不正確

二 二維數組的轉置,只需要以主對角線為軸翻轉一次就行了,

因此,transport函數中for_j循環的終止條件應該為j<i;

改正後的數組轉置C語言程序如下(改動的地方見注釋)

#include<stdio.h>

int main()

{

int a[3][3];

int i,j;

void transport(int a[][3]);//這里把返回值類型int改成void,把a[3][3]改成a[][3]

printf("input:");

for(i=0;i<3;i++)

for(j=0;j<3;j++)

{

scanf_s("%d",&a[i][j]);//這里建議把scanf_s改成scanf

}

transport(a);//這里把a[3][3]改成a

for(i=0;i<3;i++)

{//這里加大括弧

for(j=0;j<3;j++)

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

printf(" ");//這里加一句,換行

}//這里加大括弧

return 0;

}

void transport(int a[][3])//這里把返回值類型int改成void,把a[3][3]改成a[][3]

{

int i,j,t;

for(i=0;i<3;i++)

for(j=0;j<i;j++)//這里把j<3;改成j<i;

{

t=a[i][j];

a[i][j]=a[j][i];

a[j][i]=t;

}

}

㈩ 題目用c是把一個數組旋轉90度

繞4順時針轉,如有別的要求可留言

#include "stdio.h"
#define N 4
void main ()
{
int a[N][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int b[N][N];
int i,j,t;
int (*p)[4]=a;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
b[i][j]=p[N-j-1][i];
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%4d",b[i][j]);
printf("\n");
}
}

如果對你有所幫助,請記得採納最佳答案,謝謝!