一些c语言题

来源:百度知道 编辑:UC知道 时间:2024/06/02 21:39:51
麻烦好好讲解一下
1
已知int x=10,y=20,z=30;以下语句执行后x,y,z值为?
if(x>y) z=x;x=y;y=z;
2
以下程序运行结果是?
main()
{int w=5;
fun(w);
printf("\n")
}
fun(int k)
{if(k>0) fun(k-1);
printf("%d",k);
}
3以下程序运行结果是?
main()
{union {char c[2];
int i;
int k;
}r;
r.c[0]=67; r.c[1]=0;
r.i=65; r.k=66;
printf("%c %d %d \n",r.c[0],r.i,r.k);
}
拜托大哥们稍讲解一下

1. x=20,y=30,z=30;
2. 0 1 2 3 4 5
3. B 66 66

1
已知int x=10,y=20,z=30;以下语句执行后x,y,z值为?
if(x>y) z=x;x=y;y=z;
相当于
if(x>y)
{z=x;}
x=y;
y=z;

所以x=20,y=30,z=30;

2
以下程序运行结果是?
main()
{int w=5;
fun(w);
printf("\n")
}
fun(int k)
{if(k>0) fun(k-1);
printf("%d",k);
}
执行顺序
fun(5)-->调用fun(4)-->调用fun(3)-->调用fun(2)-->调用fun(1)-->调用fun(0)-->输出0-->输出1-->输出2-->输出3-->输出4-->输出5

所以结果输出:0 1 2 3 4 5

3.以下程序运行结果是?
main()
{union {char c[2];
int i;
int k;
}r;
r.c[0]=67; r.c[1]=0;
r.i=65; r.k=66;
printf("%c %d %d \n",r.c[0],r.i,r.k);
}

在输出前,联合类型r只记住了最后一个赋值r.k=66,所以后面的关于r的输出都是r的最后一个值66,但因输出格式的不同,结果为:
B 66 66

已知int x=10,y=20,z=30;以下语句执行后x,y,z值为?
if(x>y) z=x;x=y;y=z;
第一题就是这?<