c语言void swap1,【例1】从键盘任意输入两个整数,编程实现将其交换后再重新输出...

这篇博客讨论了C语言中交换两个整数的常见问题,通过分析给出的示例程序,解释了为什么直接交换可能导致错误,并提出了使用指针交换的正确方法。接着,它探讨了如何利用这个交换功能来实现数组中元素的交换,以及计算和输出数组中的最大值和最小值。此外,博客还介绍了不同函数原型下计算n×n阶矩阵转置的方法,并扩展到处理m×n阶矩阵的转置。最后,提到了一个输入二维数组并寻找最大值及其位置的算法。

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

【例1】从键盘任意输入两个整数,编程实现将其交换后再重新输出。试分析下面的程序能实现这一功能吗?如果不能,该如何修改程序呢? #include

void Swap (intx,int y);

int main ()

int a,b;

printf ("Please enter a,b:");

scanf ("%d,%d",&a,&b);

printf("Before swap: a=%d,b=%d\n",a,b); /*打印交换前的a,b*/

Swap (a,b); /*按值调用函数Swap()*/

printf("After swap:a=%d,b=%d\n",a,b); /*验证a,b是否交换*/

return 0;

void Swap (int x,int y)

int temp;

temp =x; /*执行图7-5(b)中的步骤①*/

x=y; /*执行图7-5(b)中的步骤②*/

y = temp; /*执行图7-5(b)中的步骤③*/

}

程序的运行结果如下:

Please enter a,b:15,8⤹

Before swap: a =15,b=8

After swap:a=15,b=8

1、请结合例9.6程序分析下面两个程序能否实现两数交换功能?并说明为什么?

(1)

void Swap(int *x,int *y)

int *pTemp;

*pTemp=*x;

*x=*y;

*y=*pTemp

(2)

void Swap(int*x,int*y)

{

int*pTemp;

pTemp=x;

x = y;

y=pTemp;

} 2、利用例1程序中的函数Swap(),用函数编程实现两个数组中对应元素值的交换。

3、利用例1程序中的函数Swap(),从键盘输入10个整数,用函数编程实现计算其最大值和最小值,并互换它们所在数组中的位置。

4、利用例1程序中的函数Swap(),分别按如下函数原型编程计算并输出n×n阶矩阵的转置矩阵。其中,n由用户从键盘输入。已知n值不超过10。

void Transpose (int a[][N],int n);

void Transpose (int(*a)[N],int n);

void Transpose (int *a,int n);

5、在4、的基础上,分别按如下函数原型编程计算并输出m×n阶矩阵的转置矩阵。其中,m和n的值由用户从键盘输入。已知m和n的值都不超过10。

void Transpose (int a[][N],int at[][M],int m,int n);

void Transpose (int(*a)[N],int(*at)[M],int m,int n);

void Transpose (int *a,int *at,int m,int n);

6、参考5、,按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值。其中,m和n的值由用户键盘输入。已知m和n的值都不超过10。

void InputArray (int *p,int m,int n);

int FindMax (int *p,int m,int n,int *pRow,int *pCol);

7、(选做)参考习题6、,用动态数组编程输入任意m个班学生(每班n个学生)的某门课的成绩,计算最高分,并指出具有该最高分成绩的学生是第几个班的第几个学生。其中,m和n的值由用户从键盘任意输入(不限定m和n的上限值)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值