Ⅰ c語言數組元素交換問題
數組交換的swap函數中
voidSWAP(double*a,double*b)//用於交換數組的元素
{
doubletemp;
temp=*a;
*a=*b;
*b=temp;
}
你傳進去的是double*a
但你定義的是doubletemp
類型都不一樣怎麼賦值!!
Ⅱ c語言求數組元素交換次序
假定數據長n,輸入一個整數m,
1、使數組的後n-m個元素移到前邊,前m-1個元素在數組中從最後位置倒序排列
#include
"stdio.h"
main()
{
int
i,n,m,t,j;
int
d[200];
printf("\n輸入n的值(n<200):");
scanf("%d",&n);
for(i=0;i<n;i++)d[i]=i;
printf("\n輸入m的值(m<200):");
scanf("%d",&m);
printf("\n輸出調整前的數據:\n");
for(i=0;i<n;i++)printf("%d
",d[i];
//調整程序開始
for(i=0;i<m;i++)
{//n-m個數前移了
t=d[0];
for(j=1;j<n;j++)d[j-1]=d[j];
d[n-1]=t;
}
for(i=0;i<m/2;i++)
{//倒序
t=d[n-1-i];
d[n-1-i]=d[m+i];
d[m+i=t;
}
printf("\n輸出調整後的數據:\n");
for(i=0;i<n;i++)printf("%d
",d[i];
}
Ⅲ 【萌新】C語言多次交換數組元素問題
不是多次使用或循環中使用就無法完成交換。而是
如果是a[4]={0,1,2,3};
swap(a[1],a[2]);swap(a[1],a[3]);
後,就成為:
a[ ]={0,3,1,2}
(先成為a[ ]={0,2,1,3},再成為a[ ]={0,3,1,2})
不知你說是的否這種情況?(要注意後次交換是在前次交換已經完成的情況下進行的)
Ⅳ c語言編寫交換數組元素
排下版吧,學習C語言還是嚴謹點好,這樣子太亂了
Ⅳ C語言如何將二維數組中兩個元素交換位置
可以讓數組進行轉置來實現,參考如下:
public class TestTransposition {
int col;
int row;
/**轉換方法 將一個數組進行轉置
* 原理很簡單
*
* @param input
* @return
*/
public int[][] trans(int[][] input) {
int[][] output = null;
row = input.length;
if (row $amp;>amp;$nbsp;0) {
col = input[0].length;
}
output = new int[col][row];
for (int i = 0; i $amp; for (int j = 0; j $amp; output[j][i] = input[i][j];
}
}
return output;
}
public static void main(String[] args){
//若是需要得到轉置數組,應該調用上面的轉置方法
// int[][] in={{1,2,3},{3,4,5}};
// int[][] out=new TestTransposition().trans(in);
// for (int i = 0; i $amp; // for (int j = 0; j $amp; // System.out.print(out[i][j]);
// }
// System.out.println("");
// }
//若只是想輸出得到效果 這應該是可以的
int[][] in={{1,2,3},{3,4,5}};
for(int i=0;i<in[0].length;i++){
for(int j=0;j<in.length;j++){
System.out.print(in[j][i]);
}
System.out.println("");
}
}
/*a[2][3]---->a[3][2]
* a[0][0]---->a[0][0]
* a[0][1]---->a[1][0]
* a[0][2]----->a[2][0]
* a[1][0]---->a[0][1]
* a[1][1]---->a[1][1]
* a[1][2]----->a[2][1]
*/
//故此 初步想法應是通過反向循環,即先循環列,在循環行來實現。
}
Ⅵ c語言用指針和自定義函數實現數組元素的調換
#include <stdio.h>
#define N 10
void Swap ( int *a, int *b, int n);
int main(void)
{
int *a, *b;
int num1[N], num2[N];
for (a = num1; a < num1 + N; a++)
scanf ("%d", a);
for (b = num2; b < num2 + N; b++)
scanf ("%d", b);
a = num1;//重新指向首地址
b = num2;//重新指向首地址
Swap (a, b, N);
printf ("*********交換後**********\n");
for (a = num1; a < num1 + N; a++)
printf ("%3d", *a);
printf ("\n");
for (b = num2; b < num2 + N; b++)
printf ("%3d", *b);
return 0;
}
void Swap (int *a, int *b, int n)
{
int temp;
int i;
for (i = 0; i < n; i++)
{
temp = *(a + i);
*(a + i) = *(b + i);
*(b + i) = temp;
}
}
Ⅶ C語言如何將二位字元串數組中的兩個元素交換位置
#include<stdio.h>
#include<string.h>
voidmain(){chars[2][80]={"aaa","bbbb"},charbuf[80];
strcpy(buf,s[0]);strcpy(s[0],s[1]);strcpy(s[1],buf);//類似於整數變數交換值
printf("%s %s ",s[0],s[1]);
}
Ⅷ c語言中怎樣交換兩個數組
逐個元素交換即可。
前提是兩個數組必須有同樣的長度
否則無法交換。
函數如下:
voidswap_array(int*a,int*b,intl)
{
inti,t;
for(i=0;i<l;i++)
{
t=a[i];
a[i]=b[i];
b[i]=t;
}
}
構建好兩個等長數組,調用這個函數就可以
a和b是兩個數組名, l為數組元素個數,即長度。
Ⅸ C語言中數組元素互換的問題
當index為0時,數組中下標為0的和下標為4-0的元素交換,也就是第一個和最後一個交換,(1,5)交換
當index為1時,數組中下標為1的和下標為4-1的元素交換,也就是第二個和倒數第二個交換,(2,4)交換
因為此數組元素的個數為奇數個,所以,最中間那個沒有必要交換,所以3原地不動
最後交換後的元素順序為54321
Ⅹ C語言數組元素前後位置互換
#include<stdio.h>
char array[2][3];
void func(char array[2][3],int x1,int y1,int x2,int y2){
char t;
t=array[x1][y1];
array[x1][y1]=array[x2][y2];
array[x2][y2]=t;
}
int main(){
int i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%c",&array[i][j]);//註:連續輸入二維數組的值,不用加回車
func(array,0,1,1,1);
for(i=0;i<2;i++){
for(j=0;j<3;j++)
printf("%c ",array[i][j]);
printf("\n");
}
return 0;
}