《C语言程序设计》(吴军良)思考与练习答案_第1页
《C语言程序设计》(吴军良)思考与练习答案_第2页
《C语言程序设计》(吴军良)思考与练习答案_第3页
《C语言程序设计》(吴军良)思考与练习答案_第4页
《C语言程序设计》(吴军良)思考与练习答案_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计课后答案第1章C语言概述一、选择题1.D2.C3.D4.C5.A6.C7.D二、填空题1..c.obj.exe2.需求分析算法设计编写程序编译程序连接程序编写程序文档3./**/三、编程题1.参考代码如下:#include<stdio.h>intmain(){ printf("***这是我的第一个C语言程序!***\n"); return0;}2.参考代码如下:#include<stdio.h> /*编译预处理指令*/intmain() /*主函数的函数头*/{ /*函数体的开始标记*/ printf("***这是我的第一个C语言程序!***\n"); /*输出要显示的字符串*/ return0; /*程序返回值0*/} /*函数的结束标记*/

第2章算法一、选择题1.A2.A3.C4.B二、简答题1.计算n!算法的流程图如图2-1所示。图2-1计算n!算法的流程图2.计算n!算法的N-S流程图如图2-2所示。图2-2计算n!算法的N-S流程图3.计算两个数a和b最大公约数算法的流程图如图2-3所示。图2-3求最大公约数流程图4.计算两个数a和b最大公约数算法的N-S流程图如图2-4所示。图2-4求最大公约数N-S流程图

第3章数据类型及其运算一、选择题1.A2.A3.A4.B5.C6.D7.D8.C9.C10.B二、填空题1.整型浮点型2.03.264.95.1.56.76.9,11,9,10三、编程题1.参考代码如下:#include<stdio.h>intmain(){ inta,b,c; a=10; b=20; c=a; a=b; b=c; printf("a=%d,b=%d\n",a,b); return0;}2.参考代码如下:#include<stdio.h>intmain(){ intnum,a,b,c; printf("Pleaseinputthenumber:"); scanf("%d",&num); a=num/100; b=(num-100*a)/10; c=num-100*a-10*b; a+=b*10+c*100; printf("Theresultis%d\n",a); return0;}3.参考代码如下:#definePI3.14159#include<stdio.h>intmain(){ floatr,l,s,v; printf("请输入圆半径:"); scanf("%f",&r); l=2*PI*r; s=PI*r*r; v=4*PI*r*r*r/3; printf("半径为%f的圆周长为%f,面积为%f,圆球体积为%f\n",r,l,s,v); return0;}

第4章顺序结构程序设计一、选择题1.D2.C3.D4.B5.B二、填空题1.27\n2.123.scanf("%d",&a);三、编程题1.参考代码如下:#include<stdio.h>intmain(){ intx; floaty,s; printf("请输入商品的单价"); scanf("%f",&y); printf("请输入购买商品的个数"); scanf("%d",&x); s=x*y; printf("商品总价为:%f\n",s); return0;}2.参考代码如下:#include<stdio.h>intmain(){ inta,b; printf("请输入a和b的值"); scanf("a=%d,b=%d",&a,&b); a=a+b; b=a-b; a=a-b; printf("a=%d,b=%d\n",a,b); return0;}3.参考代码如下:#include<stdio.h>intmain(){ printf("****\n"); printf("*\n"); printf("*\n"); printf("****\n"); return0;}4.参考代码如下:#include<stdio.h>intmain(){ inta=5; floatb=1.332; charc='A'; printf("a=%4db=%.3f\n",a,b); printf("a+b=%.1f\n",a+b); printf("c=\'%c\'or%d\n",c,c); return0; }

