标题:关于指针和数组的问题。
只看楼主
fengyinxqy
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2020-5-2
结帖率:92.31%
已结贴  问题点数:10 回复次数:9 
关于指针和数组的问题。
编写函数 void multiply Array(int *a,int m),其功能是将int型数组中的每个元素都乘以m,结果仍然保存在原数组中要求在主函数中初始化原始数组,调用
 multiply Array()函数后,在主函数中输出处理后的结果。
编写程序,实现如下函数调用。函数 getdata 的功能是从键盘输入数据,函数reverse的功能是将数据逆序存放,函数showdata的功能是输出数据。3个函数的定义形式及主函数的调用形式如下:
void getdata (int *a, int num);
 void reverse(int *a, int num);
 void showdata(int *a,int num);
 void main ()
{
 int a[10];
 getdata(a,10);
 reverse(a,10);
 showdata(a,10);
}
搜索更多相关主题的帖子: int 数组 void 调用 函数 
2020-05-04 14:22
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:7 
编写函数 void multiply Array(int *a,int m),其功能是将int型数组中的每个元素都乘以m,结果仍然保存在原数组中要求在主函数中初始化原始数组,调用
 multiply Array()函数后,在主函数中输出处理后的结果。

multiply Array无法作为一个函数名
是语法错误
参数表也有问题 没有传入数组个数 无法确定数组大小
出题人乱写的 无法做

https://zh.
2020-05-04 14:25
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
第二题 输入/逆序/输出
你哪个步骤不清楚可以贴代码提问

https://zh.
2020-05-04 14:26
fengyinxqy
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2020-5-2
得分:0 
回复 2楼 lin5161678

程序代码:
#include <stdio.h>
void fun(int *p, int m)
{
    int a[5]={1,2,3,4,5};
    *p=&a[5];
    a[5]=a[5]*m;
}
int main()
{ 
    int a[5]={1,2,3,4,5},m, i;
    int *p=&a[5];
    scanf("%d",&m);
    fun(*p,m);
    printf("The result:\n");
    for (i = 0; i <5; i++)
    {
        printf("%4d",a[5]);
    }
    return 0;
}

2020-05-04 15:35
fengyinxqy
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2020-5-2
得分:0 
回复 3楼 lin5161678
对于这个,我看了书,也查了百度,还是搞不懂当指针作为参数的时候,和一维数组要怎么使用。求指教!
2020-05-04 15:50
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
回复 4楼 fengyinxqy
函数名中间没空格那么这个函数名没什么问题
不过 参数表的问题还是存在
没有传入数组大小 这个函数接口是残废的
出题人胡乱编排了

[此贴子已经被作者于2020-5-4 16:06编辑过]


https://zh.
2020-05-04 16:05
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
以下是引用fengyinxqy在2020-5-4 15:50:39的发言:

对于这个,我看了书,也查了百度,还是搞不懂当指针作为参数的时候,和一维数组要怎么使用。求指教!

https://www.baidu.com/s?wd=%E6%8C%87%E9%92%88%E4%BD%9C%E4%B8%BA%E5%8F%82%E6%95%B0%E7%9A%84%E6%97%B6%E5%80%99%EF%BC%8C%E5%92%8C%E4%B8%80%E7%BB%B4%E6%95%B0%E7%BB%84%E8%A6%81%E6%80%8E%E4%B9%88%E4%BD%BF%E7%94%A8&ie=UTF-8

https://zh.
2020-05-04 16:06
fengyinxqy
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2020-5-2
得分:0 
对于上面两个题目,经过一天的学习和写下来,已经得到解决,在此谢谢lin5161678大哥的帮助。
下面是代码:
程序代码:
#include <stdio.h>
#define SIZE 10
int main(void)
{
    int array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // 初始化数组

    multiplyArray(array, 2); // 调用函数 把数组中的每个元素都乘以2

    for (int i = 0; i < SIZE; i++) // 打印数组中的内容
        printf("%d\t", array[i]);

    return 0;
}
void multiplyArray(int *a, int m)
{
    for (int i = 0; i < SIZE; i++)
        a[i] *= m; // 这里用的是数组形式 也可以写作指针形式
}                   // *(a + i) *= m;


程序代码:
#include <stdio.h>
void getdata(int *a, int num);  //声明输入函数
void reverse(int *a, int num);  //声明逆序函数
void showdata(int *a, int num); //声明输出函数
void main()
{
    int a[10];                  //数组初始化
    getdata(a, 10);             //函数调用
    reverse(a, 10);             //函数调用
    showdata(a, 10);            //函数调用
    return 0;
}
void getdata(int *a, int num)
{
    for (int i = 0; i < 10; i++)        //输入10个数字
        scanf("%d", &a[i]);
}
void reverse(int *a, int num)
{
    int b[10]; //i表示元素个数
    for (int i = num - 1, j = 0; i >= 0; i--, j++)      //倒序输出数组
        b[i] = a[j];
    for (int i = 0; i < 10; i++)
    {
        a[i] = b[i];
    }
}
void showdata(int *a, int num)
{
    for (int i = 0; i < 10; i++)                //输出倒序后的数组
    {
        printf("%2d", a[i]);
    }
}
2020-05-05 15:20
大佬救命
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-5-29
得分:0 
(这个怎么弄,弄了几个小时都弄不出来,哪位大佬能指教一下吗谢谢)
编写函数void fun(int a[][],int n ,int m,int *odd,int *even),其功能是计算二维数组元素中的所有奇数之和,与所有偶数之和,利用指针odd返回奇数之和,利用指针,even,回偶数之和,编写程序,在主函数中,初始化二维数组a[5][6],调用函数fun,后输出数组a及计算结果。



2020-05-29 00:18
吕孟伟
Rank: 8Rank: 8
等 级:贵宾
威 望:27
帖 子:200
专家分:870
注 册:2018-10-4
得分:0 
回复 9楼 大佬救命
好久没做二维数组的题了,似乎题中的fun函数参数int a[][]是不合法,我不敢保证。等待下其他人的解答。
程序代码:
#include <stdio.h>

void fun(int a[][6], int n, int* odd, int* even)
{
    for(int i = 0; i < n; ++i){
        for(int j = 0; j < 6; ++j){
            if(a[i][j]%2){
                *odd += a[i][j];
                
            }else{
                *even += a[i][j];
            }
        }
    }
}

int main(void)
{
    int a[5][6] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
    14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29};
    int odd = 0;
    int even = 0;
    fun(a, 5, &odd, &even);
    for(int i = 0; i < 5; ++i){
        for(int j = 0; j < 6; ++j){
            printf("%d ", a[i][j]);
        }
        putchar('\n');
    }
    printf("The odd is %d, the even is %d\n",odd, even);
    return 0;
}

借用一下侯捷的话:勿在浮沙筑高台。
2020-05-29 08:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501419-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.080244 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved