c语言的题目struct STU {char num[10];

来源:百度知道 编辑:UC知道 时间:2024/04/28 18:11:06
44有以下程序
struct STU {char num[10]; float score[3]; }
main() {struct STU s[3]={{"20021",90,95,85},{"20022"95,80,75},
{"20023",100,95,90}},*p=s;
int i; flaot sum =0; for(i=0;i<3;i++) sum=sum+p->score[i]; printf("%6.2f\n",sum);}
程序运行后的结果是:
270.00为什么?
struct STU {char num[10]; float score[3]; }是什么意思
struct STU s[3]={{"20021",90,95,85},{"20022"95,80,75},
{"20023",100,95,90}},*p=s;是什么意思
sum=sum+p->score[i]; 是什么意思
50
以下程序中函数f的功能是将n个字符串,按由大到小的顺序排列
#include <string.h>
void f(char p[][10],int n) { char t[20]; int i,j;
for(i=0; i<n-1;i++) for (j=i+1; j<n; j++) if (strcmp(p[i],p[j])<0)
{ strcpy(t,p[i]); strcpy(p[i],p[j]);strcpy(p[j],t);} }
main() {char p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};int i;
f(p,5); printf("%d\n",strlen(p[0])); }

一个小小的问题,居然搞这么多为什么,让人家怎么回答你呀?要是我的学生这么个问法,我非训他不可!

不过既然不是我学生,就尽可能点一下吧:

struct STU {char num[10]; float score[3]; } //定义一个结构体类型STU
main() {struct STU s[3]={{"20021",90,95,85},{"20022"95,80,75},
{"20023",100,95,90}},*p=s; //定义结构体变量s并初始化
int i; flaot sum =0; for(i=0;i<3;i++) sum=sum+p->score[i]; //将p指向的第一个结构体数组的元素中的三个score 累加到sum中
printf("%6.2f\n",sum);} //将sum保留两位小数输出
程序运行后的结果是:
270.00为什么?

以下程序中函数f的功能是将n个字符串,按由大到小的顺序排列
#include <string.h>
void f(char p[][10],int n) { char t[20]; int i,j;
for(i=0; i<n-1;i++) for (j=i+1; j<n; j++) if (strcmp(p[i],p[j])<0)
{ strcpy(t,p[i]); strcpy(p[i],p[j]);strcpy(p[j],t);} } //上述f()函数将含n个元素的字符串数组按从大到小的顺序排序
main() {char p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};int i;
f(p,5); printf("%d\n",strlen(p[0])); }