第5章选择结构程序设计一、选择题1.C2.D3.B4.B5.D二、填空题1.0 2.a的值为2;b的值为13.20,30,30 4.15.①a>b ②a=b;b=t;三、编程题1.参考代码如下:#include<stdio.h>intmain(){ intx,y; /*定义整型变量x、y*/ printf("Pleaseinputx:"); /*输出屏幕提示*/ scanf("%d",&x); /*从键盘输入x的值*/ if(x<0) y=3*x+2; /*根据x的取值计算y的值*/ else y=-x+1; /*根据x的取值计算y的值*/ printf("y=%d\n",y); /*输出y的值*/}2.参考代码如下:#include<stdio.h>intmain(){ inta; printf("Pleaseenteraninteger:"); scanf("%d",&a); switch(a) { case1:printf("Monday\n");break; case2:printf("Tuesday\n");break; case3:printf("Wednesday\n");break; case4:printf("Thursday\n");break; case5:printf("Friday\n");break; case6:printf("Saturday\n");break; case7:printf("Sunday\n");break; default:printf("Error!\n"); } return0;}3.参考代码如下:#include<stdio.h>intmain(){ floata,b; printf("inputetheincome:"); scanf("%f",&a); if(a<=3500) b=0; elseif(a<=5000) b=(a-3500)*0.03; elseif(a<=9500) b=(5000-3500)*0.03+(a-5000)*0.1; else b=(5000-3500)*0.03+(9500-5000)*0.1+(a-9500)*0.2; printf("thetaxis:%.2f",b); return0;}4.参考代码如下:#include<stdio.h>intmain(){ intc,s; floatp,w,d,f; printf("Pleaseenterprice,weight,distance:"); /*提示输入数据*/ scanf("%f,%f,%d",&p,&w,&s); /*输入单价、重量、距离*/ if(s>=3000) c=12; /*3000km以上为同一折扣*/ else c=s/250; /*3000km以下各段折扣不同,c的值不相同*/ switch(c) { case0:d=0;break; /*c=0,代表250km以下,折扣d=0*/ case1:d=2;break; /*c=1,代表250km~500km,折扣d=2%*/ case2: case3:d=5;break; /*c=2和3,代表500km~1000km,折扣d=5%*/ case4: case5: case6: case7:d=8;break; /*c=4~7,代表1000km~2000km,折扣d=8%*/ case8: case9: case10: case11:d=10;break; /*c=8~11,代表2000km~3000km,折扣d=10%*/ case12:d=15;break; /*c=12,代表3000km以上,折扣d=15%*/ } f=p*w*s*(1-d/100.0); /*计算总运费*/ printf("freight=%10.2f\n",f); /*输出总运费,取两位小数*/ return0;}5.参考代码如下:#include<stdio.h>intmain(){ inta,i,j,k; printf("inputethenumber(100-999):"); scanf("%d",&a); if(a%3==0&&a%5==0&&a%7==0) printf("canbedividedby3,5,7"); elseif(a%3==0&&a%5==0) printf("canbedividedby3,5"); elseif(a%3==0&&a%7==0) printf("canbedividedby3,7"); elseif(a%5==0&&a%7==0) printf("canbedividedby5,7"); elseif(a%3==0) printf("canbedividedby3"); elseif(a%5==0) printf("canbedividedby5"); elseif(a%7==0) printf("canbedividedby7"); else printf("notcanbedividedby3or5or7"); return0;}

