有以下程序#include <stdio.h>main(){ int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}程序运行后的输出结果是A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,2

题目

有以下程序

#include <stdio.h>

main()

{ int m=1,n=2,*p=&m,*q=&n,*r;

r=p;p=q;q=r;

printf("%d,%d,%d,%d\n",m,n,*p,*q);

}

程序运行后的输出结果是

A)1,2,1,2

B)1,2,2,1

C)2,1,2,1

D)2,1,1,2


相似考题
更多“有以下程序#include &lt;stdio.h&gt;main(){ int m=1,n=2,*p=&amp;m,*q=&amp;n,*r;r=p;p= ”相关问题
  • 第1题:

    以下程序的输出结果是include "stdio.h"int *f(int *x,int *y){ if(*x<*y) return x; else return y;}main(){ int a=7,b=8, *p,*q,*r ; p=&a; q=&b; r= f(p,q); printf("%d,%d,%d\n",*p,*q,*r);}


    正确答案:7,8,7。
    在本题中,程序首先定义了一个函数f,其结构是int *f(int *x,int *y),这个结构说明函数f的返回类型是指针型,函数f的两个变量分别是指针变量x和y,从程序中我们很容易看出,这个函数的作用是返回形参中值较小的指针值(即地址值),返回的是指针型的结果。
    在主函数中,首先定义了两个整型变量,分别赋初值7和8,并定义了三个指针型变量,接着将指针变量p和q分别指向变量a和b,然后调用函数f,参数分别为指针变量p和q,很显然,p所指向的值小于q所指向的值,那么返回指针变量p的地址值给指针变量r,由于指针变量P的地址值是变量a存储单元的地址值,也就是说,指针变量r指向变量a,因此,最后程序的输出结果是7,8,7。

  • 第2题:

    有以下程序: #include<stdio.h> main( ) {int m=1,n=2,*p=&m,*q=&n,*r; r=P;P=q;q=r; printf("%d,%d,%d,%d\n",m,n,*P,*q); } 程序运行后的输出结果是( )。

    A.1,2,1,2

    B.1,2,2,1

    C.2,1,2,1

    D.2,1,1,2


    正确答案:B
    本题进行了交换,输出的4个值,前两个为m和n的值,*P取m的值,*q取n的值,分别为l和2;而“r=P;p=q;q=r;”语句是进行P和q的交换。所以本题输出结果为1,2,2,1。

  • 第3题:

    执行以下程序片段 { int m=1,n=2,*p=&m,*q=&n,*r; r=p;p=q;q=r; printf("%d,%d,%d,%dn",m,n,*p,*q); } 程序运行后的输出结果是

    A.1,2,1,2

    B.1,2,2,1

    C.2,1,2,1

    D.2,1,1,2


    汇编程序;编译程序

  • 第4题:

    有下列程序: #include<stdi0.h> voidf(int*P,int*q); voidmain( ) (intm=1,n=2,*r=&m; f(r,&n);printf("%d,%d",m,n); } voidf(int*P,int*q)

    {p=p+1;*q=*q+1;} 程序运行后的输出结果是( )。

    A.1,3

    B.2,3

    C.1,4

    D.1,2


    正确答案:A
    A。【解析】本题中子函数f(int*p,*q)的功能是对指针p的值加1,*q的值加1。主函数中调用子函数f(r,&n)时,子函数的执行结果是r值加1,n的值加1。而m的值并没有发生变化,最后程序输出的结果为1,3。所以正确答案为选项A。

  • 第5题:


    A.2m=n+p+q+r
    B.2m+1=n+p+q+r
    C.2m+2=n+p+q+r
    D.2m-2=n+p+q+r

    答案:C
    解析: