c++的问题,大家帮我解决下!

来源:百度知道 编辑:UC知道 时间:2024/05/23 00:03:23
是个冒泡程序:
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <stdlib.h>
#include <stdio.h>
#define N 10
void main()
{
int a[N];
int i,j,k,d;
cout<<"d%="<<N-1<<endl;
for(i=1;i<N;i++)
{
scanf("d%",&a[i]);
printf("\n");

}
for(i=1;i<=N-1;i++)
{
if(a[j]>a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
cout<<"sort number"<<endl;
for(i=1;i<N;i++)
cout<<a[i]<<endl;
}
}
}
这个不抱错,
但是将 scanf("d%",&a[i]);
printf("\n");
写成 cin>>"d%">>&a[i];
cout<<"\n";
程序报错了,
C:\vc\MyProjects\2\2.cpp(16) : error C2679: binary '>>' : no operator defined which

把cin>>"d%">>&a[i];
改成
cin>>a[i];
C++有引用这一说,和C里面的传址有异曲同工之妙。可以实现改变a[i]值的效果。
对于c函数scanf("d%",&a[i]); 第二个参数要求是地址,传址和传值相信你知道吧。
但是对于cin的>>操作来说,它的参数是对a[i]的引用,而不是地址,所以你不能加&符号来取地址,而只要变量名就可以了。
举个例子:
我要在func函数里面改变参数a的值,
c会这么定义:
void func(int * a){ a = 3;}
这么调用:int a = 1; func(&a);//这里有&来取地址
c++可以这么定义:
void func(int &a);
这么调用:int a = 1; func(a);//这里没有&
他们的结果都是一样的,a变成了3;这就是C++的引用。

报的错就是说>>操作符的右边数据所支持的类型没有int *。

你写的冒泡排序不对,我自己写一个给你,就不帮你修改你的程序了
#include <iostream>
#include <stdio.h>

using namespace std;

//整数排序
void BubbleSort(int *pData, int Count)
{
int iTemp, i, j, flag;
for(i=1; i<Count; i++)
{
flag = 1;
for(j=Count-1; j >= i; j--)
{
if(pData[j] < pData[j-1])
{
flag = 0;
iTemp = pData[j];
pData[j] = pData[j-1];