可以幫我看一下哪里錯了嘛。。
//輸入10個整數,將其中最大的數與第1個數交換
#include <iostream>
using namespace std;
int main()
{
void fun(int *);
int a[10],* p,i;
p=a;
for(i=0;i<10;i++)
cin>>a[i];
fun(a);
for(i=0;i<10;i++)
cout<<a[i];
return 0;
}
void fun(int *p)
{
int i,j,t,k=0;
for(i=k;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(*(p+i)<*(p+j))
{
k=j;
break;
}
}
}
t=*p;
*p=*(p+k);
*(p+k)=t;
}
uj5u.com熱心網友回復:
你的這個有點麻煩了,如果只是單純的交換最大的和第一個的話,你可以參考一下我這個,在你的基礎上改了一下fun函式。#include<iostream>
using namespace std;
void fun(int *);
int main()
{
int a[10], i;
cout << "請輸入10個數:" << endl;
for (i = 0; i < 10; i++)
{
cin >> a[i];
}
fun(a);
cout << "交換后:" << endl;
for (i = 0; i < 10; i++)
{
cout << a[i] << " ";
}
return 0;
}
void fun(int *p)
{
int k = 0;
for (int i = 0; i < 10; i++)
{
if (p[i] > p[k])
{
k = i;
}
}
int temp = p[0];
p[0] = p[k];
p[k] = temp;
}
uj5u.com熱心網友回復:
懂了,是我想復雜了,當時想的是跟選擇排序差不多,所以用了兩個回圈。。
uj5u.com熱心網友回復:
#include<stdio.h>int main()
{
int i,ram,a[10],postion;//宣告
for(i=0;i<10;i++)//輸入
{scanf("%d",&a[i]);}
ram=a[0];
for(i=0;i<10;i++)
{if(ram<a[i])ram=a[i],postion=i;}
a[postion]=a[0];a[0]=ram;//交換
for(i=0;i<10;i++)//輸出
{printf("%d ",a[i]);}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/236277.html
標籤:C++ 語言
上一篇:十六進制陣列轉十進制
