首页 > 试题广场 >

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

[问答题]

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

#include<stdio.h>
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阶矩阵的转置矩阵。其中,mn的值由用户从键盘输入。已知mn的值都不超过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、,按如下函数原型编程从键盘输入一个mn列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值。其中,mn的值由用户键盘输入。已知mn的值都不超过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个学生)的某门课的成绩,计算最高分,并指出具有该最高分成绩的学生是第几个班的第几个学生。其中,mn的值由用户从键盘任意输入(不限定mn的上限值)。

推荐
1、(1)
void Swap(int *x,int *y)
{
int *pTemp;//*pTemp 未进行初始化,*pTemp 指向哪里位置
*pTemp=*x;
*x=*y;
*y=*pTemp;
}
(2)
{
void Swap(int *x,int *y)
int *pTemp;
pTemp=x;
x=y;
y=pTemp;
}
//错误,x,y 没有指向类型
2、
#include<stdio.h>
int main()
{
int a[]={1,2,3,4,5};
int *p=a;
printf("%d,%d,%d,%d,%d,%d,%d\n",*p,*(++p),(*p)++,*p,*p--,--(*p),*p);
return 0;
}
3、
#include<stdio.h>
void Swap(int *x,int *y);
int main()
{
int a[6]={1,2,3,4,5,6},b[6]={11,22,33,44,55,66};
int i;
printf("Before Array \n");
for(i=0;i<6;i++)
{
printf(" %d\n",a[i]);
}
for(i=0;i<6;i++)
{
printf("%d\n",b[i]);
}
for(i=0;i<6;i++)
{
Swap(&a[i],&b[i]);
}
printf("After Array \n");
for(i=0;i<6;i++)
{
printf("%d\n",a[i]);
}
for(i=0;i<6;i++)
{
printf("%d\n",b[i]);
}
return 0;
}
void Swap(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}

4、
5、
6、
7、
发表于 2018-03-18 22:11:01 回复(1)