注册 登录
编程论坛 C++教室

交换函数,不知道这个程序错在哪里,并没有运行出想要的结果

我叫赫卡忒 发布于 2017-03-06 09:10, 1684 次点击
下面这个程序不知道错在哪里,老是运行错误
/*编写一个交换函数,可以实现对数组r中下标i和j的值进行交换*/
#include<iostream>
using namespace std;
void swap(int *i,int *j)
{
    int k;
    k = *i;
    *i = *j;
    *j = k;
}

int main()
{
    char buffer[80];
    cout<<"输入一个数组:"<<endl;
    cin.getline(buffer,80,'\n');
    int i,j;
    cout<<"输入要交换的数字位置i,j:"<<endl;
    cin>>i>>j;
    swap(buffer[i], buffer[j]);
    cout<<"输出交换位置后的数组"<<endl;
    cout<<buffer;
    return 0;
}
5 回复
#2
rjsp2017-03-06 09:27
不知道这个程序在哪里
------ 你所谓的“错”是指什么?

void swap(int *i,int *j)
{
    int k;
    k = *i;
    *i = *j;
    *j = k;
}
swap(buffer[i], buffer[j]);
应该不算错吧,没人说不能写个无用的swap放在哪儿装饰一下。
#3
我叫赫卡忒2017-03-06 09:40
我想让数组中的数交换位置输出,可是结果并没有交换,你说这个函数没用是因为我没有用上这个函数吗?应该怎么改?
#4
rjsp2017-03-06 10:13
以下是引用我叫赫卡忒在2017-3-6 09:40:30的发言:

我想让数组中的数交换位置输出,可是结果并没有交换,你说这个函数没用是因为我没有用上这个函数吗?应该怎么改?

听不懂
你说简单些,输入什么,输出什么,期待输出什么?
#5
yangwawa2017-03-06 22:40
数组是char类型的,只能存放一个字符按照你的要求程序是可以进行交换的;
如果硬要说错的话,我觉得可能指针定义上可能不太好吧,因为你的数组是字符类型的。
#6
烟雨晨曦2017-03-08 22:10
要交换值教你两种常用方法
1.直接交换(会溢出)
a = (a + b) - (b = a)

2.异或运算(安全前提是数据类型一致)
a = a^b^(b = a)
1