Обмен в C - Печать - PullRequest
0 голосов
/ 02 марта 2019

Я только что реализовал свою функцию подкачки, но она ничего не печатает.Знаете ли вы, почему строка printf не выполняется?

#include <stdio.h>
int swap(int x, int y) {
    scanf("%d", &x);
    printf("%d, x is",x);
    scanf("%d", &y);

    int temp = x;
    x = y;
    y = temp;
    printf("After Swapping: x = %d, y = %d", x, y);
    return 0;
}
int main() {
    swap(6,5);
}

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Вы не должны принимать пользовательский ввод внутри функции swap.Его цель должна состоять в том, чтобы поменять местами только два целых числа.Вы можете переместить операторы scanf в функцию main.

#include <stdio.h>

int swap(int x, int y){
    int temp = x;
    x = y;
    y = temp;
    printf("After Swapping in swap function: x = %d, y = %d", x, y);
    return 0;
}

int main(void){
    int x, y;
    scanf("%d", &x);
    printf("%d, x is", x);
    scanf("%d", &y);
    printf("%d, y is", y);
    swap(x, y);
    printf("After Swapping in main function: x = %d, y = %d", x, y);
}

Но приведенный выше код имеет серьезную проблему.Хотя функция swap печатает целые числа, переданные при их замене, но факт x и y в main остается неизменным.

В этом случае, чтобы заставить его работать, было бы полезно использовать указатели

void swap(int *ptrx, int *ptry){
    int temp = *ptrx;
    *ptrx = *ptry;
    *ptry = temp;
}

В функции main вызовите swap как swap(&x, &y);

0 голосов
/ 02 марта 2019

Используйте этот код для обмена.

#include <stdio.h>
void swap(int x, int y)
{
    int z;
    z = x;
    x = y;
    y = z;
    printf("After Swapping: x = %d, y = %d", x, y);        
}
int main()
{
    swap(6,5);
    return 0;
}

И я не понимаю, зачем вам нужно сканировать x & y

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...