① c語言中二維數組如何交換行
1.使用循環語句對於指定行的每列的數一個一個進行交換即可。
2.常式:
#include<stdio.h>
#include<string.h>
ints[1000][1000];
intn,m,i,j,k,temp;
intmain(){
scanf("%d%d,&n,&m);//二維數組的行數n,列數m
for(i=0;i<n;i++)for(j=0;j<m;j++)scanf("%d",s[i]+j)//得到二維數組
for(j=0;j<m;j++){//交換第三行和第五行的數
temp=s[3][j];
s[3][j]=s[5][j];
s[5][j]=temp;
}
for(i=0;i<n;i++){
for(j=0;j<m;j++)printf("%d",s[i][j])//輸出交換後的數組
printf(" ")
}
return0;
}
② C語言中,怎麼交換指針數組里的值
程序主要通過冒泡法使用函數strcmp比較兩指針所值字元串大小,通過臨時指針交換兩指針指向,實現字元串排序,代碼如下,
//程序功能,從小到大排序10個字元串
#include <stdio.h>
#include <string.h>
void bubble_sort(char *a[], int n);
int main(int argc, char *argv[])
{
char a[10][20]={0};//存儲10個字元串
char *p[10];//指向10個字元串
int i=0;
for(i=0;i<10;i++)
{
gets(a[i]);//輸入字元串
p[i]=a[i];//指向字元串
}
for(i=0;i<10;i++)
{
puts(a[i]);//輸出原字元串
}
bubble_sort(p,10);
for(i=0;i<10;i++)
{
puts(p[i]);//輸出排序後字元串
}
return 0;
}
//冒泡法排序,從小到大排序
void bubble_sort(char *a[], int n)
{
int i, j;
char *temp;
for (j = 0; j < n - 1; j++)
for (i = 0; i < n - 1 - j; i++)
{
if(strcmp(a[i],a[i+1])>0)//交換指針
{
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
}
int strcmp( const char *str1, const char *str2 );比較字元串str1、str2,返回值大於0,str1>str2,返回值小於0,str1<str2,返回值等於0,str1==str2。
③ 在C語言中怎麼把一個數組(一維數組)的後面的數與前面的數交換
數組的大小知道嗎?要是知道大小n的話對於數組a[n]
那第一個就是a[0],最後一個是a[n-1];
做交換這樣
定義一個和數組內相同的數據類型的ttype
temp;
temp=a[n-1];
a[n-1]=a[0];
a[0]=temp;
這樣就交換了
④ 在c語言中如何將數組的最大值與最小值互換位置,求大神解答!!!
找到最大和最小值的下標,然後交換,例如:
#include <stdio.h>
main()
{
int a[10]={10,2,3,4,5,6,7,8,9,10},n=10;
int i1,i2,i;
i1=0;
for (i=0;i<n;i++)if (a[i]<a[i1]) i1=i;
i2=0;
for (i=0;i<n;i++)if (a[i]>a[i2]) i2=i;
i=a[i1]; a[i1]=a[i2];a[i2]=i;
for (i=0;i<n;i++) printf("%d ",a[i]);
return 0;
}
⑤ C語言中實現數組間數據交換的方法有哪些謝謝!
一般都用引入第三個變數做為中間參數,如a,b的交換引入變數c,a=c;b=a;b=c;
⑥ C語言數組數字交換
程序完全沒有問題啊。
⑦ 在C語言中如何將兩個數進行互換
將兩個數進行互換的方法有兩種形式:
1、藉助中間變數完成,此方法直觀,易理解,使用最多
2、不需要中間變數,通過變數身的運算完成交換。
參考代碼:
方法1:
inta=2,b=3,t;
t=a;//先將a存儲到臨時變數t中
a=b;//將b存儲到a中
b=t;//將臨時變數中的原a值存儲到b中
printf("a=%db=%d ",a,b);
方法2:
inta=2,b=3,t;
a+=b;//把兩數之和存到a中
b=a-b;//用兩數和減去b可得原a,存儲到b中
a=a-b;//因為b現在是原a值,所以,用兩數和減去b(原a)可得原b,存儲到a中
此方法,還可以用異或運算來實現,原理相同。
⑧ c語言數組元素交換問題
數組交換的swap函數中
voidSWAP(double*a,double*b)//用於交換數組的元素
{
doubletemp;
temp=*a;
*a=*b;
*b=temp;
}
你傳進去的是double*a
但你定義的是doubletemp
類型都不一樣怎麼賦值!!
⑨ c語言結構體數組怎麼交換
定義一個struct cj temp;
然後就直接交換啊。
我把那塊做成函數,樓主直接調用吧,主函數就沒寫完整了。
#include <stdio.h>
struct cj
{
int No;
char Name[20];
int cj1;
int cj2;
int cj3;
int pingjun;
int Number;
};
int main(int argc, char *argv[])
{
struct cj student[50];
void sort(struct cj *student,int n);
sort(student,50);
return 0;
}
void sort(struct cj *student,int n)/*從大到小的*/
{
int flag;
int i,j;
struct cj temp;
for(i=0;i<n-1;i++)
{
flag=0;
for(j=0;j<n-i-1;j++)
if(student[j].pingjun<student[j+1].pingjun)
{
flag=1;
temp=student[j+1];
student[j+1]=student[j];
student[j]=temp;
}
if(flag==0)
break;
}
}
⑩ C語言數值的交換
樓上的這個
a
=
a+b;
b
=
a-b;
a
=
a-b;
是個方法,是符合我們數學思維的方法,也是最初接觸C語言的人可能想到的方法。
但是這樣編程很不直觀,不如t=a;a=b;b=t;來得快。
似乎在C++中有swap(a,
b)模板函數,直接實現a,b交換。
想玩高級一點的話,可採用「換標不換值」的方法,用數組元素作為數組的下標,這種方法換邏輯不換存儲。
#include
<stdio.h>
void
main()
{
int
a=10,b=20;
int
array1[2]
=
{10,20};
//存a、b值
int
array2[2]
=
{0,1};
//存下標
b
=
array1[array2[0]];
a
=
array1[array2[1]];
printf("a=%d,
b=%d\n",a,b);
}
這個方法在對結構體數組值交換中非常好用!因為結構體數組一般每個成員都有很多個值,如:
struct
student
{
int
num;
double
score;
char
name[20];
}stu[5]={{1,98,"ziguowen"},{2,88,"dongda"},{3,78,"haha"}};
//交換stu[0]和stu[1],需要
int
n;
double
s;
char
n[20];
n
=
stu[0].num;
stu[0].num
=
stu[1].num;
stu[1].num
=
n;
s
=
stu[0].score;
stu[0].score
=
stu[1].score;
stu[1].score
=
s;
strcpy(n,
stu[0].name);
strcpy(stu[0].name,
stu[1].name);
strcpy(stu[0].name,s);
//而用下標的話,一個賦值語句即可,直接交換stu[0]
和
stu[1]
下標後全部交換!