第6章循环结构程序设计一、选择题1.D2.A3.A4.D5.C6.C7.C8.B二、填空题1.do-while语句 2.553.10 4.x>05.15三、编程题1.参考代码如下:#include<stdio.h>intmain(){ inti,k,max; printf("Pleaseinputk:"); scanf("%d",&max); for(i=2;i<6;i++) { scanf("%d",&k); if(max<k) max=k; } printf("max=%d\n",max); return0;}2.参考代码如下:#include<stdio.h>intmain(){ intn,i,j,k; for(n=100;n<1000;n++)/*对所有的3位数循环*/ { i=n/100;/*的百位数字*/ j=n/10%10;/*的十位数字*/ k=n%10;/*的个位数字*/ if(n==i*i*i+j*j*j+k*k*k) { printf("%d=%d*%d*%d+%d*%d*%d+%d*%d*%d\n",n,i,i,i,j,j,j,k,k,k); break;/*只要求找第一个满足条件的数,所以找到后立即退出循环*/ } } return0;}3.参考代码如下:#include<stdio.h>intmain(){ intn; for(n=10;n<100;n++) { if(n%3!=0||n%5!=0) continue;/*n不满足要求,结束本次循环*/ printf("%5d",n); } return0;}4.参考代码如下:#include<stdio.h>intmain(){ inti,j; for(i=1;i<=10;i++) { for(j=1;j<=i;j++) printf("#"); printf("\n"); } return0;}5.参考代码如下:#include<stdio.h>intmain(){ inti,j; for(i=1;i<=9;i++)/*外循环控制输出的行数*/ { for(j=1;j<=i;j++)/*内循环输出表中的一行*/ printf("%d*%d=%-3d",j,i,i*j); printf("\n");/*换行控制,使下一次的式子输出在新行上*/ } return0;}6.参考代码如下:#include<stdio.h>intmain(){ intA,B,C,D,E;/*定义5个整型变量*/ for(A=1;A<6;A++)/*将A在1~5的名次中循环*/ for(B=1;B<6;B++)/*将B在1~5的名次中循环*/ if(A!=B)/*判断变量与已有变量值不相等*/ for(C=1;C<6;C++)/*将C在1~5的名次中循环*/ if(C!=A&&C!=B)/*判断变量与已有变量值不相等*/ for(D=1;D<6;D++)/*将D在1~5的名次中循环*/ if(D!=A&&D!=B&&D!=C)/*判断变量与已有变量值不相等*/ for(E=1;E<6;E++)/*将E在1~5的名次中循环*/ if(E!=D&&E!=C&&E!=B&&E!=A)/*判断变量与已有变量值不相等*/ if((C!=1)&&(D-E==2)&&(E!=2)&&(A!=1)&&(A!=5)&&(B-C==1))/*根据问题设置的条件*/ printf("A=%d,B=%d,C=%d,D=%d,E=%d\n",A,B,C,D,E);/*输出*/ return0;}7.参考代码如下:#include<stdio.h>intmain(){ intcock,hen,chick; /*定义变量为基本整型*/ for(cock=0;cock<=20;cock++) /*鸡翁范围在0到20之间*/ for(hen=0;hen<=33;hen++) /*鸡母范围在0到33之间*/ for(chick=3;chick<=99;chick++) /*鸡雏范围在3到99之间*/ if(5*cock+3*hen+chick/3==100) /*判断钱数是否等于100*/ if(cock+hen+chick==100) /*判断购买的鸡数是否等于100*/ if(chick%3==0) /*判断鸡雏数是否能被3整除*/ printf("鸡翁:%d只,鸡母:%d只,鸡雏:%d只\n", cock,hen,chick); return0;}

