定义一个一维整型数组。定义两个函 void input_array(int *p, int n); void print_array(int *p, int n);

如题所述

这里面有好几个问题。

(1)函数中既然传递了数组长度,就应该用这个变量,不要用常量

(2)数据输入和输出的写法有误。

修改之后的代码为:

#include<stdio.h>
void input_array(int *p, int n)
{
    int i;
    for (i = 0; i < n; i++)
        scanf("%d", &p[i]);
}
void print_array(int *p, int n)
{
    int i;
    for (i = 0; i < n; i++)
        printf("%d ", p[i]);
}
int main()
{
    int p[4];
    input_array(p, 4);
    print_array(p, 4);
    return 0;
}

结果为:

追问

太赞了 谢谢你!!!!!!!!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-28
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int a[4][5]={0};
void change_values(int *p, int n);
void print_array(int (*p)[5],int m);
printf("修改前,二维数组各行各列元素:\n");
print_array(a, 4);
change_values((int *)a, 20);
//调用change_values函数修改数组元素的值
printf("修改后,二维数组各行各列元素:\n");
print_array(a, 4);
return 0;
}
//函数change_values功能:产生1-100之间的随机整数修改数组各元素的值
//形参:p是数组的首地址,n是数组元素个数
void change_values(int *p, int n)
{
srand(time(0));
//代码段1 
for(int nIndex = 0; nIndex < n; nIndex++)
p[nIndex] = rand() % 100;
}
//函数print_array功能:输出二维数组各行各列元素的值
//形参:p是数组的首行地址,m是数组的行数(列数为5,不必重复)
void print_array(int (*p)[5],int m)
{
int i,j;
//代码段2 
for(i = 0; i < m; i++)
{
for(j = 0; j < 5; j++)
printf("%d ", p[i][j]);
printf("\n");
}
printf("\n");
}

追问

不好意思看不太懂 你能告诉我 我写的哪里错了吗

第2个回答  2015-05-28
#include <stdio.h>
void input_array(int *p,int n)
{
int i;
for(i=0;i<n;i++) //数组的大小由n决定,为了保证函数的通用性,不应该用4
scanf("%d",p+i);
}
void print_array(int *p,int n)
{
int i;
for(i=0;i<n;i++) //原因同上,另外,指针p没有必要再增加了
printf("%d ",*(p+i));
}

int main()
{
int p[4];
input_array(p,4);
print_array(p,4);
}
相似回答