C语言指针数组刷题

今天刷题碰到一个指针数组的题,解不出来,求大佬指点..
题:

将十个整数输入数组,求出其平均值并输出。

main( )

{int i,a[10],sum=0,p=______; /第一空*/

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

{ scanf(″%d″,p);sum+=______; /第二空/

printf(″%8.2fn″,______); /第三空/

}

求大佬指点,C语言的指针我学的云里雾里...

阅读 3.1k
3 个回答
  1. 第一空:int指针指向数组,可以是*p=a,也可以是*p=&a[0],可能第二种方式更好理解,指针指向数组的第一个元素的地址,但是前面的方式更常见,它和函数指针的写法类似;
  2. 第二空:sum+=*p++,这里p采用后缀自增,*p++的意义是先复制p,解引用p(也就是拿到*p),然后再移动指针p
  3. 第三空:sum/10.0,这里sumint型,打印的是float型,所以要除以10.0,然后int型会转换为float计算;

代码如下:

#include <stdio.h>

int
main(int argc, char *argv[])
{
    int i,a[10], sum=0, *p=a;
    for(i=0; i<10; i++){
        scanf("%d", p);
        sum += *p++;
    }
    printf("%8.2f\n", sum/10.0);
    return 0;
}

运行结果如下:

root@lui-pc:~/CLionProjects/test01/cmake-build-debug# ./test01 
1
2
3
4
5
6
7
8
9
10
    5.50
root@lui-pc:~/CLionProjects/test01/cmake-build-debug# 

main( )

{int i,a[10],sum=0,p=a; /第一空*/

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

{ scanf(″%d″,p);sum+=*p++; /第二空/

}
printf(″%8.2fn″,sum/10.0); /第三空/

#include <iostream>

int main() {

    int i, a[10], sum = 0, p = a[0];
    for (int i = 0; i < 10; i++) {
        scanf("%d", &p);
        sum += p;

    }
    printf("%8.2fn", sum / 10.0);
    return 0;
}

我给的内容是按照你给的例子写的,p给的就是指定数组中的任何一个单元格,当用户输入的时候放入到到指定的数组下标的地址上即可,每次都会覆盖内容,直接累加然后求平均数,输出结果是这样的:

1
2
3
4
5
6
7
8
9
10
    5.50
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题