第7章数组一、选择题1.D2.B3.A4.C5.B6.B7.C8.C9.A10.A二、填空题1.200 2.windows20003.①s=count=0; ②i=0;i<20;i++ ③continue; ④count++;三、编程题1.参考代码如下:#include<stdio.h>#include<math.h>#defineN101intmain(){ inti,j,line,a[N]; for(i=2;i<N;i++) a[i]=i; for(i=2;i<sqrt(N);i++) for(j=i+1;j<N;j++) { if(a[i]!=0&&a[j]!=0) if(a[j]%a[i]==0) a[j]=0; } printf("\n"); for(i=2,line=0;i<N;i++) { if(a[i]!=0){ printf("%5d",a[i]); line++; } if(line==10){ printf("\n"); line=0; } } return0;}2.参考代码如下:#include"stdio.h"intmain(){ inta[20],i,max,n; for(i=0;i<20;i++) scanf("%d",&a[i]); max=a[0]; n=0; for(i=1;i<20;i++) if(max<a[i]) { max=a[i]; n=i; } printf("max=%d,n=%d",max,n); return0;}3.参考代码如下:#include<stdio.h>intmain(){ inti,n,k=16,a[16]={0}; printf("Pleaseenteradigit:"); scanf("%d",&n); while(n>0) /*将十进制数转变为二进制数*/ { a[--k]=n%2; n=n/2; } for(i=0;i<16;i++) printf("%2d",a[i]); return0;}4.参考代码如下:#include<stdio.h>intmain(){ intmonth_tab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}}; intyear,month,day; intyearday,leap,i; printf("\nEnteryear_month_day:"); scanf("%d%d%d",&year,&month,&day); leap=((year%4==0)&&(year%100!=0)||(year%400==0)); yearday=day; for(i=1;i<month;i++) yearday+=month_tab[leap][i]; printf("yearday=%d",yearday); return0;}5.参考代码如下:#include<stdio.h>intmain(){ charstr1[100],str2[100],c; inti,s; printf("Enterstring1:"); gets(str1); printf("Enterstring2:"); gets(str2); i=0; while((str1[i]==str2[i]&&str1[i]!='\0'))/*比较两字符串第一个不同的字符*/ i++; s=str1[i]-str2[i]; printf("%d\n",s); return0;}

第8章函数一、选择题1.A2.B3.C4.A5.A6.C7.C8.D二、填空题1.5,6 2.11,43.①intfun(intx,inty); ②max=fun(fun(a,b),c);4.①i+1 ②&a[i]三、编程题1.参考代码如下:#include<stdio.h>longrfact(intn){ if(n<0) { printf("Negativeargumenttofact!\n"); exit(-1); } elseif(n<=1) return(1); else return(n*rfact(n-1)); /*递归调用自己*/}intmain(){ intn; longf; printf("Pleaseinputanintegralnumber:"); scanf("%d",&n); f=rfact(n); printf("%d!=%ld\n",n,f); return0;}2.参考代码如下:#include<stdio.h>intmain(){ doubleturn(charx[]); charstr[10]; doublea; gets(str); a=turn(str); printf("%f\n",a); return0;}doubleturn(charx[]){ inti; doublem=0; for(i=0;x[i]!='\0';i++) if(x[i]>='0'&&x[i]<='9')m=m*16+x[i]-'0'; elseif(x[i]>='A'&&x[i]<='F')m=m*16+x[i]-'A'+10; elseif(x[i]>='a'&&x[i]<='f')m=m*16+x[i]-'a'+10; returnm;}3.参考代码如下:#include<stdio.h>floatmax=0,min=0; /*定义全局变量,max最高分,min最低分*/intmain(){ floataverage(floatarray[],intn); /*函数说明*/ floatave,score[10]; inti; printf("Pleaseenter10scores:"); for(i=0;i<10;i++) scanf("%f",&score[i]); ave=average(score,10); /*函数调用*/ printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",max,min,ave); return0;}floataverage(floatarray[],intn) /*自定义函数*/{ inti; floataver,sum=array[0]; max=min=array[0]; for(i=1;i<n;i++) { if(array[i]>max) max=array[i]; elseif(array[i]<min) min=array[i]; sum+=array[i]; } aver=sum/n; return(aver);}4.参考代码如下:#include<stdio.h>intmain(){ inta[10],b[10],i,n=0,m=0,k=0; printf("Pleaseenterarraya:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("Pleaseenterarrayb:\n"); for(i=0;i<10;i++) scanf("%d",&b[i]); for(i=0;i<10;i++) { if(large(a[i],b[i])==1) n=n+1; elseif(large(a[i],b[i])==0) m=m+1; else k=k+1; } printf("a[i]>b[i]%dtimes\na[i]=b[i]%dtimes\na[i]<b[i]%dtimes\n",n,m,k); if(n>k) printf("arrayaislargerthanarrayb\n"); elseif(n<k) printf("arrayaissmallerthanarrayb\n"); else printf("arrayaisequalarrayb\n"); return0;}intlarge(intx,inty){ intflag; if(x>y) flag=1; elseif(x<y) flag=-1; else flag=0; return(flag);}5.参考代码如下:#include<stdio.h>doublefun(intm){ doubley=1.0; inti; for(i=2;i<=m;i++) y-=1.0/(i*i); return(y);}intmain(){ intm; printf("pleaseinputm:"); scanf("%d",&m); printf("\nTheresultis%lf\n",fun(m)); return0;}

