版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
28/28《C语言程序设计能力教程(第二版)》课后作业及实训题参考答案第1章进入C语言程序世界二、1.IloveChina!printf("wearestudents.\n")2.6项目实训题参考答案1.编写一个C程序,输出以下信息:********************Iamastudent!********************main(){printf("********************\n");printf("Iamastudent!\n");printf("********************\n");}2.已知立方体的长、宽、高分别是10cm、20cm、15cm,编写程序,求立方体体积。解:main(){inta,b,c,v;a=10;b=20;c=15;v=a*b*c;printf("v=%d",v);}本程序运行结果为:v=3000第2章编制C程序的基础知识一选择题CBABACC二操作题1.3,2,-8,23.000000,2.500000,-8.0000002.ABCDEFGHwhyis21+35equal523.3 14 32 31 24.aa bb cc abcA N项目实训题1.定义一个符号常量M为5和一个变量n值为2,把它们的乘积输出。#defineM5main(){intn,c;n=2;c=M*n;printf("%d\n",c);}2.编程求下面算术表达式的值。(1)x+a%3*(int)(x+y)%2/4,设x=2.5,a=7,y=4.7;(2)(float)(a+b)/2+(int)x%(int)y,设a=2,b=3,x=3.5,y=2.5。(1)main(){inta=7;floatx=2.5,y=4.7;printf("%f\n",x+a%3*(int)(x+y)%2/4);}(2)main(){inta=2,b=3;floatx=3.5,y=2.5;printf("%f\n",(float)(a+b)/2+(int)x%(int)y);}第三章顺序结构程序设计一选择题ACDCC二操作题1.x=3,a=2,b=32.z=12.7000003.121a212三.编程题编程题1.某工种按小时计算工资,每月劳动时间(小时)×每小时工资=总工资,总工资中扣除10%公积金,剩余的为应发工资。编写一个程序从键盘输入劳动时间和每小时工资,打印出应发工资。解:#include<stdio.h>main(){floatsj,gz,yfgz;printf("time,salary:");scanf("%f,%f",&sj,&gz);yfgz=sj*gz*0.9;printf("totalsalary:%f\n",yfgz);}本程序运行结果为:time,salary:4,3<CR>totalsalary:10.8000002.编写一个程序求出任意一个输入字符的ASCII码解:#include<stdio.h>main(){charc;printf("Inputastring:");scanf("%c",&c);printf("%cASCIIis%d\n",c,c);}本程序运行结果为:Inputastring:a<CR>aASCIIis973、编写一个程序用于水果店售货员算帐:已知苹果每斤2.50元,鸭梨每斤1.80元,香蕉每斤2元,橘子每斤1.6元,要求输入各类水果的重量,打印出应付钱数,再输入顾客付款数,打印出应找的钱数。解:main(){floatp,y,x,j,ys,g,fk;printf("apple,pear,banana,orange(weight)=");scanf("%f,%f,%f,%f",&p,&y,&x,&j);ys=2.5*p+1.8*y+2*x+1.6*j;printf("fukuan=");scanf("%f",&g);fk=g-ys;printf("result:\n");printf("fukuan=%6.2fyuan\nshoukuan=%6.2fyuan\nzhaohui=%6.2fyuan\n",g,ys,fk);}本程序运行结果为:apple,pear,banana,orange(weight)=1,2,3,4fukuan=100result:fukuan=100.00yuanshoukuan=18.50yuanzhaohui=81.50yuan项目实训1.假设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计算n年后可得到本利之和deposit。#include<math.h>main(){intn;floatrate=0.0225,capital,deposit;scanf("%d,%f",&n,&capital);deposit=capital*pow(1+rate,n);printf("deposit=%f\n",deposit);}2.将一个三位数整数,正确分离出它的个位、十位和百位数字,并分别在屏幕上输出。main(){intn,a,b,c;scanf("%3d",&n);a=n/100;b=n%100/10;c=n%100%10/1;printf("a=%d,b=%d,c=%d\n",a,b,c);}第四章选择结构程序设计一、略二、BBABCBA三、1.102.23223.102004.ch>=’A’&&ch<=’Z’||ch>=’a’&&ch<=’z’ch>=’0’&&ch<=’9’ch==’’5.-1四、上机操作1.从键盘输入一个英文字母,如果是大写字母,则将它变为小写字母输出;如果是小写字母,则将其变为大写字母输出。#include<stdio.h>main(){charch;ch=getchar();if(ch>='A'&&ch<='Z')ch+=32;elseif(ch>='a'&&ch<='z')ch-=32;putchar(ch);putchar('\n');}2.根据输入的x值依据下列表达式,计算y的值。2x(x>-1)y=3(x=-1)4+x(x<-1)解:main(){floatx,y;scanf("%f",&x);if(x>-1)y=2*x;elseif(x==1) y=3;elsey=4+x;printf("y=%f",y);}本程序运行结果为:-2<CR>y=2.0000003.编写程序,输入一个整数,判断它是奇数还是偶数,若是奇数,输出“IsOdd“;若是偶数,输出“IsEven“。main(){intx;scanf("%d",&x);if(x%2==0)printf("IsEven\n");elseprintf("IsOdd\n");}4.设计应用程序,求二次方程ax2+bx+c=0的解。#include<math.h>main(){floata,b,c,disc,x1,x2,p,q;scanf("%f,%f,%f",&a,&b,&c);if(fabs(a)<=1e-6)printf("Theequationisnotaquadratic\n");else{disc=b*b-4*a*c;if(fabs(disc)<1e-6)printf("x1=x2=%8.4f\n",-b/(2*a));elseif(disc>1e-6){x1=(-b+sqrt(disc)/(2*a));x2=(-b-sqrt(disc)/(2*a));printf("x1=%8.4f,x2=%8.4f\n",x1,x2);}else{p=-b/(2*a);q=sqrt(-disc/(2*a));printf("%8.4f+%x8.4fi\n",p,q);printf("%8.4f-%8.4fi\n",p,q);}}}5.按托运规则,行李不超过50公斤时,运费为0.15元/公斤,如超过50公斤,超过部分的运费为0.22元/公斤,现有行李w公斤,编写一个程序计算运费。解:#include<stdio.h>main(){floatw,f,x;printf("weight:");scanf("%f",&w);if(w<=50)x=0.15*w;elsex=0.15*50+0.22*(w-50);printf("money:%6.2fyuan\n",x);}本程序运行结果为:weight:20<CR>money:3.00yuanweight:60<CR>money:9.70yuan6.某商场给与顾客购物的折扣率如下:购物金额<200元不打折500元>购物金额>=200元9折1000元>购物金额>=500元8折购物金额>=1000元7.5折输入一个购物金额,输出打折率、购物实际付款金额。#include<stdio.h>main(){floatx,y,realx;scanf("%f",&x);if(x<=0){printf("Error!Youinputaworrynumber!\n");y=0;}else{if(x<200)y=1.0;elseif(x<500)y=0.9;elseif(x<1000)y=0.8;elsey=0.75;}if(y!=0){realx=x*y;printf("y=%f,therealx=%5.2f\n",y,realx);}}项目实训某托儿所收2岁到6岁的孩子,2岁、3岁孩子进小班(Lowerclass);4岁孩子进中班(Middleclass);5岁、6岁孩子进大班(Higherclass)。编写程序(用if语句和switch语句),输入孩子年龄,输出年龄及进入的班号。如:输入:3,输出:age:3,enterLowerclass。#include<stdio.h>main(){intage;printf("Pleaseinputyourbaby'sage:");scanf("%d",&age);if(age>6||age<2)printf("Sorry,yourbabycan'tenter!");elseswitch(age);{case2:case3:printf("age:%d,enterLowerclass\n",age);break;case4:printf("age:%d,enterMiddleclass\n",age);break;case5:case6:printf("age:%d,enterHigherclass",age);break;}}第五章循环结构程序设计一、选择题CCAADD三、操作题1.求s=1+3+5+7+…100的值。#include"stdio.h"main(){inti,sum=0;for(i=1;i<=100;i+=2)sum=sum+i;printf("sum=%d",sum);}2.输入班级学生考试成绩,求考试平均成绩。约定当输入负数时,表示输入结束。main(){floatsum=0,score,ave;intn=0;scanf("%f",&score);while(score>0){n++;sum=sum+score;scanf("%f",&score);}ave=sum/n;printf("\nTheaveragescoreis%.2f",ave);}3.输入一行字符以@作结束标志,分别统计其中英文字母、空格、数字和其它字符的个数。#include"stdio.h"main(){charch;intcha=0,space=0,digit=0,other=0;while((ch=getchar())!='@'){if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')cha++;elseif(ch=='')space++;elseif(ch>='0'&&ch<='9')digit++;elseother++;}printf("\ncha=%d,space=%d,digit=%d,other=%d",cha,space,digit,other);}4.一张纸的厚度为0.1毫米,珠穆琅玛峰的高度为8848.13米,假如纸张有足够大,将纸对折多少次后可以超过珠峰的高度?main(){floath=8848.13,h0=0.0001,h1;intm=0;h1=h0;while(h0<=h){h0=2*h0;printf("\nm=%d,high=%f",m,h0);m++;}printf("\nm=%d\n",m-1);}编写一个程序求出满足下列条件的四位数,该数是一个完全平方数;第一、三位上数之和为10,第二、四位上数之积为12。解:#include<stdio.h>main(){inti,j,a,b,c,d;for(i=32;i<=99;i++){j=i*i;a=j/1000;b=j/100-a*10;c=j/10-a*100-b*10;d=j-a*1000-b*100-c*10;if(a+c==10&&b*d==12)printf("%d",j);}}本程序运行结果为:12969216一个正数与3的和是5的倍数,与3的差是6的倍数,编写一个程序求符合条件的最小数。解:#include<stdio.h>main(){intn;n=1;while(1){n=n+1;if((n+3)%5==0&&(n-3)%6==0)break;}printf("n=%d",n);}本程序运行结果为:n=27已知xyz+yzz=532,其中x、y、z都是数字,编写一个程序求出x、y、z分别是多少。解:#include<stdio.h>main(){intx,y,z,i;for(x=1;x<=9;x++)for(y=1;y<=9;y++)for(z=0;z<=9;z++){ i=100*x+10*y+z+100*y+10*z+z; if(i==532)printf("x=%d,y=%d,z=%d\n",x,y,z);}}本程序运行结果为:x=3,y=2,z=18、学校有近千名学生排队,5人一行余2人,7人一行余3人,3人一行余1人,求学生人数。解:#include<stdio.h>main(){intn;for(n=1000;n>=10;n--)if(n%5==2&&n%7==3&&n%3==1)break;printf("n=%d\n",n);}本程序运行结果为:n=9979.验证歌德巴赫猜想:任意一个大于6的偶数均可表示为两个质数的和。#include<stdio.h>main(){inti,x;intp,q,k1,k2;printf("Pleaseinputanodddata(>=6):");scanf("%d",&x);for(p=3;p<=x/2;p+=2){k1=k2=1; q=x-p;if(p>2)for(i=2;i<p;i++)if(p%i==0)k1=0;for(i=2;i<q;i++)if(q%i==0)k2=0;if(k1==1&&k2==1)printf("%d=%d+%d\n",x,p,q);}}10.一个数恰好等于它的平方数的右端,这个数称为同构数。如:5的平方是25,25的平方是625。找出1~1000之间的全部同构数。#include"math.h" main() {inti,j,k=0; for(i=2;i<1000;i++) {if(i/10==0)j=1;/*因为i是整型,所以是整除*/ elseif(i/100==0)j=2; elseif(i/1000==0)j=3; if((longint)i*i%(int)pow(10,j)==i)/*同构数的定义*/ {k++; /*计数器*/ printf("%10d",i); if(k%5==0)printf("\n");}} printf("\nk=%d",k); }项目实训1.编写程序求1-1/2+1/3-1/4+…+1/99-1/100的值#include"stdio.h"main(){inti,s=-1;floatsum=1.0;for(i=2;i<=100;i++)sum=sum+1.0*s/i;printf("sum=%f",sum);}2.曾有一位印度国王要奖赏他的聪明能干的宰相达依尔。达依尔只要求在国际象棋的棋盘格上放置小麦粒,第一格放1粒,第二格放两粒,第三格放4粒,第四格放8粒,……,最后能有多少小麦粒呢?main(){floati,s=1,t=1;for(i=1;i<=63;i++){t*=2;s+=t;}printf("s=%f\n",s);}3.打印水仙花数,即一个三位数各位上的数字之和等于它本身,如:153=13+53+33。main(){intk1,k2,k3,i;for(k1=1;k1<=9;k1++)for(k2=0;k2<=9;k2++)for(k3=0;k3<=9;k3++){i=k1*k1*k1+k2*k2*k2+k3*k3*k3; if(i==k1*100+k2*10+k3) printf("\n%d=%d^3+%d^3+%d^3",i,k1,k2,k3);}}4.编制电视歌手大奖赛评分程序,要求评委人数和每位评委的打分从键盘输入,去掉一个最高分,再去掉一个最低分,求评委给出的最后得分。main()/*TV大奖赛*/{intn,i=1;floatx,max,min,sum=0;printf("\nPleaseinputthenumberofscore:");scanf("%d",&n);printf("\nInputscore:");scanf("%f",&x);max=x;min=x;sum=x;while(i<n){i++;scanf("%f",&x);sum+=x;if(max<x)max=x;elseif(x<min)min=x;}sum=(sum-max-min)/(n-2);printf("Thelastscoreis%8.2f\n",sum);}5.打印下列图形。*************************main(){inti,j;for(i=1;i<=5;i++){for(j=1;j<=5-i;j++) printf("");for(j=1;j<=5;j++) printf("*"); printf("\n");}}第六章数组一、选择题DADAACCAD二、程序阅读题131313131313三、上机实训题1、分别用冒泡法和选择排序法对十个随机整数进行排序。参考教材2、编写一个程序计算字符串中值为x(x由键盘输入)的字符个数。#include"stdio.h"#include"string.h"main(){chara[20],x;intn=0,i=0;printf("\nPleaseinputstring,endofenterkey:");gets(a);printf("\nPleaseinputx:");x=getchar();while(a[i]!='\0'){if(a[i]==x)n++;i++;}printf("\n%d",n);} if(x[i]>ave)printf("%f",x[i]);}3、编写一个程序判定用户输入的正数是否为“回文数”,所谓回文数是指数正读反读都相同。#include<stdio.h>main(){intbuffer[10],i,k,b;longnumber,n;printf("inputapositivenumber:");scanf("%ld",&number);k=0;n=number;do{buffer[k]=n%10;k=k+1;n=n/10;}while(n!=0);b=1;for(i=0;i<=(k-1)/2;i++)if(buffer[i]!=buffer[k-1-i])b=0;if(b)printf("%ldishuiwenshu\n",number);elseprintf("%ldisnothuiwenshu\n",number);}4、求二维数组的周边元素之和#include<stdio.h>main(){inta[3][3]={{3,-2,1,2},{0,1,3,-2},{3,1,0,4}};inti,j,sum=0;for(i=0;i<3;i++)for(j=0;j<3;j++)for(i=0;i<3;i++)if(i==0||j==0||j==2||i==2)sum=sum+a[i][i];printf("%d",sum);}5、编写程序找出一个二维数组的鞍点。即该位置上的元素在该行最大,但是在该列最小。main(){inti,j,k,max,maxi,maxj,flag1,flag2;inta[2][3]={{1,2,3},{4,5,6}};flag2=0;for(i=0;i<2;i++){max=a[i][0];for(j=0;j<3;j++) if(a[i][j]>max){max=a[i][j];maxj=j;}for(k=0,flag1=1;k<2&&flag1;k++) if(a[k][maxj]<max)flag1=0;if(flag1){printf("\n%disanswer,locate:line%dcolum%d\n",max,i,maxj); flag2=1;}}if(!flag2)printf("\nnoanswer!");}项目实训:1、评定奥运会某参赛选手的成绩。设某参赛选手的某项目有8位评委,要求去掉一个最高分和一个最低分,给出其最后得分。#include<stdio.h>#defineN10 /*定义字符常量*/main(){intx[N],i,max,min,score=0;printf("Pleaseinput%dintegers:\n",N); /*输入N个数,存入数组中*/for(i=0;i<N;i++){scanf("%d",&x[i]);score+=x[i];} /*赋初值*/max=min=x[0]; /for(i=1;i<N;i++){if(max<x[i])max=x[i]; /*求最大值*/if(min>x[i])min=x[i]; /*求最小值*/}printf("Thelastscoreis:%d\n",(score-max-min)/(N-2);}2、打印出以下杨辉三角形(要求打印出10行)。1121133114641…………#defineN11main(){inti,j,a[N][N];for(i=1;i<N;i++){a[i][i]=1;a[i][1]=1;}for(i=3;i<N;i++)for(j=2;j<=i-1;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=1;i<N;i++){for(j=1;j<=i;j++)printf("%6d",a[i][j]);printf("\n");}printf("\n");}#defineN11main(){inti,j,a[N][N];for(i=1;i<N;i++){a[i][i]=1;a[i][1]=1;}for(i=3;i<N;i++)for(j=2;j<=i-1;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=1;i<N;i++){for(j=1;j<=i;j++) printf("%6d",a[i][j]);printf("\n");}printf("\n");}本程序的运行结果为:111121133114641151010511615201561172135352171182856705628811936841261268436913、一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中。不用strcpy函数。拷贝时,‘\0’也要拷贝过去。‘\0’后面的字符不拷贝。解:#include"stdio.h"main(){charfrom[80],to[80];inti;printf("Inputstring:");scanf("%s",from);for(i=0;i<=strlen(from);i++)to[i]=from[i];printf("theresult:%s\n",to);}本程序的运行结果为:theresult:Inputstring:student第七章函数一、选择题BDCBBDAAD三、编程题1、写一个判定偶数的函数,在主函数中输入一个整数,输出是否是偶数的信息。inteven(x)intx;{if(x%2==0)return(1);elsereturn(0);}main(){intx;scanf("%d",&x);if(even(x))printf("xiseven.");elseprintf("xisnoteven.");}2、统计400~499这些数中4这个数字出现的次数,要求判断一个数有几位4这个数字用函数实现。main() {inti,k=0; for(i=400;i<=499;i++) k=k+num(i); printf("number=%d\n",k);} num(x) intx; {inty,k=0; while(x!=0){y=x%10; if(y==4)k++; x=x/10;} return(k);}3、找出1000之内的所有“完数”,要求判断一个数是否为完数用函数实现。main() {inti; for(i=1;i<1000;i++) if(wan(i))printf("%5d",i); printf("\n"); } wan(x) intx; {inti,k; k=0; for(i=1;i<=x/2;i++) if(x%i==0)k=k+i; if(k==x)return(1); elsereturn(0);}项目实训:1、已有变量定义和函数调用语句:intx=57;isprime(x);函数isprime()用来判断一个整型数a是否为素数,若是素数,函数返回1,否则返回0。请编写isprime函数。isprime(inta){}解:main(){intx=57;intisprime(int);if(isprime(x))printf(“%disprime.”,x);elseprintf(“%disnotprime.”,x);}isprime(inta){inti;for(i=2;i<sqrt((double)a);i++)if(a%i==0)return0;return1;}2、输入10个学生的成绩,分别用函数实现:(1)求平均成绩;(2)按分数高低进行排序并输出。解:main(){floataverage(floatb[]);voidsort(floatb[]);floata[10],j,aver;printf("input10:");for(j=0;j<10;j++)scanf("%f",&a[j]);aver=average(a);printf("aver=%.2f\n",aver);sort(a);for(j=0;j<10;j++)printf("%10.2f",a[j]);}floataverage(floatb[]){intj;floatsum=0,aver;for(j=0;j<10;j++)sum=sum+b[j];aver=sum/10.0;return(aver);}voidsort(floatb[]){inti,j,max,k;for(i=0;i<10;i++){max=b[i];k=i; for(j=i+1;j<10;j++) if(max<b[j]) {max=b[j];k=j;} b[k]=b[i]; b[i]=max; }}本程序运行结果为:input10:45128685798485964589<cr>(输入)aver=70.6096.0089.0086.0085.0085.0084.0079.0045.0045.0012.00第8章指针一、选择题DACC(D)DCD二、填空题1.m2.指针数组名3.ABCDCD4.495.25三、程序设计题(1)main(){inta,b,c,*p1,*p2,*p3;scanf("%d,%d,%d",&a,&b,&c);p1=&a;p2=&b;p3=&c;if(*p1<*p2)max=*p1elsemax=*p2;if(*p3<max)max=*p3;printf("\nmax=%d\n",max);}程序结果:9,0,10<回车>max=10(2)#include<stdio.h>main(){inta[10],*p,i,t;p=a;for(i=0;i<10;i++)scanf("%d",p+i);for(i=0;i<5;i++){t=*(p+i);*(p+i)=*(p+9-i);*(p+9-i)=t;}for(i=0;i<10;i++)printf("%5d",*(p+i));printf("\n");}(3)#include<stdio.h>main(){charstr[80],*p,i,len=0;p=str;gets(p);for(i=0;*(p+i)!='\0';i++)len++;printf("len=%d\n",len);}项目实训题目:#include<stdio.h>char*link(char*p1,intM,char*p2,intN){inti,j;for(i=0;i<M;i++)if(*(p1+i)=='\0')break;for(j=0;j<N;j++)if(*(p2+j)!='\0')*(p1+(i++))=*(p2+j);elsebreak;*(p1+i)='\0';return(p1);}main(){charstr1[80],str2[20],*p;gets(str1);gets(str2);p=link(str1,80,str2,20);puts(p);}第9章结构体共同体和枚举类型程序设计题1.定义一个结构体变量来表示日期(包括年、月、日),并编程来计算某一日期是本年的第几天,注意考虑闰年的问题。解:struct{intyear;intmonth;intday;}date;main(){intdays;printf("Pleaseinputdate:(year,month,day)");scanf("%d,%d,%d",&date.year,&date.month,&date.day);switch(date.month){case1:days=date.day;break;case2:days=date.day+31;break;case3:days=date.day+59;break;case4:days=date.day+90;break;case5:days=date.day+120;break;case6:days=date.day+151;break;case7:days=date.day+181;break;case8:days=date.day+212;break;case9:days=date.day+243;break;case10:days=date.day+273;break;case11:days=date.day+304;break;case12:days=date.day+334;break;}if((date.year%4==0&&date.year%100!=0||date.year%400==0)&&date.month>=3)days+=1;printf("\n%dmonth%ddayis%ddayof%d.",date.month,date.day,days,date.year);}本程序运行结果为:Pleaseinputdate:(year,month,day)2000,3,13month1dayis61dayof2000.2、有10名学生,每个学生包括学号、姓名、3科成绩,编程序求每个学生的平均成绩,并打印最高分学生的信息。#defineN4main(){structstudent {intnum; charname[15]; floatc[3]; floatave;};structstudentstu[N];structstudent*p[N],*t;inti,j,k;floatx1,x2,x3;for(i=0;i<N;i++){scanf("%d%s%f%f",&stu[i].num,stu[i].name,&x1,&x2,&x3);stu[i].c[0]=x1;stu[i].c[1]=x2;stu[i].c[2]=x3;k=0;for(j=0;j<=2;j++)k=k+stu[i].c[j];stu[i].ave=k/3.0;p[i]=&stu[i];}/*排序-由大到小*/for(i=0;i<N-1;i++)for(j=i+1;j<N;j++)if(p[j]->ave<p[i]->ave){t=p[j];p[j]=p[i];p[i]=t;}printf(“%5d%15s%3d%3d%6.1f\n”,p[0]->num,p[i]->name, p[0]->c[0],p[0]->c[1],p[0]->c[2]);} 3、建立一个3名学生数据的单链表。解:#defineNULL0#defineLENsizeof(structstudent)structstudent{intno;structstudent*next;};structstudent*head;structstudent*creat(){structstudent*p,*q;intn,i;printf("howmany:");scanf("%d",&n);for(i=0;i<n;i++){p=(structstudent*)malloc(LEN);printf("NO:");scanf("%d",&p->no);if(i==0)head=p;elseq->next=p;q=p;}p->next=NULL;return(head);}print(structstudent*head){structstudent*p;p=head;while(p!=NULL) {printf("%6d",p->no);p=p->next;}}main(){structstudent*head;head=creat();print(head);}本程序运行结果为:howmany:5<cr>NO:12<cr>NO:78<cr>NO:98<cr>NO:45<cr>NO:75<cr>(以上为输入)1278984575实训题(1)图书馆的图书检索上包括:书名、整理姓名、出版日期、登录号、书价等内容。试根据上述五项内容定义一个结构体类型,声明结构体变量book,再从键盘为变量book输入数据,并从屏幕输出数据。(2)构体数组(可以使用链表),将5名考生数据输入计算机,并列表从屏幕输出。编写函数,通过调用函数实现:找出成绩最高的考生的有关信息,并在屏幕上输出。按考生准考证号码由大到小排序。考生数据包括:准考证号码、姓名、性别、年龄、成绩。解:(1)struct{charname[20];charauthor[20];chardate[10];intloadno;floatprice;}book;main(){printf("enterbooknameauthordateloadnoprice:\n");scanf("%s%s%s%d%f",&,&book.author,\&book.date,&book.loadno,&book.price); printf("booknameauthordateloadnoprice:\n");printf("%-10s%-10s%-10s%-6d%-6.2f",,book.author,\book.date,book.loadno,book.price);}本程序结果是:enterbooknameauthordateloadnoprice:ctanhaoqiang1982.611930.00booknameauthordateloadnoprice:Ctanhaoqiang1982.611930.00(2)structstudent{intnumber;charname[10];charsex;intage;floatscore;}st[5];input_sc(s)structstudents[];{inti,j;floath;for(i=0;i<5;i++){printf("Pleaseinputnumber,sex,age,score,name:\n");scanf("%d,%c,%d,%f,%s",&s[i].number,&s[i].sex,&s[i].age,&h,s[i].name);s[i].score=h;}}output_sc(s)structstudents[];{inti;printf("numbernamesexagescore:\n");for(i=0;i<5;i++){printf("%-8d",s[i].number);printf("%-4s",s[i].name);printf("%-5c",s[i].sex);printf("%-5d",s[i].age);printf("%-7f",s[i].score);printf("\n");}}max_st(s)structstudents[];{inti,max=0,k=0;for(i=0;i<5;i++)if(max<s[i].score)max=s[i].score;printf("maxis:\n");for(i=0;i<5;i++)if(s[i].score==max){printf("%-8d",s[i].number);printf("%-4s",s[i].name);printf("%-5c",s[i].sex);printf("%-5d",s[i].age);printf("%-7f",s[i].score);printf("\n");}}sort(s)structstudents[];{inti,j,n,m;chara[10],c;floatt;for(i=0;i<5;i++)for(j=0;j<4;j++)if(s[j].score>s[j+1].score){n=s[j].number;strcpy(a,s[j].name);c=s[j].sex;m=s[j].age;t=s[j].score;s[j].number=s[j+1].number;strcpy(s[j].name,s[j+1].name);s[j].sex=s[j+1].sex;s[j].age=s[j+1].age;s[j].score=s[j+1].score;s[j+1].number=n;strcpy(s[j+1].name,a);s[j+1].sex=c;s[j+1].age=m;s[j+1].score=t;}}main(){inti;structstudentst[5];clrscr();input_sc(st);output_sc(st);max_st(st);sort(st);printf("formbigtosmall:\n");output_sc(st);}本程序结果是:Pleaseinputnumber,sex,age,score,name:1,m,23,90,liPleaseinputnumber,sex,age,score,name:2,n,22,89,liuPleaseinputnumber,sex,age,score,name:3,m,23,99,wuPleaseinputnumber,sex,age,score,name:4,m,22,99,guoPleaseinputnumber,sex,age,score,name:5,n,22,78,zhunumbernamesexagescore:1lim2390.0000002liun2289.0000003wum2399.0000004guom2299.0000005zhun2278.000000maxis:3wum2399.0000004guom2299.000000for
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省青岛市崂山区第二中学2027届高二物理第一学期期末学业水平测试试题含解析
- 山东省德州市平原中英文实验高级中学2027届高一物理第一学期期中复习检测模拟试题含解析
- 青海省西宁市大通县第一中学2027届物理高二第一学期期中监测模拟试题含解析
- 2027届湖北省宜昌县域高中协同发展共合体高一上物理期中监测模拟试题含解析
- 甘肃武威市凉州区2027届物理高二上期中达标检测试题含解析
- 2027届江苏省侯集高级中学物理高二上期末质量跟踪监视试题含解析
- 湖南省娄底市2027届高一物理第一学期期中调研模拟试题含解析
- 2027届安徽省蚌埠市第一中学高三上物理期中质量检测模拟试题含解析
- 2027届山西省吕梁市物理高三上期中经典试题含解析
- GB/T 25115.3-2026工业洗涤机械的安全要求第3部分:隧道式洗涤机组和相关机械
- 新版(2026秋)人教版(新教材)六年级数学上册全册教案合集
- 初中数学八年级上册《因式分解》单元教案
- 2026磷化集团 面试题及答案
- 新生儿脑出血外科治疗
- 2026人教版五年级数学上册第一单元第1课《观察简单组合体(1)》课件
- 2026年秋季冀人版小学科学四年级上册教学计划
- 领取现金协议书样本
- 2026-2030中国心律管理系统行业市场发展趋势与前景展望战略分析研究报告
- 2026中级注册安全工程师《安全生产技术基础》培训课件
- 广东能源微藻减排转化利用火电机组二氧化碳产业化示范工程项目环境影响报告表
- 教辅材料征订申请表
评论
0/150
提交评论