C语言求助大神,麻烦写下具体过程,谢谢!
1.写出以下程序的输出结果#include<stdio.h>voidmain(void){struct{intx;inty;}a={5,7},*p=&a;printf("...
1. 写出以下程序的输出结果
#include<stdio.h>
void main(void )
{
struct {
int x;
int y;
} a={ 5,7}, *p=&a;
printf("%d\n",++p->x);
}
2、写出以下程序的输出结果
#include<stdio.h>
struct a{
int x;
int y;
};
void fun(struct a *c)
{
struct a u={12, 13 };
*c=u;
}
void main( )
{
struct a m={21,23};
fun(&m);
printf("%d %d\n",m.x,m.y);
}
3、写出以下程序的输出结果
#include<stdio.h>
struct STU {
char name[10];
int num;
int Score;
};
void main( )
{
struct STU s[5]= {
{"YangSan",20041,703},
{"LiSiGuo",20042,580},
{"wangYin",20043,680},
{"SunDan",20044,550},
{"Penghua",20045,537}
}, *p[5], *t;
int i, j;
for(i=0;i<5;i++)
p[i]=&s[i];
for(i=0;i<4;i++){
for(j=i+1;j<5;j++){
if(p[i]->Score > p[j]->Score){
t=p[i];
p[i]=p[j];
p[j]=t;
}
}
}
printf("%d %d\n", s[1].Score, p[1]->Score);
} 展开
#include<stdio.h>
void main(void )
{
struct {
int x;
int y;
} a={ 5,7}, *p=&a;
printf("%d\n",++p->x);
}
2、写出以下程序的输出结果
#include<stdio.h>
struct a{
int x;
int y;
};
void fun(struct a *c)
{
struct a u={12, 13 };
*c=u;
}
void main( )
{
struct a m={21,23};
fun(&m);
printf("%d %d\n",m.x,m.y);
}
3、写出以下程序的输出结果
#include<stdio.h>
struct STU {
char name[10];
int num;
int Score;
};
void main( )
{
struct STU s[5]= {
{"YangSan",20041,703},
{"LiSiGuo",20042,580},
{"wangYin",20043,680},
{"SunDan",20044,550},
{"Penghua",20045,537}
}, *p[5], *t;
int i, j;
for(i=0;i<5;i++)
p[i]=&s[i];
for(i=0;i<4;i++){
for(j=i+1;j<5;j++){
if(p[i]->Score > p[j]->Score){
t=p[i];
p[i]=p[j];
p[j]=t;
}
}
}
printf("%d %d\n", s[1].Score, p[1]->Score);
} 展开
1个回答
展开全部
第一个:6
关键点在++p->x,其中p指向的是a,->的优先级高于++,可以看成是++(a.x),也就是5+1=6
第二个:12 13
关键点是m是作为地址参数传入fun的,在fun里改变了这块地址所指向的m这块内存的值,所以m的值跟着改变了
第三个:580 550
排版好一点就好看的多了...
void main( )
{
struct STU s[5]=
{
{"YangSan",20041,703},
{"LiSiGuo",20042,580},
{"wangYin",20043,680},
{"SunDan", 20044,550},
{"Penghua",20045,537}
};
struct STU *p[5];
struct STU *t; //冒泡排序的临时变量
int i;
int j;
//这个for循环的赋值可以简单的认为现在p就是s
for(i=0; i<5; i++)
{
p[i] = &s[i];
}
//冒泡排序 按照Score的从小到大排
for(i=0; i<4; i++)
{
for(j=i+1; j<5; j++)
{
if(p[i]->Score > p[j]->Score)
{
t = p[i];
p[i] = p[j];
p[j] = t;
}
}
}
/* 数组下表是1,s[1]就是最初的定义中第二个人也就是580 p[1]就是冒泡排序后Score第二小的人也就是550 */
printf("%d %d\n", s[1].Score, p[1]->Score);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询