程序不是从上到下执行的吗?为什么不先输出1然后再输出4呢?
紫雨静心 圈内达人 2016-08-04 13:49:35
2168 6 0
问题来自: 指针和数组

共 6 个回答

    嘿嘿大人 一代宗师 2844天前

    代码是什么?

    紫雨静心 圈内达人 2844天前

    回复 嘿嘿大人有以下程序
    #include <stdio.h>
    void f(int *p);
    main()
    {
      int a[5]={1,2,3,4,5},*r=a;
      f(r);printf("%d\n",*r);
    }
    void f(int *p)
    { p=p+3; printf("%d,",*p); }
    程序运行后的输出结果是 ______ 。

    最佳答案

    嘿嘿大人 一代宗师 2844天前

    回复 紫雨静心

    代码是按顺序来的,在输出一之前调用了f函数,所以应该把f(r)执行完了才执行输出1的语句

    紫雨静心 圈内达人 2843天前

    回复 嘿嘿大人:想问老师一个问题

    设有定义:

    double a,b,c;
    若要求通过输入分别给a、b、c输入1、2、3,输入形式如下(注:此处□代表一个空格)
    □□1.0□□2.0□□3.0<回车>
    则能进行正确输入的语句是

    A) scanf("%lf%lf%lf",a,b,c);

    B) scanf("%lf%lf%lf",&a,&b,&c);

    C) scanf("%f%f%f",&a,&b,&c);

    D) scanf("%5.1lf%5.1lf%5.1lf",&a,&b,&c);

    这道题为什么不能选D呢?

    紫雨静心 圈内达人 2843天前

    回复 嘿嘿大人:还想问老师一个问题

    以下选项中,能正确进行字符串赋值的是

    A) char *s = "ABCDE" ;

    B) char s[5] = { 'A', 'B', 'C', 'D', 'E' };

    C) char s[4][5] = { "ABCDE" };

    D) char *s ; gets( s );

    这题B,D错在哪


    紫雨静心 圈内达人 2843天前

    回复 嘿嘿大人

    #include <stdio.h>
    #include <stdlib.h>
    void fun(int *p1,int *p2,int *s )
    { s=( int * )malloc( sizeof(int) );
    *s = *p1 + *(p2++);
    }
    main()
    { int a[2]={1,2 }, b[2]={10,20}, *s=a; fun( a,b,s );
    printf("%d\n", *s );
    }
    程序运行后的输出结果是

    A) 11

    B) 10

    C) 1

    D) 2

    为什么答案不是11?

您还没有登录,所以不能回复该问题