首页 新闻 会员 周边 捐助

函数简单问题,但作为初学者犯迷糊

0
[待解决问题]

题目是(输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。编写3函数:1.输入10个数;2.进行处理;3.输出10个数)要求用指针解决
我知道思路并不复杂,只要定义一个数组,再定义一个指针数组指向该数组的各个元素,最后将地址交换即可。
我的问题就在于怎么让指针和数组同时出现在函数的一个括号中,例如可不可以int chuli(int array【】,int n,int p【】,int n)
我试了一下,会报错
我认为的困难之处就在于输出10个数要用到指针,输入10个数不用指针,进行处理也要用到指针,那么怎么将array【】和
p【】同时放到函数的括号中去???
大神求解!!!!



光与夜的尽头的主页 光与夜的尽头 | 菜鸟二级 | 园豆:220
提问于:2016-12-30 20:30
< >
分享
所有回答(3)
0

不好意思这里面的int p【】的星星号*在显示的时候没有显示出来


光与夜的尽头 | 园豆:220 (菜鸟二级) | 2016-12-30 20:32
0

只需要1个指针就行了

我随便写了个,写得不好,将就着看

 1 #include <iostream>
 2 using namespace std;
 3 
 4 //输入
 5 void inputNums(int *pInput)
 6 {
 7     cout << "请输入10个数字" << endl;
 8     for (int i = 0; i < 10; i++)
 9     {
10         int iNum;
11         cin >> iNum; 
12         *(pInput + i) = iNum;
13     }
14 }
15 
16 //处理
17 void dealFunc(int *pInput)
18 {
19     int iMinIndex = 0;
20     int iMaxIndex = 0;
21     for (int i = 1; i < 10; i++)
22     {
23         if (*(pInput + i) > *(pInput + iMaxIndex))
24         {
25             iMaxIndex = i;
26         }
27         if (*(pInput + i) < *(pInput + iMinIndex))
28         {
29             iMinIndex = i;
30         }
31     }
32     int iTemp;
33     iTemp = *(pInput + iMinIndex);
34     *(pInput + iMinIndex) = *pInput;
35     *pInput = iTemp;
36 
37     iTemp = *(pInput + iMaxIndex);
38     *(pInput + iMaxIndex) = *(pInput + 9);
39     *(pInput + 9) = iTemp;
40 }
41 
42 //输出
43 void outputNums(int *pInput)
44 {
45     for (int i = 0; i < 10; i++)
46     {
47         cout << *(pInput + i) << "  ";
48     }
49     cout << endl;
50 }
51 
52 int main()
53 {
54     int a[10];
55     inputNums(a);
56     dealFunc(a);
57     outputNums(a);
58     system("pause");
59     return 0;
60 }

 

去冰三分糖 | 园豆:380 (菜鸟二级) | 2016-12-31 00:16

赞同这个答案 

支持(0) 反对(0) 寒魔影 | 园豆:220 (菜鸟二级) | 2017-01-12 11:30
0

method(int arr[],int *p)

可以这样写会报错吗?你把代码贴上来,说不定是传递的参数不对。

数组和指针可以互换的么,你把数组写成指针的形式试试看。

TechMoeTiger | 园豆:36 (初学一级) | 2017-01-01 23:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册