有如下程序  #include <stdio.h>  void fun(int *a,int *b)  {for(;(*a <*B)||(getchar()!=’@’);)   {(*a)++;(*b)--;}  }  main()  {int i=0,

admin2022-04-01  30

问题 有如下程序
 #include <stdio.h>
 void fun(int *a,int *b)
 {for(;(*a <*B)||(getchar()!=’@’);)
   {(*a)++;(*b)--;}
 }
 main()
 {int i=0,j=5;
   fun(&i,&j);
   printf("%d,%d\n",i,j);
 }
 程序运行时在第一列开始输入:
 ab@ <回车>
 则运行结果是(          )。

选项 A、7,1
B、3,2
C、0,5
D、5,0

答案D

解析 fun()函数接收两个整型指针变量a、b、for循环判断a、b指向的值大小和getchar()读入的字符是否‘@’,来决定循环是否执行、循环体内对a、b指m的值各自自增1、自减1;main()函数定义并初始化实参i的值为0,实参j的值为5,调用函数fun(),传入i、j的地址.所以形参a指向i,形参b指向j,*a的值为0,*b的值为5,*a <*b为真,执行循环体;*a的值为1,*b的值为4,*a <*b为真,执行循环体;*a的值为2,*b的值为3,*a <*b为真,执行循环体;*a的值为3,*b的值为2,*a <*b为假;getchar()读入字符‘a’,执行循环体;*a的值为4,*b的值为l,*a <*b为假,getchar()读入字符‘b’,执行循环体;*a的值为5,*b的值为0,*a <*b为假,getchar()读入字符‘@’,fun()函数执行完毕,main()函数输m5,0,本题答案为D。
转载请注明原文地址:https://kaotiyun.com/show/b6kp777K
0

最新回复(0)