struct juxing {
float chang; float kuan; };
struct juxing shuru() {
struct juxing r;
printf(\ scanf(\ return r; }
void shuchu(struct juxing r) {
printf(\ printf(\}
float mianji(struct juxing r) {
return r.chang*r.kuan; }
float zhouchang(struct juxing r) {
return 2*r.chang+2*r.kuan; }
void main() {
struct juxing a; a=shuru(); shuchu(a);
printf(\
printf(\}
(3)设有学生情况登记表如表9.3所示,用选择法对该表按成绩从小到大排序。 #include
char name[8]; char sex; int age; float score;
};
void main(){ int i,j; int min;
struct Student temp; struct Student stu[10]={{101,\{104,\\for(i=0;i<9;i++){ min = i ; for(j=i;j<9;j++){
if(stu[i].score } } temp=stu[min]; stu[min]=stu[i]; stu[i]=temp; } for(i=0;i<=9;i++) { printf(\.sex,stu[i].age,stu[i].score); } getchar(); } (4)某班有20名学生,每名学生的数据包括学号、姓名、3门课的成绩,从键盘输入20名学生的数据,要求打印出每门课的平均成绩,以及每名学生的平均成绩并输出最高分的学生的数据(学号、姓名、3门课、平均成绩)。 #include void main() { struct student s1[20]; int i,j; float avg1=0,avg2=0,avg3=0,sum=0; for(i=0;i<20;i++) scanf(\1],&s1[i].score[2]); for(i=0;i<20;i++) { avg1+=s1[i].score[0]; avg2+=s1[i].score[1]; avg3+=s1[i].score[2]; s1[i].ave=(s1[i].score[0]+s1[i].score[1]+s1[i].score[2])/3; } avg1/=20; avg2/=20; avg3/=20; printf(\ sum=s1[0].ave; j=0; for(i=1;i<20;i++) if(s1[j].ave for(i=0;i<20;i++) printf(\ printf(\XingMing:%s, ChengJi :%f %f %f, PingJun:%f\\n\].score[2],s1[j].ave); } (5)统计候选人总得票数。假设有5名候选人,每次输入一个得票候选人的名字,要求最后按从大到小输出每个人的得票数排名。 #include #include char name[20]; int count; }; void main() { struct note notes[5]={\char tou[20]; int i,j; for(i=0;i<20;i++) { scanf(\ for(j=0;j<20;j++) if(!strcmp(tou,notes[j].name)) notes[j].count++; } for(i=0;i<4;i++){ for(j=i;j<4;j++){ if(notes[i].count } for(i=0;i<5;i++) printf(\: %s, PiaoShu: %d\\n\} (6)定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。 #include int year; int month; int day; }; void main() { struct date date1; int i,sum=0; scanf(\ for(i=1;i sum+=31; if(date1.month>2) sum-=3; if((date1.year@0==0) || (date1.year%4==0 && date1.year0!=0)) sum++; sum+=date1.day; printf(\} 第十章 一、单项选择 1.( B 2.( A ) 3.( B ) 4.( B ) 5.( B ) 二、阅读程序写结果 1.答案: 19 2.答案:k=2 a=4 b=3 3.答案:6 4.答案: 0 1 3 6 三、程序填空 1.答案:(1) p=a; (2) p=a+4;或p-- 2.答案:(1) p=s; (2) ++p 3.答案:(1) *k=p (2) findmax(a,10,&k) 4.答案:(1) *t!='\\0'或*t (2) *(s++)=*(t++)或*s++=*t++ (3) a,b 5.答案:(1)*p!='\\0'或*p (2)a[i++]=*p (3)a[i]='\\0';b[j]='\\0'或a[i]=b[j]='\\0' 四、程序问答 1.答案:(1) 7(2) 首地址 2.答案:(1) 12,9,6(2) 从大到小排序(降序排列)(3) 结果仍是12,9,6,但此处输出结果不是排序后的结果,输出的是输入顺序 的数字。 3.答案:(1)aace(2)把字符数组中的t删除掉(3)atace 五、程序改错 1.答案:(1)scanf(\(2)strcpy(max,str);(3)strcmp(max,str); (4)strcpy(max,str); 2.答案:(1)t=*s;(2)*(p-1)=*p;(3)*(p-1)=t; 3.答案:(1)*p=*q;(2)*q='\\0'; 六、编程 以下程序均要求使用指针来实现。 1. 编程判断输入的一串字符是否为“回文”,是则输出Yes,否则输出No。所谓“回文”,是指正读和倒读都一样的字符串。如\就是回文。 #include char str[100],*p,*q; int flag=1; scanf(\ p=str; q=str+(strlen(str)-1); while(p if(*(p++)!=*(q--)) {flag=0; break; } if(flag==1) printf(\else printf(\}