更多“有以下程序:void sum(inta[]){a[0]=a[-1]+a[1];}main(){ int a[10]={1,2,3,4,5,6,7,8,9,10}; sum ”相关问题
  • 第1题:

    有以下程序: void sum(int a[]) { a[0]=a[-1]+a[1]; } main() {int a[10]={1,2,3,4,5,6,7,8,9,10}; sum(&a[2]); printf("%d\n",a[2]); } 程序运行后的输出结果是 ______。

    A.6

    B.7

    C.5

    D.8


    正确答案:A
    解析:本题将主函数中a[2]的地址传递给了sum函数中的形参a[],使得sum函数中的(a+0)为主函数中a[2]的址,所以 a[-1]即*(a-1)的值为主函数中a[1]的值;a[1]即*(a+1)的值为主函数中a[3]的值,故函数sum中a[0]=2+4,由于此函数中的 a是指向主函数中的a[2],所以主函数中的a[2]的值即为6。

  • 第2题:

    有以下程序的输出结果是( ) void sum(int *a) { a[0]=a[1];} main( ) { int aa[10]={1,2,3,4,5,6,7,8,9,10},i; for(i=2;i>=0;i--) sp; sum(&aa[i]); printf(“%d\n”,aa[0]); }

    A.4

    B.3

    C.2

    D.1


    正确答案:A
    解析:在本题中,由于函数中的参数为指针,因此在main函数中的变量可能会发生改变。程序执行过程为
      i  sum(&aa[i])
      2  aa[2]=4
      1  aa[1]=4
      0  aa[0]=4

  • 第3题:

    有以下程序: void sum(int * a) {a[0]=a[1];} main() { int aa[10]={1,2,3,4,5,6,7,8,9,10},i; for(i=1;i>0;i--)sum(&aa[i]); print("%d\n",aa[0]); } 程序运行后的输出结果是 ______。

    A.4

    B.3

    C.2

    D.1


    正确答案:D
    解析:C语言觌定,实参变量对形参变量的数据传递是“值传递”,只由实参传给形参,而不能由形参传回来给实参。函数调用结束后,形参单元被释放,实参单元仍保留并维持原值。本题要求输出aa[0]的值,结果应为1。

  • 第4题:

    有以下程序: void sum(int *A) {a[0]=a[1];} main() { int aa[10]={1,2,3,4,5,6,7,8,9,10},i; for(i=1;i>0;i--)sum(&aa[i]); printf("%d\n",aa[0]); } 程序运行后的输出结果是______。

    A.4

    B.3

    C.2

    D.1


    正确答案:D
    解析:C语言规定,实参变量对形参变量的数据传递是“值传递”,只由实参传给形参,而不能由形参传回来给实参。函数调用结束后,形参单元被释放,实参单元仍保留并维持原值。本题要求输出aa[0]的值,结果应为1。

  • 第5题:

    有以下程序 void sum (int a[]) { a[0]-a[-1]+a[1]; } main ( ) { int a[10]={1,2,3,4,5,6,7,8,9,10}; sum(&a[2]); printf ("%d\n" ,a[2] ); } 程序运行后的输出结果是

    A.6

    B.7

    C.5

    D.8


    正确答案:A
    解析:本题考查的是数组和函数。sum()函数接收一个int型数组作参数,也可以把它看作是一个int型指针,语句a[0]=a[*1)+a(比的意思就是将参数指针指向内容的前一个元素和后一个元素的值相加放到指针所指的位置.因此,主函数中调用sum(&a[2]);的意思就是让a[2]=a[1]+a[3];,所以最后输出的结果是6。应该选择A。