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

c語言中的ij互換

發布時間: 2022-08-28 12:03:34

c語言定義的二維數組中行i列j可以互換嗎

如果你說的只是下標的名字,那當然可以互換。a[i][j] 表示i 行 j列,a[j][i] 表示j行i列。

② c語言中,這個語句是什麼意思啊

tp = a;a = b;b = tp是交換了ab的指向,不影響主函數,t = *a;*a = *b;*b = t是改變了地址上的值,也就是把i和j的值互換。
所以函數中*a*b的輸出對應是j=3,i=7,主函數輸出ij這個沒什麼好說的,*p和*q還是ij的值。

③ 在C語言中如何將兩個數進行互換

將兩個數進行互換的方法有兩種形式:
1、藉助中間變數完成,此方法直觀,易理解,使用最多
2、不需要中間變數,通過變數身的運算完成交換。
參考代碼:
方法1:
int a=2,b=3,t;
t=a; //先將a存儲到臨時變數t中
a=b; //將b存儲到a中
b=t; //將臨時變數中的原a值存儲到b中
printf("a=%d b=%d\n", a,b );
方法2:
int a=2,b=3,t;
a += b ; //把兩數之和存到a中
b= a-b ; //用兩數和減去b可得原a,存儲到b中
a= a-b ; //因為b現在是原a值,所以,用兩數和減去b(原a)可得 原b,存儲到a中
此方法,還可以用異或運算來實現,原理相同。

④ C語言關於二維數組行列互換的問題

這兩個坐標分別代錶行和列,所以「行列互換」實際上就是這兩個坐標互換啊。比如第2行第3列換成第3行第2列,不就是b[3][2]=a[2][3]嗎?

⑤ 在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語言題,用二維數組行列互換問題,想來想去實在想不通劃紅線的地方為什麼是j=i+1;不能是j=0嗎

不可以
所謂行列互換是以主對角線為對稱軸元素互換的.
內存循環鑰匙改為從0開始,就把之前按主對角線互換的數據又再次互換了一次,就是又返回原位了

⑦ 求助c語言編寫一個位元組位互換

支持任意兩位互換.

運行結果:
00000110 /* 輸入數字, 23位是1 45位是0 */
00001010 /* 34互換後 */
00011000 /* 25也互換後 */

代碼:

#include <stdio.h>
unsigned char mask(int n)
{
return 1 << (n-1);
}
void setbit(unsigned char *in, unsigned char n, unsigned char value)
{
if(value) (*in) |= mask(n);
else (*in) &= (~mask(n));
}
unsigned char getbit(unsigned char in, unsigned char n)
{
unsigned char value = in & mask(n);
if(value) return 1;
else return 0;
}
void swap(unsigned char *in, int m, int n)
{
unsigned char valuem = getbit(*in, m);
unsigned char valuen = getbit(*in, n);
setbit(in, n, valuem);
setbit(in, m, valuen);
}

void showbin(unsigned char x)
{
int i;
for(i=8;i>=1;i--){
printf("%d", getbit(x, i));
}
printf("\n");
}
int main()
{
/* 3位是1,, 2位是1, 4位是0, 5位是0. */
unsigned char a = mask(3) | mask(2);

showbin(a);

/* 34互換 */
swap(&a, 3, 4);
showbin(a);

/* 25互換 */
swap(&a, 2, 5);
showbin(a);

return 0;
}

⑧ 二級C語言程序解答

你應該是沒有搞清傳址的實際的實現方式。
一個一個看吧:
先看上面的這個:
void swap(int *a,int *b)
{
int t;
t=*a; *a=*b; *b=t;
}
首先你得清楚,*a和*b是函數swap聲明的兩個指針變數。
在main函數中調用swap(p,q)時,
由於在main函數中,已經將指針p指向i的地址(&i),q指向j的地址(&j),
所以swap(p,q)調用,
也就是
將p指向的地址賦給函數swap的指針a,
將q指向的地址賦給函數swap的指針b,
又由於指針p指向i的地址(&i),q指向j的地址(&j),
所以此時指針a指向i的地址(&i),b指向j的地址(&j)。
而對於*a,*b的賦值操作也就是對於指針a,b所指向的地址中的數據的賦值操作,
也就是對於i,j的賦值操作。
所以t=*a; *a=*b; *b=t; 實現了對於main函數中的i,j的值的交換,也就是指針p,q所指向的地址中的數據的交換

再看這個:
void swap(int *a,int *b)
{ int *t;
t=a; a=b; b=t;
}
在這里再強調一遍,首先你得清楚,*a和*b是函數swap聲明的兩個指針變數。
所以,在這里,
沒有對於*a,*b進行操作,而是對a,b進行操作,
它和上面的代碼的區別就在於,
對於*a,*b進行操作,是操作的a,b所指向的地址中的數據。
對於a,b的操作,是操作的a,b這兩個指針本身所指向的地址的不同,
t=a; a=b; b=t; 這個處理只是將函數swap聲明的兩個指針變數a,b所指向的地址給換了一下,
也就是由:指針a指向i的地址(&i),b指向j的地址(&j)。
變成了:指針b指向i的地址(&i),a指向j的地址(&j)。
但是&i,&j中的內容並沒有任何變化。
所以輸出結果仍然是3 5

⑨ c語言數組行列互換問題

#include<stdio.h>
void main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("array a:\n");
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("array b:\n");//括弧內你缺少右邊的引號
for(i=0;i<=2;i++)//注意i的取值
{
for(j=0;j<=1;j++)//注意j的取值,i,j的值你剛好弄反了
{
printf("%d",b[i][j]);
}
printf("\n");//你缺少這行代碼,不能有效的顯示
}
}
我已經調試過了,能正確運行,如果不行的話,提出你具體的問題!