C语言 结构体的1道小题

作者&投稿:才旦峰 (若有异议请与网页底部的电邮联系)
C语言结构体题~

#include #define N 5void input_stu(struct Stu *stu);void output_avg(struct Stu *stu);struct Stu{int id;char name[10];int sex;float math;float eng;float c;};int main(){struct Stu stu[N];input_stu(stu);output_avg(stu);return 0;}void input_stu(struct Stu *stu){int i = 1;do{printf("请输入第%d个学生的姓名 学号 性别 数学成绩 英语成绩 C语言成绩:", i);struct Stu *s = stu + i - 1;scanf("%s %d %d %f %f %f", s->name, &s->id, &s->sex, &s->math, &s->eng, &s->c);i++;} while (i math, eng_avg = stu->eng, c_avg = stu->c;putchar(10);do{struct Stu *s = stu + i - 1;math_avg = ((i - 1)*math_avg + s->math) / i;eng_avg = ((i - 1) * eng_avg + s->eng) / i;c_avg = ((i - 1)*c_avg + s->c) / i;printf("%-8d%-8s%-8s%-8.1f%-8.1f%-8.1f%-8.1f",s->id, s->name, s->sex == 1 ? "男" : "女", s->math, s->eng, s->c, (s->math + s->eng + s->c) / 3);putchar(10);i++;} while (i <= N);printf("%-12s%-12s%-12s%", "数学平均分", "英语平均分", "C平均分");putchar(10);printf("%-12.1f%-12.1f%-12.1f", math_avg, eng_avg, c_avg);}

#include /* User Code Begin(考生可在本行后添加代码,例如全局变量的定义、函数原型声明等,行数不限) */typedef struct Student{ int num; char name[20]; float score1; float score2; float score3; float score4; float aver;}Student;/* User Code End(考生添加代码结束) */int main(void){ int high; /* high记录平均分最高的学生的序号,具体使用参考后面的代码 */ /* User Code Begin(考生可在本行后添加代码,行数不限) */ int i=0; high = 0; Student myClass[5]; printf("Please input students info:Num Name score1 score2 score3 score4
"); for (i=0; i myClass[high].aver) { high = i; } } /* User Code End(考生添加代码结束) */ printf("
The Highest is %s(%d)
score1=%.2f score2=%.2f score3=%.2f score4=%.2f aver=%.2f
", myClass[high].name, myClass[high].num, myClass[high].score1, myClass[high].score2, myClass[high].score3, myClass[high].score4, myClass[high].aver); return 0;}

m,n是struct aa的成员。
文中定义了一个结构体数组s[2],定义了一个结构体指针指向s
++p->m 是指 p指向的结构中成员m自加后的值 ,此时p指向结构{1,2}因为 p->m = 1,所以该结果为2
(++p)->n 是指p指向的下一个结构中成员n的值,此时p指向结构{3,4}因为 p->n = 4,所以该结果为4


崇州市15545437090: C语言:关于一道结构体的小题!!!! -
禄虹安贺: 定义结构体变量应该是struct ex3 wang; 不能通过wang.n=1000101形式赋值,n不是结构体ex3的成员,如果你要给wang结构体里的a赋值的话,可以这样:strcpy(wang.n,"1000101").

崇州市15545437090: C语言结构体一道题习题,求详解 -
禄虹安贺: 结构体数组赋值后为:x[0].num = 1;x[0].name="USA"; x[1].num = 2;x[1].name="USA"; x[2].num = 3;x[2].name="France";.....p是指向结构体的指针,p = x + 2 就相当于:p = x[0 + 2] = x[2];这时,p指向x[2]所在内存,p->num中->是指针访问...

崇州市15545437090: 一道C语言题,关于结构体的~~~ -
禄虹安贺: #include<stdio.h> struct Stocks//定义一个股票年信息结构 {char StocksName[20];//股票名称int StocksID;//股票IDfloat Buy;//买入float Sell;//卖出float Turnover;//成交 }; void main() {struct Stocks user[50];int i,count=0;//count用于追踪...

崇州市15545437090: 一道C语言题目.用结构体.运行环境VC -
禄虹安贺: #include<iostream>#include <time.h>#include <iomanip> using namespace std;#define NUM 30#define NUM_START 20000 char names[NUM][20]={ "abc0","abc1","abc2","abc3", "abc4","abc5","abc6","abc7", "abc8","...

崇州市15545437090: C语言结构体的一道题 struct STU { char name[10]; int num;}; -
禄虹安贺: struct STU { char name[10]; int num;}; void f(char *name, int *num) {struct STU s[2]={{"SunDan",20044},{"Penghua",20045}};*num=s[0].num; strcpy(name,s[0].name); } main() {struct STU S[2]={{"YangSan",20041},{"LiSiGuo",200042}},*p; p=&S[1];f(p->name,&p->num); printf("%s%d\n",p->name,p->num); system("pause"); }

崇州市15545437090: C语言结构体的一道题 struct STU { char name[10]; int num;}; -
禄虹安贺: /* 作为函数参数传递的值和址是有本质区别的.作为值传送的变量,在被调函数中完全等同于一个初始化了的局部变量,但按址传送的变量(指针或数组),就等同于外部变量.对于函数f()中形参num,改变它的值时,不会不会影响实参的值...

崇州市15545437090: 一道简单的c语言题目: 设计合适的结构体数据类型,能够表示平面上的多 -
禄虹安贺: struct Polygon { struct Point //点 { float x; float y; }; std::vector VertexVec;//保存个顶点.点数就是边数 }; v面积 面积得根据边数 看形状,根据形状算面积 .

崇州市15545437090: 一道关于C语言结构体的题目
禄虹安贺: union { long x[2]; // 4字节*2 int y[4]; // 32位int是4字节*4,16位int是2字节*4 char z[8];} // 8字节 所以在VC下,结果为16;在TC2.0下,结果为8. 联合的意义就是,多个变量占据同一个空间.联合的大小由最大的那个变量来决定.所以结果为16.

崇州市15545437090: 一道C语言结构体题 -
禄虹安贺: f1(A) ;f2(关键是这两个调用,f1(A),实际值传递调用,就是这个函数不会改变传递进来的变量的值,f2函数是个指针函数,它的操作是把 {“SunDan”,2044};这个覆盖写入main中变量 b={“WangY...

崇州市15545437090: 简单的C语言结构体题目 -
禄虹安贺: 输出的结果为3. 首先你定义了一个结构体,这个结构体中包含了3个int型数.通常一个int为32位,那么这个struct就是32*3=96位. 你接着定义了一个对应类型的变量s,并赋予初值3,5,6.再接着又定义了一个指针指向了s的地址. 最后你在输出的时候有一个类型强制转换(int*),你将原来96位的pt指针强制变为指向32位的int指针,然后再用*号取出所存的值.这样一来,程序将会取出地址前32位对应的数,即为3.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网