参考答案和解析
正确答案:

 

结果为地址

更多“第一题:写出下述程序结果:int m[][3] = {1,4,7,2,5,8,3,6,9};int i, j, k = 2;for (i = 0; i &lt ”相关问题
  • 第1题:

    有如下程序段#include "stdio.h"void fun(int *a,int *b,int *c,int *d,int *e){ int i,j,k,m; for(i=0;i< *a;i++) for(j=0;j< *b;j++)  for(k=0;k<*c;k++)  for(m=0;m< *d;m++)  ++*e;}main(){ int a=10,b=10,c=10,d=10,e=0; fun(&a,&b,&c,&d,&e); printf("%d\n",e);} 则程序段的输出结果是A.10000 B.1000 C.100 D.0


    正确答案:A
    在本题中,程序首先定义了一个无返回值的函数fun,该函数带有五个整型的指针形参变量,然后通过一个四层循环来操作++*e;语句,由于*与++运算符的优先级一样,它们都是自右至左结合的操作,因此,++*e等价于++(*e),这个操作可描述为:先用地址取值,然后对其进行自加,由于是通过传址传值法的,因此,还需要将相加后的结果传递到实参中。
    在主函数中,定义五个整型变量并分别赋初值,然后调用fun函数,传递的参数是刚定义的五个整型变量的地址,采用的是传址传值法,能为实参带回一个结果值。从fun函数中我们不难看出,当变量a,b,c,d分别为10时,循环总共执行10000次,即自加进行了10000次,而且每次自加后都改变了实参的结果。因此,循环结束后,变量e的值为10000。本题的正确答案是A。

  • 第2题:

    2、c程序如下,写出输出结果 #include<stdio.h> int main() { int m[][3] = { 1,4,7,2,5,8,3,6,9 }; int i, j, k = 0; for (i = 0; i<5; i++) { printf("%d", m[k][i]+2); } return 0; }

    A.14725

    B.25836

    C.36947

    D.47958


    20 0 20 0

  • 第3题:

    3、c程序如下,写出输出结果 #include<stdio.h> int main() { int m[][3] = { 1,4,7,2,5,8,3,6,9 }; int i, j, k = 0; for (i = 0; i<6; i++) { printf("%d", m[k][i]/2+3); } return 0; }

    A.259435

    B.356556

    C.356557

    D.356457


    2*3=6

  • 第4题:

    4、c程序如下,写出输出结果 #include<stdio.h> int main() { int m[][3]={1,4,7,2,5,8,3,6,9}; int i,j,k=2; for(i=0;i<3;i++) { printf("%d ",m[k][i]);} }

    A.1 4 7

    B.2 5 8

    C.3 6 9

    D.7 8 9


    A a=3,b=4,sub(a++,b++)就是3*4=12,然后a=4,b=5;

  • 第5题:

    1、c程序如下,写出输出结果 #include<stdio.h> int main() { int m[][3] = { 1,4,7,2,5,8,3,6,9 }; int i, j, k = 1; for (i = 0; i<4; i++) { printf("%d", m[k][i]); } return 0; }

    A.2583

    B.4725

    C.8369

    D.5836


    emoclew emoclew

  • 第6题:

    有以下程序段 int m[][3]={1,4,7,2,5,8,3,6,9},i,j,k=2; for(i=0;i<3;i++) cout<<m[k][i]); 执行后输出结果是()。

    A.4 5 6

    B.2 5 8

    C.3 6 9

    D.7 8 9


    B