c++求答案,定义一个10个元素的整型数组,完成以下操作 1、让用户从键盘逐个输入数据元素,输出数组内容

定义一个10个元素的整型数组,完成以下操作:
1、 让用户从键盘逐个输入数据元素,输出数组内容;
2、 将数组中最大数与最小数的位置对换后,输出数组内容。
3、 输出数组中的素数。
4、 将数组按降序排序,输出数组内容。

第1个回答  推荐于2017-09-15

#include <iostream>

#include <math.h>

using namespace std;


bool numIsPrime (int num) {

  int i;

  int iSqrt = sqrt(num);

  for (i = 2; i <= iSqrt; ++i) {

    if(num % i == 0)return false;

  }

  return true;

}


void sortAsDsc (int arr[]) {


    int i, k;

    int iTmp;

    for (i = 0; i < 10 - 1; ++i) {

      for (k = 0; k < 10 - 1 - i; ++k) {

        if (arr[k] < arr[k + 1]) {

          iTmp = arr[k];

          arr[k] = arr[k + 1];

          arr[k + 1] = iTmp;

        }

      }

    }

}


int main() {

  int arr[10];

  int i = 0;

  int max;

  int min;

  int iTmp;

  while(i < 10) {

    cin >> arr[i++];

  }


  max = 0;

  min = 0;

  for (i = 0; i < 10; ++i) {

    cout << arr[i] << "  ";

    if (arr[i] > arr[max])max = i;

    if (arr[i] < arr[min])min = i;

  }



  cout << endl << endl;


  iTmp = arr[max];

  arr[max] = arr[min];

  arr[min] = iTmp;

  for (i = 0; i < 10; ++i) {

    cout << arr[i] << "  ";

  }


  cout << endl << endl;


  for (i = 0; i < 10; ++i) {

    if (numIsPrime(arr[i]))cout << arr[i] << "  ";

  }



  cout << endl << endl;

  sortAsDsc(arr);


  for (i = 0; i < 10; ++i) {

    cout << arr[i] << "  ";

  }

  cout << endl << endl;

  return 0;

}

结果

本回答被提问者采纳
第2个回答  2015-06-01
  #include <iostream>

  using namespace std;

  void main(void)
  {
  int a[10];
  for(int i=0;i<10;i++)
  cin>>a[i];
  for(i=0;i<10;i++)
  cout<<a[i]<<' ';
  cout<<endl;

  int max, min, imax, imin;
  max=min=a[0];
  imax=imin=0;
  for(i=1;i<10;i++)
  if(a[i]>max) {max=a[i]; imax=i;}
  else if(a[i]<min) {min=a[i]; imin=i;}
  int t=0;
  t=a[imax];
  a[imax]=a[imin];
  a[imin]=t;
  for(i=0;i<10;i++)
  cout<<a[i]<<' ';
  cout<<endl;

  for(i=0;i<10;i++)
  {
  for(t=2;t<a[i];t++)
  if(a[i]%t==0) break;
  if(t>=a[i]&&a[i]!=0) cout<<a[i]<<' ';
  }
  cout<<endl;

  for(i=0;i<9;i++)
  for(int j=0;j<9-i;j++)
  if(a[j]<a[j+1])
  {
  t=a[j];
  a[j]=a[j+1];
  a[j+1]=t;
  }
  for(i=0;i<10;i++)
  cout<<a[i]<<' ';
  cout<<endl;
  }追问

系统显示有几处错误,而且有人已经给出正确答案了,就不好意思了

第3个回答  2015-06-01
void printExchageMaxAndMin(int array[], int arrayLen)
{
int min = 0;
int max = 0;
int i = 0;
for (i = 1; i < arrayLen; i++)
if (array[i] < array[min])
min = i;
else if (array[i] > array[max])
max = i;
for (i = 0; i < arrayLen; i++)
if (i == min)
cout<<array[max]<<" ";
else if (i == max)
cout<<array[min]<<" ";
else
cout<<array[i]<<" ";
cout<<endl;
}
void printPrime(int array[], int arrayLen)
{
for (int i = 0; i < arrayLen; i++)
{
int j = 2;
for (j = 2; j < sqrt(array[i]); j++)
if (array[i] % j == 0)
break;
if (j != sqrt(array[i]) && array[i] != 1)
continue;
cout<<array[i]<<" ";
}
cout<<endl;
}
void printSort(int array[], int arrayLen)
{
int *arrayCopy = new int[arrayLen];
memcpy(arrayCopy, array, arrayLen);
for (int i = 0; i < arrayLen; i++)
{
for (int j = i + 1; j < arrayLen; j++)
if (arrayCopy[i] < arrayCopy[j])
{
int exchange = arrayCopy[i];
arrayCopy[i] = arrayCopy[j];
arrayCopy[j] = exchange;
}
cout<<arrayCopy[i]<<" ";
}
cout<<endl;
delete []arrayCopy;
}
void main()
{
int array[10] = {0};
for(int i = 0; i < 10; i++)
cin>>array[i];
printExchageMaxAndMin(array, 10);
printPrime(array, 10);
printSort(array, 10);
}追问

看不太懂,而且前面那位已经回答了,不好意思了

追答

没关系,帮不到您,帮到了别人也可以的。

相似回答