首页 > 试题广场 >

给出以下程序的执行结果。 #include struct

[问答题]
给出以下程序的执行结果。
#include <stdio.h>
struct s
{
    int x, * y;
};
int date[5]={10,20,30,40,50};
struct s array[5]={100,&date[0],200,&date[1],300,&date[2],400,&date[3],500,&date[4]};
void main()
{
    int i=0;
    struct s s_var;
    s_var=array[0];
    printf("%d,",s_var.x);
    printf("%d,", * s_var.y);
    printf("%d,",array[i].x);
    printf("%d,", * array[i].y);
    printf("%d," ,++array[i].x);
    printf("%d,",++ * array[i].y);
    printf("%d,",array[ ++i].x);
    printf("%d,", * ++array[i].y);
    printf("%d,",( * array[i].y) ++);
    printf("%d,", * (array[i].y++));
    printf("%d,", * array[i].y++);
    printf("%d\n", * array[i].y);
}

推荐
在定义结构数组array之后,其存储结构如图所示:
array[0].x=100,array [0].y指向10,array [1].x=200,array[1].y指向20,array[2].x=300,array[2].y指向30,array[3].x=400,a[3].y指向40,array [4].x=500,a[4].y指向50,s_var指向array。
程序的执行过程如下:
s_var.x=array[0].x=10;
 * s_var.y= * array[0].y=date[0]=10;
array[i].x=array[0].x=100;
 * array[i].y= * array[0].y=10;
++array[i].x= ++array[0].x=101(此后 arra[0].x=101);
++ * array[i].y=++ * array[0].y= ++date[0]=11(此后 date[0]=11);
array[ ++i].x=array[1].x=200(此后i=1);
 * ++array[i].y= * ++array[1].y=date[2]=30(此后array[1].y指向date[2]);
( * array[i].y) ++= ( * array[i].y)++=date[2]=30(此后date[2]=31);
 * array[i].y++) = * (array[1].y++)=date[2]=31(此后array[1].y指向date[3]);
 * array[i].y++= * (array[1].y++)=date[3]=40(此后array[1].y指向date[4]);
 * array[i].y= * (array[1].y)=date[4]=50.
程序的输出为:100,10,100,10,101,11,200,30,30,31,40,50。
发表于 2018-05-07 20:41:49 回复(0)