第9章指针一、选择题1.B2.D3.A4.B5.C6.A7.C8.C9.A10.A二、填空题1.①int*p; ②int*p[4];③int(*p)[4]; ④int*p();⑤int(*p)(); ⑥int**p;2.4 123.8 104.1355.①num=*b; ②num=*c;三、编程题1.参考代码如下:#include<stdio.h>voidswap(int*p1,int*p2){ intt; t=*p1; *p1=*p2; *p2=t;}intmain(){ int*a,*b,*c,x,y,z; a=&x; b=&y; c=&z; printf("输入3个整数:"); scanf("%d%d%d",a,b,c); printf("%d,%d,%d\n",*a,*b,*c); if(*a<*b) swap(a,b); if(*a<*c) swap(a,c); if(*b<*c) swap(b,c); printf("x=%d,y=%d,z=%d\n",x,y,z); return0;}2.参考代码如下:#include<stdio.h>intmain(){ charstr[50],*p,*s,c; printf("Enterstring:"); gets(str); p=s=str; /*指针p和s指向str*/ while(*p) p++; /*找到串结束标记'\0'*/ p--; /*指针回退一个字符,指针p指向字符串中的最后一个字符*/ while(s<p) /*当串前面的指针s<(小于)串后面的指针p时,进行循环*/ { c=*s; /*交换两个指针所指向的字符*/ *s++=*p; /*串前面的指针s向后(+1)移动*/ *p--=c; /*串后面的指针p向前(-1)移动*/ } puts(str); return0;}3.参考代码如下:#include<stdio.h>intmain(){ charstr1[80],str2[80],str[80]; char*p,*q,*r,*s; printf("Enterstring1:"); gets(str1); printf("Enterstring2:"); gets(str2); for(p=str1,q=str2,r=str;*p!='\0'&&*q!='\0';) /*完成串合并*/ if(*p<*q) /*比较str1和str2中的字符*/ *r++=*p++; /*若str1中的字符较小,则将它复制到str中*/ else *r++=*q++; /*若str2中的字符较小,则将它复制到str中*/ s=(*p!='\0')?p:q; /*判断哪个字符串还没有处理完毕*/ while(*s!='\0') /*继续处理(复制)尚未处理完毕的字符串*/ *r++=*s++; *r='\0'; /*向str中存入串结束标记*/ printf("Result:"); puts(str); return0;}4.参考代码如下:#include<stdio.h>voidinverte(int*x,intn){ int*p,temp,*i,*j,m=(n-1)/2; /*声明变量*/ i=x; /*变量I存放数组首地址*/ j=x+n-1; /*变量j存放数组末尾元素地址*/ p=x+m; /*变量P存放数组中间元素地址*/for(;i<=p;i++,j--) /*交换数组前半部分和后半部分元素*/ { temp=*i; *i=*j; *j=temp; }}intmain(){ inti,a[10]={1,2,3,4,5,6,7,8,9,0}; /*定义数组*/ printf("输入数组元素:\n"); for(i=0;i<10;i++) /*输出数组*/ printf("%d,",a[i]); printf("\n"); inverte(a,10); /*使数组元素逆序*/ printf("逆序输出数组元素:\n"); for(i=0;i<10;i++) /*输出逆序后数组*/ printf("%d,",a[i]); printf("\n"); return0;}5.参考代码如下:#include<stdio.h>intmain(){ inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; /*定义数组*/ int*p,(*pt)[4],i,j; /*声明指针、指针型数组等变量*/ printf("显示数组:"); for(p=a[0];p<a[0]+12;p++) { if((p-a[0])%4==0)printf("\n"); /*每行输出4个元素*/ printf("%4d",*p); /*输出数组元素*/ } printf("\n"); printf("请输入要输出的位置:i=,j=\n"); pt=a; scanf("i=%d,j=%d",&i,&j); /*输入元素位置*/ printf("a[%d,%d]=%d\n",i,j,*(*(pt+i)+j)); /*输出指定位置的数组元素*/ return0;}6.参考代码如下:#include<stdio.h>#include<string.h>voidsort(char*strings[],intn) /*对字符串排序*/{ char*temp; inti,j; for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(strcmp(strings[i],strings[j])>0) /*比较字符大小,交换位置*/ { temp=strings[i]; strings[i]=strings[j]; strings[j]=temp; } } }}intmain(){ intn=5; inti; char*strings[]={"Clanguage","Basic","Worldwide","Helloworld","Oneworld,onedream!"}; /*构造字符串数组*/ sort(strings,n); /*排序*/ for(i=0;i<n;i++) printf("%s\n",strings[i]); return0;}

