首页 > 试题广场 >

看如下代码: int arr[8] = {1,6,3,3,8

[不定项选择题]
如下代码:
int arr[8] = {1,6,3,3,8,0,7,4};
int *p = arr;
下面答案中能够正确输出全部偶数的是()

  • for(int i=0; i<8; i++)
        if(arr[i] % 2 == 0)
    printf("%d", arr[i]);
  • for(int i=0; i<8; i++)
        if(p[i] % 2 == 0)
    printf("%d", p[i]);
  • int i=0;
    while(i<8){
        if(*(p+i) % 2 == 0)
        printf("%d", *(p+i));
        i++;
    }
  • int i=0;
    while(i<8){
        if((arr+i) % 2 == 0)
        printf("%d", arr+i);
        i++;
    }
懵逼
发表于 2021-08-03 23:35:27 回复(0)
排版***醉了
发表于 2021-02-22 03:27:51 回复(1)
垃圾题目,题目都这不清楚,趁早删了吧
发表于 2019-08-14 01:39:38 回复(0)
D错误的原因是(arr+i)%2 arr里是一个地址(表示的是数组的第一个元素的地址)
arr+i是第i个元素的地址,直接拿地址%2是错误的,应该*(arr+i)%2
然后输出也是一样要解引用它的值,这2点改掉就是正确的。
正确代码如下:
int i=0;
while(i<8)
{
if(*(arr+i) % 2 == 0)
printf("%d", *arr+i);
i++;
}

发表于 2020-07-21 15:26:23 回复(3)
A和B都是什么玩意,iif又是什么东西,题目出成这样也太菜了
发表于 2020-09-24 07:32:39 回复(0)
数组名赋值到指针后,指针可以当数组名使用,即:*p+i和p[i]等价
发表于 2020-03-22 22:04:26 回复(1)
i++呢?
发表于 2020-05-15 08:19:29 回复(0)
看完题还以为我白学了,看到评论才安心
发表于 2022-04-27 11:24:04 回复(0)
为什么看不到题干啊
发表于 2021-12-02 09:47:42 回复(0)
没有i++上来就排除ab了啊
发表于 2021-09-10 11:08:17 回复(0)
AC不必多说,分别是数组和指针的通用访问方式,B的话,C语言中指针指向一个数组后,指针可看成数组,即可以通过数组下标访问数组。D错在数组名不能反过来看作指针
发表于 2020-03-05 11:48:30 回复(0)

B为什么是正确的?p是数组吗

发表于 2019-09-16 10:02:13 回复(2)
D选项中,(array+i)  表示的是数组的地址
发表于 2019-08-16 09:38:12 回复(0)
手机做题表示ab什么玩意。。。
发表于 2021-08-03 16:45:24 回复(0)
AB的i值都没有变化,一直都是0,怎么遍历数组,出题的长点心吧
发表于 2021-03-01 10:47:21 回复(2)
看都看不清,只能排除d是错的
发表于 2023-05-12 17:06:18 回复(0)
垃圾题目
发表于 2023-03-29 15:40:27 回复(0)
排版混乱
发表于 2023-03-02 09:33:34 回复(0)
答案错了
发表于 2022-11-03 10:57:09 回复(0)
没有大括号就算了,还不对齐,渍渍

发表于 2022-11-01 21:48:26 回复(0)