C中数组数据互换

博客给出二维数组元素互换的思路,分析了哪些数据进行互换,如a[0][1]与a[1][0]等。得出当i=0时j取值,i=1时j取值,条件为i<3、j<3,最终确定用双重循环for(i=0;i<3;i++)和for(j=i+1;j<3;j++)实现元素互换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

void fun (int array[3][3])
{
 int i,j,t;
 for(i=0;i<1;i++)
	 for(j=i+1;j<3;j++)   //此处不能是j=0;否则数据等于没排列
	 {
	  t=array[i][j];
	  array[i][j]=array[j][i];
	  array[j][i]=t;
	 }
}
void main()
{
  FILE *wf;
  int i,j;
  int array [3][3]={{100,200,300},{400,500,600},{700,800,900}};
  system("CLS");
  for (i=0;i<3;i++)
     {for (j=0;j<3;j++)
          printf("%7d ",array[i][j]);
      printf("\n ");
     }
  fun(array);
  printf("Converted array:\n ");
  for (i=0;i<3;i++)
     { for (j=0;j<3;j++)
          printf("%7d ",array[i][j]);
       printf("\n ");
     } 
  system("pause");

思路:1.分析有哪些数据进行了互换:

           a[0][1]=a[1][0];    a[0][2]=a[2][0];   a[1][2]=a[2][1];

分析得出:当i=0时,j=1,j=2    当i=1时,j=2;

条件:i<3,j<3;

最后得出循环   for(i=0;i<3;i++)      for(j=i+1;j<3;j++)  然后再将a[i][j]和a[j][i]进行互换即可。

 

### C语言中交换结构体数组成员 在C语言中,可以通过定义临时变量来保存其中一个结构体的内容,从而实现两个结构体之间的成员交换。对于结构体数组而言,这一过程同样适用。 下面是一个具体的例子,假设有一个学生信息的结构体: ```c #include <stdio.h> #include <string.h> #define MAX_NAME_LENGTH 50 #define STUDENT_COUNT 3 // 定义一个学生信息结构体 typedef struct { char name[MAX_NAME_LENGTH]; int age; } Student; void swapStudents(Student *a, Student *b) { // 创建一个临时结构体用于存储中间值 Student temp = *a; *a = *b; // 将 b 的内容赋给 a *b = temp; // 将原 a 的内容(现存在temp里)赋给 b } int main() { // 初始化三个学生的记录 Student students[STUDENT_COUNT] = {{"Alice", 20}, {"Bob", 21}, {"Charlie", 22}}; printf("Before swapping:\n"); for (int i = 0; i < STUDENT_COUNT; ++i){ printf("%s is %d years old.\n", students[i].name, students[i].age); } // 调用函数交换第一个和最后一个元素的位置 swapStudents(&students[0], &students[STUDENT_COUNT-1]); printf("\nAfter swapping the first and last elements:\n"); for (int i = 0; i < STUDENT_COUNT; ++i){ printf("%s is %d years old.\n", students[i].name, students[i].age); } } ``` 上述程序展示了如何创建并初始化一个`Student`类型的结构体数组,并通过指针传递的方式调用了`swapStudents()`函数完成首尾两项数据位置互换的操作[^1]。 此方法不仅适用于简单的内置类型,也适合复杂的自定义类型如本例中的结构体。当涉及到更大规模的数据集时,这种方法依然有效且易于理解[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值