⑴ 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語言寫的步進電機脈沖驅動程序開始運行後,電機一直在轉動,未按for 循環次數停下來
用C語言寫的步進電機脈沖驅動程序開始運行後,電機一直在轉動,未按li循環次數停下,如果是正常的話。那可能是的一
⑶ 用c語言編寫控制電機運動的程序
1、有三個輸入,分別是一個按鈕、兩個霍爾感測器(也就是接近開關),我用P0.0到P0.2來代替;輸出2個或以上(這看接什麼顯示器,如果是PC的話,就不用數字量輸出,直接串口就可以了)控制正反轉的繼電器管腳用P1.0、P1.1;需要與一個全局變數轉動次數k連接起來,另外兩個輸入接近開關選用NPN感測器或用光電隔離,總之有效信號能把管腳電壓拉低就可以。
2、常式:
#include<reg51.h>//選用晶振11.0592MHz
unsignedchark=0;//k表示正反轉次數
sbitX0=P3^2;//調節按鈕
sbitX1=P1^1;//上限位接近開關信號
sbitX2=P1^2;//下限位接近開關信號
sbitY1=P0^0;//電機上升(注意:我使用的是管腳輸出為0時候,電機運動,這樣可以避免啟動時候,單片機自復位對電機點動的影響)
sbitY2=P0^1;//電機下降
voiddelay50ms(unsignedinti)
{
unsignedintj;
for(i;i>0;i--)
for(j=46078;j>0;j--);
}
main()
{
IT0=1;//下降沿觸發
EX0=1;//開P3.2外部中斷
EA=1;//總中斷開
while(1)
while(k)
{
Y1=0;//正轉
while(X1==1);//等待正轉接近開關反應
Y1=1;//正轉停
delay50ms(1);//停止時間50ms
Y2=0;//反轉
while(X2==1);//等待反轉接近開關反應
Y2=1;//反轉停
k--;//圈數減一
}
}
voidcounter0(void)interrupt0
{
k++;//外部中斷控制圈數加一
//這個位置可以加你顯示程序
}
⑷ 怎樣用C語言實現旋轉
怎樣用C語言實現旋轉
#include <stdio.h>
void main()
{
int M;
int N;
int flag=0;
int num1=0;
int num2=1;
int i=0;
int j=0;
char str='A';
char Array[31][31];
printf("請輸入矩陣的行M和矩陣的列N:");
scanf("%d%d",&M,&N);
Array[0][0]=str;
while(flag < M*N-1)
{
switch(num2%4)
{
case 1:
++j;
if(j == N-num1-1)
{
num2++;
}
break;
case 2:
++i;
if(i == M-num1-1)
{
num2++;
}
break;
case 3:
--j;
if(j == num1)
{
num2++;
}
break;
case 0:
--i;
if(i == num1+1)
{
num2++;
num1++;
}
break;
}
if(++str == 'Z'+1)
str='A';
Array[i][j]=str;
flag++;
}
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%c ",Array[i][j]);
}
printf("\n");
}
}
⑸ 那位大神給段c語言控制舵機從0~180持續來回轉動的程序,不勝感激
180度舵機是一特殊的機器人專用舵機。你所說的0-180度,在專業玩家裡不這樣說的,而是說成±90度。即順時針90度,逆時針90度。
你可以自己寫一個的。這種舵機比較特殊,但是只要滿足一下PWM就可以實現了:
1. 周期T=20ms(即50HZ),占空比500us-2500us。
2. 500us舵機逆時針轉90度,2500us舵機順時針轉90讀。 (其中0度是1500us)
3. 即: TL+TH=20ms 改變TH的值,舵機角度隨之改變。參數參照以上1.2點。
TL TH
_____ ____
_________| |_________| | _________|
4. 電路原理很簡單,接好電源,地,信號線。
信號線接到單片機或者其他能輸出PWM的控制腳。
⑹ C語言求助大神二階順時針旋轉90度輸出
#include<stdio.h>
#defineN4//宏定義數組界限,可根據實際情況更改
intmain(){
inti,j,t,a[N][N];
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);//讀取矩陣
for(i=0;i<N;i++)
for(j=0;j<=i;j++)
{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}
for(j=0;j<N/2;j++)
for(i=0;i<N;i++)
{t=a[i][j];a[i][j]=a[i][N-j-1];a[i][N-j-1]=t;}//實現順時針方向旋轉矩陣90度
for(i=0;i<N;i++){
printf(" ");
for(j=0;j<N;j++)
printf("%4d",a[i][j]);//輸出旋轉後的矩陣
}
return0;
}
//運行示例:
⑺ 單片機控制電機正反轉動的c語言程序
首先要看你的電機是直流電機還是步進電機。直流電機就簡單了,只有兩根線,電機兩端電壓正負極改變就可以實現正轉反轉。不過要加電機驅動晶元,或者H橋電路,電機驅動晶元可以選擇L298N,加上適當的外圍電路就可以直接用單片機控制電機了。比如讓單片機P1.0 = 0,P1.1 = 1;(單片機I/0口要與電機驅動晶元的輸入腳相連)這樣的話,電機驅動晶元就會輸出一個電壓差,可以使直流電機向一個方向轉,如果使P1.0 = 1,P1.1 = 0,則電機驅動晶元會輸出一個和剛才相反的電壓,使電機向相反的方向轉動。H橋電路和電機驅動晶元的原理差不多,網上多的是。我這說的只是簡單的原理,實際中,L298N的輸入端和單片機相連的時候要加光耦隔離,否則單片機會工作不正常。步進電機就稍微復雜點,也得需要電機驅動晶元才行,只不過控制信號是按一定的規律給的,規律變了,電機轉動的方向也就變了。樓上給出的貌似是步進電機的驅動程序。
⑻ 用c語言編程三角形繞一點旋轉九十度怎麼做
A(ax, ay) B(bx, by) C(cx, cy) 移動後A(ax0, ay0)... 1)ax = r*cosα ay = r*sinα ax0 = r*cos(α+90) ay0=r*sin(α+90) 用三角函數展開就ok了 2)旋轉90度就是坐標點從一個象限旋轉到另一個象限,先判斷正負,再將橫縱坐標交換並根據正負情況乘以-1或者1 這個問題就是高中解析幾何的旋轉問題。或者圖形學里的二維圖形旋轉問題