C语言的问题

有以下程序
#include
#include
struct A
{ int a;char b[10];double c;};
struct A f(struct A t);
main()
{ struct A a={1001,"ZhangDa",1098.0};
a=f(a);
printf("%d,%s,%6.1f\n",a.a,a.b,a.c); }
struct A f(struct A t)
{ t.a=1002;
strcpy(t.b,"ChangRong");t.c=1202.0;return t;}
程序运行后的输出结果是
A)1001,ZhangDa,1098.0 B)1002,ZhangDa,1202.0
C)1001,ChangRong,1098.0 D)1002,ChangRong,1202.0

希望能详细解答。。程序都看不懂= =

答案是D
最开始struct A a={1001,"ZhangDa",1098.0}; 表示创建了一个结构体a,它的初始数据是a.a=1001 a.b="ZhangDa" a.c=1098.0

然后a=f(a); 调用了struct A f(struct A t)方程并把调用后得到的对象赋值给a

所以接着看到这个方程,t.a=1002;
strcpy(t.b,"ChangRong"); 把“ChangRong”复制到t.b里,就是现在t.b=“ChangRong”
t.c=1202.0;
return t;返回对象
于是现在a里面的值和你返回的这个对象的值一样了
最后输出a的各项值到屏幕上
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-29
struct A //定义结构体
{ int a;char b[10];double c;};
struct A f(struct A t); //声明函数f 参数t(参数传递方式是实参单项转递给形参,即形参的变化不会影响到实参) 返回值类型 struct A
main()
{ struct A a={1001,"ZhangDa",1098.0}; //定义一个结构体类型变量 a
//即 a.a 的值 1001 a.b 的值"ZhangDa" a.c的值1098.0
a=f(a); //调用函数 f --》跳转到函数f定义部分执行,a将获得函数f返回值
printf("%d,%s,%6.1f\n",a.a,a.b,a.c); } //输出a被改变后的结果
struct A f(struct A t) //函数f定义部分
{ t.a=1002; //改变形参的值,此时不会影响到实参
strcpy(t.b,"ChangRong");t.c=1202.0;
return t;//返回改变后形参的结果}

输出结果是D本回答被提问者采纳
第2个回答  2013-07-29
(其实这个题的逻辑我也不大懂。。)。这个是结构体的东西,你看一下C语言的结构体就能看懂了。其实很简单的。、大致就是自己声明一个变量的类型。这个类型是struct A,struct A a类似于char a或int a之类的语法,都是对变量a类型的声明,不过a的类型变成了struct A罢了。