Источник: Nuances of Programming
Что такое перестановка двух чисел?
Перестановкой двух чисел называют обмен значениями двух переменных. Например, переменная num1 содержит значение 20, а num2 содержит значение 40. После перестановки значения переменных num1 и num2 будут равны 40 и 20 соответственно.
Алгоритм
Разберем пошагово, как прийти к решению:
СТАРТ Var1, Var2, Temp.
Шаг 1 → значение Var1 копируется в Temp.
Шаг 2 → значение Var2 копируется в Var1.
Шаг 3 → значение Temp копируется в Var2.
СТОП.
Блок-схема
Объяснение программы
- Сначала обычно передаются #include<stdio.h> и #include<conio.h>
#include<stdio.h> #include<conio.h>
2. Затем задействуется функция swap для выполнения операции обмена и объявляются x и y:
void swap(int x,int y);
3. Дальше идет функция main, внутри которой объявляется переменная как a,b.
→ Для удобства пользователя выводится описание program to perform swapping of two numbers using user define function («программа для выполнения перестановки двух чисел с помощью функции, определяемой пользователем») , а в следующей строке — Enter numbers one by one («вводите числа по одному»).
→ После чего внутри scanfобычно передается%d для типа данных int.
→ Снова выводится описание Before swapping, the values are («до перестановки значения такие»).
→ Затем вызывается функция swap(a,b).
Вызов по значению
> В методе вызова по значению значение переменной передается в параметр функции.
> Значение фактического параметра не может быть изменено формальным параметром.
> Для фактических и формальных параметров выделяется различная память, потому что значение фактического параметра копируется в формальный.
→ Затем объявляется третья переменная t.
→ В ней присваивается значение x.
→ Дальше x освобождается.
→ После чего в x присваивается значение y.
→ y освобождается.
→ Затем в y присваивается значение t.
→ И в конце происходит обмен значений.
void main()
{
int a,b;
printf("\nc program to perform swapping of two numbers using UDF\n");
printf("Enter numbers one by one\n");
scanf("%d%d",&a,&b);
printf("\nBefore swapping,the values are %d %d",a,b);
swap(a,b);
printf("\n\nAfter swapping in main function,the values are %d %d",a,b);
getch();
}
void swap(int x,int y)
{
int t;
t=x;
x=y;
y=t;
printf("\nAfter swapping,the values are %d %d",x,y);
}
Программа или исходный код
#include<stdio.h> #include<conio.h> void swap(int x,int y);
void main() {
int a,b;
printf("\nc program to perform swapping of two numbers using UDF\n");
printf("Enter numbers one by one\n");
scanf("%d%d",&a,&b);
printf("\nBefore swapping,the values are %d %d",a,b);
swap(a,b);
printf("\n\nAfter swapping in main function,the values are %d %d",a,b);
getch();
}
void swap(int x,int y) {
int t;
t=x;
x=y;
y=t;
printf("\nAfter swapping,the values are %d %d",x,y);
}
На выходе получаем:
Читайте также:
Перевод статьи VIGNESWARAN.S: Swapping of two numbers in C