第10章预处理命令一、选择题1.B2.B3.D4.A5.C二、填空题1.宏定义、文件包含、条件编译2.不带参数宏 带参数宏3.①CIRCLE(R,L,S,V) ②S=PI*R*R;

第11章用户自定义数据类型一、选择题1.B2.A3.C4.D5.A6.D7.C8.D9.B10.C二、填空题1.structDATEd={2018,3,25}; 2.structstudent*3.structnode*三、编程题1.参考代码如下:#include<stdio.h>#include<string.h>typedefstructMyComplex{ doublereal; doubleimg;}mc;mcPlus(mca,mcb){ mcresult; result.real=a.real+b.real; result.img=a.img+b.img; returnresult;}mcSub(mca,mcb){ mcresult; result.real=a.real-b.real; result.img=a.img-b.img; returnresult;}voidShow(mca){ if(a.real==0&&a.img==0) printf("0.000\n"); elseif(a.real==0) printf("%.4fi\n",a.img); elseif(a.img==0) printf("%.4f\n",a.real); else { if(a.img<0) printf("%.4f%.4fi\n",a.real,a.img); else printf("%.4f+%.4fi\n",a.real,a.img); }}intmain(){ mca,b; printf("输入第一个复数a:\n"); scanf("%lf%lf",&a.real,&a.img); printf("输入第二个复数b:\n"); getchar(); scanf("%lf%lf",&b.real,&b.img); printf("ab的和:"); Show(Plus(a,b)); printf("ab的差:"); Show(Sub(a,b)); return0;}2.参考代码如下:#include<stdio.h>#defineN5typedefstructnode{ intnum; intscore1; intscore2;}STU;intmain(){ STUs[N]; intsum=0,ave,i; for(i=0;i<N;i++) { printf("请输入第%d个学生的信息(学号、数学成绩、英语成绩):\n",i+1); scanf("%d%d%d",&s[i].num,&s[i].score1,&s[i].score2); } printf("所有学生的信息如下:\n"); printf("学号\t\t数学成绩\t英语成绩\n"); for(i=0;i<N;i++) printf("%5d:\t%10d\t%10d\t\n",s[i].num,s[i].score1,s[i].score2); for(i=0;i<N;i++) { sum=sum+s[i].score1+s[i].score2; if(s[i].score1==100||s[i].score2==100) { printf("学号为%d的学生有满分成绩\n",s[i].num); printf("其信息为:学号:%d,\t数学成绩:%d,\t英语成绩:%d\n",s[i].num,s[i].score1,s[i].score2); } } ave=sum/(N*2); printf("5名学生2门课程的总平均分为:%d\n",ave); return0;}3.参考代码如下:#include<stdio.h>#include<malloc.h>#defineN5 /*单链表中结点的个数(不包括头结点)*/typedefstructnode{ intnum; intscore1; intscore2; structnode*next;}STU;STU*creatList(intn) /*尾插法建立单链表,返回值为单链表的头指针*/{ STU*head,*s,*r; /*head为头指针;s指向当前结点;r指向当前结点的前一个结点*/ inti=0; if((head=(STU*)malloc(sizeof(STU)))==NULL) /*为头结点分配内存空间,并检测是否分配成功*/ { printf("error!"); return(0); } head->next=NULL; /*将头结点的指针域置空*/ r=head; for(i=0;i<n;i++) { if((s=(STU*)malloc(sizeof(STU)))==NULL)/*s结点总指向当前处理结点*/ { printf("error!"); return(0); } printf("请输入第%d个学生的信息(学号、数学成绩、英语成绩):\n",i+1); scanf("%d%d%d",&s->num,&s->score1,&s->score2); /*从键盘读入数据,存入当前结点的数据域*/ r->next=s; /*将r的指针域指向s,形成单链表*/ r=s; } r->next=NULL; returnhead;}voidprintList(STU*L) /*输出链表元素*/{ STU*p; p=L->next; printf("所有同学的信息如下:\n"); printf("学号\t\t数学成绩\t英语成绩\n"); while(p!=NULL) { printf("%5d:\t%10d\t%10d\t\n",p->num,p->score1,p->score2); p=p->next; } printf("\n");}intmain(){ intn=N,x,sum=0,ave; STU*s,*t; s=creatList(n); printList(s); t=s->next; while(t!=NULL) { sum=sum+t->score1+t->score2; if(t->score1==100||t->score2==100) { printf("学号为%d的学生有满分成绩\n",t->num); printf("其信息为:学号:%d,\t数学成绩:%d,\t英语成绩:%d\n",t->num,t->score1,t->score2); } t=t->next; } ave=sum/(n*2); printf("5名学生2门课程的总平均分为:%d\n",ave); return0;}4.参考代码如下:#include<stdio.h>structstu{ intnum; intmid; intend; intave;}s[3];intmain(){ inti; structstu*p; for(p=s;p<s+3;p++) { scanf("%d%d%d",&(p->num),&(p->mid),&(p->end)); p->ave=(p->mid+p->end)/2; } for(p=s;p<s+3;p++) printf("%d%d%d%d\n",p->num,p->mid,p->end,p->ave); return0;}5.参考代码如下:#include<stdio.h>#include<stdlib.h> /*包含动态内存分配函数的头文件*/#defineN5 /*单链表中结点的个数(不包括头结点)*/typedefstructnode{ intdata; structnode*next;}STU;structnode*creatList(intn) /*尾插法建立单链表,返回值为单链表的头指针*/{ structnode*head,*s,*r; /*head为头指针,s指向当前结点,r指向当前结点的前一个结点*/ inti=0; if((head=(structnode*)malloc(sizeof(structnode)))==NULL) /*为头结点分配内存空间,并检测是否分配成功*/ { printf("error!"); return0; } head->next=NULL; /*将头结点的指针域置空*/ r=head; /*r指向头结点*/ for(i=0;i<n;i++) { if((s=(structnode*)malloc(sizeof(structnode)))==NULL) /*s结点总指向当前处理结点*/ { printf("error!"); return0; } scanf("%d",&s->data); /*从键盘读入数据,存入当前结点的数据域*/ r->next=s; /*将r的指针域指向s,形成单链表*/ r=s; /*r指向s结点*/ } r->next=NULL; /*r为尾结点其next指向NULL*/ returnhead; /*返回单链表的头指针*/}void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论