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

admin2022-10-24  34

问题 有如下程序
 #include<stdio.h>
 int change(int*data)
 {
    *data=*data%2;
    return(*dat A)+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指向的值。程序第1次调用change函数,传入实参data的地址,将data的值修改为0(12%2=0),此时输出data的值是O;再次调用change函数,传入data的地址,将data的值修改为0(0%2=0),然后将返回值1重新赋给主函数变量data,所以此时输出data的值是1。综上,程序输出“0,1,”。故本题答案为D选项。
转载请注明原文地址:https://kaotiyun.com/show/7Hkp777K
0

最新回复(0)