有如下程序  #include <stdio.h>  int change(int*data)  {   *data=*data%2;   return(*datA)+1;  }  main()  {   int data=12;   ch

admin2022-04-01  17

问题 有如下程序
 #include <stdio.h>
 int change(int*data)
 {
    *data=*data%2;
    return(*datA)+1;
 }
 main()
 {
    int data=12;
    change(&data);
    printf("%d,",data);
    data=change(&data);
    printf("%d,",data);
 }
 程序运行后的输出结果是(          )。

选项 A、0,0,
B、1,2,
C、12,13,
D、0,1,

答案D

解析 change()函数接收一个整型指针data,然后将data指向的数对2求余,求余后的值重新赋给data指向的变量,然后将data.指向的变量值加1后返回。注意,此处data指向的数值对2求余会改变实参指针指向的值,但返回值并不影响data指向的值。程序第一次调用change()函数,传入实参data的地址,将data的值修改为0(12%2=0),此时输出data的值是0;再次调用change()传入data的地址,将data的值修改为0(0%2=0),然后将返回值1重新赋给主函数变量data,所以此时输出data的值是1。综上,程序输出0,1,本题答案为D。
转载请注明原文地址:https://kaotiyun.com/show/wBkp777K
0

最新回复(0)