




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课后习题答案第一章习题答案一、选择题1〜5:BDCDA6〜10:DABBB11〜12:CC二、填空题1、main()2、函数首部,函数体3、函数4、编辑、编译、连接、运行5、.cpp、.obj、.exe6、;或分号#include<stdio.h>voidmain(){三、编程题#include<stdio.h>voidmain(){TOC\o"1-5"\h\z/*包含标准库的信息*//*定义名为main的函数,它不接受参数值*//*main函数的语句都被括在花括号中*/printf("hello,world'n");/*main函数调用库函数printf/*main函数调用库函数printf以显示字符序列,其中\n代表换行符*/}第二章习题答案、选择题1〜5:CBABB6〜10:CDCDD11〜15:CADBC16〜20:BDAAD二、填空题1、整型,实型,字符型,枚举类型2、13、94、123535145、2,16、2,27、102008、a=149、2,3,110、double第三章习题答案1/20一、选择题1〜5:CBBBC6〜10:DDDBB二、填空题1、控制语句,表达式语句,复合语句2、;3、(}4、15、a6、c:dec=120,oct=170,hex=78,ASCII=x7、32767,327678、10,A,109、33123.456001□□□□□1231456123.45608765.456700□□□□S7S5.4578765.4567⑺8765.4567三、编程题1、参考答案:#include<stdio.h>voidmain()(inta,b,c;longintu,n;floatx,y,z;charc1,c2;a=3;b=4;c=5;x=1.2;y=2.4;z=-3.6;u=51274;n=128765;c1='a';c2='b';printf("\n");printf("a=%2db=%2dc=%2d\n",a,b,c);printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x,y,z);printf("x+y=%5.2fy+z=%5.2fz+x=%5.2f\n",x+y,y+z,z+x);2/20printf("u=%6ldn=%9ld\n",u,n);printf("c1='%c'or%d(ASCII)\n",c1,c1);printf("c2='%c'or%d(ASCII)\n",c2,c2);}2、参考答案:#include<stdio.h>voidmain(){floata,b,c,t;printf("pleaseinputa,b,c:\n");scanf("%f,%f,%f",&a,&b,&c);t=(a+b+c)/3;printf("averageof%6.2f、%6.2fand%6.2fis%6.2f\n",a,b,c,t);}3、参考答案:#include<stdio.h>main(){intR,d;floats;printf("请输入圆的半径");scanf("%d",&R);d=2*R;c=2*3.14159*R;printf("d=%d,c=%f\n",d,c);}4、参考答案:#include<stdio.h>voidmain(){inth,f,x,y;/*x为鸡的数量,y为兔的数量*/printf("请输入鸡兔的总头数h,总脚数f:");scanf("%d%d",&h,&f);x=(4*h-f)/2;y=(f-2*h)/2;printf("笼中有鸡%d只,有兔%d只。\n",x,y);}第四章习题答案一、选择题CDDDDCDBBC二、填空题3/201、&&,||,!,!,||2、(y%20)3、14、(a+b>c&&a+c>b&&b+c>a)5、2336、7三、编程题1、参考答案:#include<stdio.h>voidmain(){intx;scanf("%d",&x);if(x%50&&x%70)printf("yes'n");elseprintf("no'n");}2、参考答案:#include<stdio.h>voidmain(){inta,b,c,max;printf("请输入三个整数:%%d%%d%%d'n");scanf("%d%d%d",&a,&b,&c);if(a>=b)if(a>=c)max=a;elsemax=c;elseif(b>=c)max=b;elsemax=c;printf("\n最大数为:%d\n",max);}3、参考答案:#include<stdio.h>voidmain(){floatx,y;printf("请输入x的值:");4/20scanf("%f",&x);if(x<1)y=1;elseif(x<10)y=2*x-1;elsey=3*x-11;printf("y=%.2f\n",y);)4、参考答案:#include<stdio.h>voidmain(){intyear;floatmoney,rate,total;/*money:本金rate:月利率total:本利合计*/printf("Inputmoneyandyear=?");scanf("%f%d",&money,&year);/*输入本金和存款年限*/if(year1)rate=0.00315;/*根据年限确定利率*/elseif(year2)rate=0.00330;elseif(year3)rate=0.00345;elseif(year5)rate=0.00375;elseif(year8)rate=0.00420;elserate=0.0;total=money+money*rate*12*year;/*计算到期的本利合计*/printf("Total=%.2f\n",total);)第五章习题答案一、选择题1〜5:ACCBA6〜10:ACDCB二、填空题1、(1)i<=9或i<10(2)j%3!=02、73、(1)ch=ch+1、(2)printf("\n")三、编程题1、参考答案:#include<stdio.h>5/20voidmain(){inti=2;longp=1;do{p=p*i;i=i+2;}while(i<10);printf("2*4*6*8=%ld\n",p);}2、参考答案:#include<stdio.h>voidmain(){intn=0;charc;c=getchar();while(c!='\n'){if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))n++;c=getchar();}printf("%d\n",n);}3、参考答案:#include<stdio.h>voidmain(){inta,max;scanf("%d",&a);max=a;while(a!=0){scanf("%d",&a);if(max<a)max=a;}printf("%d",max);}4、参考答案:#include<stdio.h>voidmain(){intday=0,buy=2;floatsum=0.0,ave;6/20do(sum+=0.8*buy;day++;buy*=2;)while(buy<=100);ave=sum/day;printf(%f”,ave);)5、参考答案:#include<stdio.h>voidmain(){intf1,f2,f5,count=0;for(f5=0;f5<=20;f5++)for(f2=0;f2<=(100-f5*5)/2;f2++){f1=100-f5*5-f2*2;if(f5*5+f2*2+f1100)printf("No.%2d>>5:%4d2:%4d1:%4d\n",++count,f5,f2,f1);)printf("共有%d种换法”,count);)6、参考答案:#include<stdio.h>voidmain(){inti,j,n;printf("\nPleaseEntern:");scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n-i;j++)printf("");for(j=1;j<=2*i-1;j++)printf("*");printf("\n");))7、参考答案:#include<stdio.h>voidmain(){inti,j;7/20floatg,sum,ave;for(i=1;i<=6;i++)(sum=0;for(j=1;j<=5;j++)(scanf(%f",&g);sum+=g;}ave=sum/5;printf(No.%dave=%5.2f\n”,i,ave);}}8、参考答案:#include<stdio.h>voidmain(){intn,t,number=20;floata=2,b=1,s=0;for(n=1;n<=number;n++){s=s+a/b;t=a;a=a+b;b=t;}printf("s=%9.6f\n",s);}第六章习题答案一、选择题1〜5:CBABD6〜10:CDBCD二、填空题1、库函数(或系统函数),自定义函数2、无参函数,有参函数3、传值方式4、实参,形参5、136、maxis27、158/208、1,2,3三、编程题1、参考答案:#include<stdio.h>intis_prime(inta){inti,p=1;for(i=2;i<a-1;i++)if(a%i0){p=0;break;}return(p);}voidmain(){inti=11;if(is_prime(i))printf("1");elseprintf("0");}2、参考答案:#include<stdio.h>intgongyue(intnum1,intnum2){inttemp,a,b;if(num1<num2){temp=num1;num1=num2;num2=temp;}a=num1;b=num2;while(b){temp=a%b;a=b;b=temp;}return(a);}voidmain(){inti=12,j=8;printf("%d",gongyue(i,j));}第七章习题答案一、选择题1〜5:BDDCC6〜10:CDCAB二、填空题1、字符、19/202、23、c:\win98\cmd.exe4、1,2,3,4,5,6,7,8,9,05、3256786、1,0,7,0,7、43328、(1)j=2(2)j>=i三、编程题1、参考答案:#include<stdio.h>voidmain(){inti,a[20],s,count;s=count=0;for(i=0;i<20;i++)scanf("%d”,&a[i]);for(i=0;i<20;i++){if(a[i]<0)continue;s+=a[i];count++;}printf("s=%d\tcount=%d\n",s,count);}2、参考答案:#include<stdio.h>voidmain(){inta[3][4],i,j,max;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);max=a[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++)if(a[i][j]>max)max=a[i][j];printf("max=%d\n",max);}3、参考答案:#include<stdio.h>voidmain()10/20{inta[11]={3,4,7,9,10,13,14,15,18,20);inti,j,n;scanf("%d",&n);i=0;while(i<10){if(n<a[i]){for(j=10;j>i;j--)a[j]=a[j-1];a[i]=n;break;)i++;)if(i>=10)a[10]=n;for(i=0;i<11;i++)printf("%4d",a[i]);)第八章习题答案一、选择题1?5ABCCB6?10DACBB11?15DACCC二、填空题1.(1)*(2)&(1)*p(2)**a(3)210*p>*s*(++p)三、编程题1.编程实现从键盘输入一个字符串,#include<stdio.h>#include<string.h>voidInverse(char*pStr)?main(){charstr[80]?printf("Inputastring:\n")?gets(str)?Inverse(str)?将其字符顺序颠倒后重新存放,并输出这个字符串。/*输入字符串*//*将存于str数组中的字符串逆序存放*/printf("Theinversedstringis:\n")?11/20puts(str)?/*输出字符串*/)/*函数功能:实现字符串逆序存放函数参数:字符指针变量,所指向的存储单元存放源字符串,逆序后的字符串也存放于此返回值:无*/chartemp?char*pStart?chartemp?char*pStart?char*pEnd?len=strlen(pStr)?/*指针变量pStart指向字符串的第一个字符*/*//*指针变量pEnd指向字符串的最后一个字符*//*求出字符串长度*/for(pStart=pStr,pEnd=pStr+len?1?pStart<pEnd?pStart++,pEnd??)(temp=*pStart?*pStart=*pEnd?*pEnd=temp?))2.从键盘任意输入10个整数,用函数编程实现计算最大值和最小值,并返回它们所在数组中的位置。#include<stdio.h>intFindMax(intnum口,intn,int*pMaxPos)?intFindMin(intnum[],intn,int*pMinPos)?main()(intnum[10],maxValue,maxPos,minValue,minPos,i?printf("Input10numbers:\n")?for(i=0?i<10?i++)(scanf("%d”,&num[i])?/*输入10个数*/)maxValue=FindMax(num,10,&maxPos)?/*找最大值及其所在下标位置*/minValue=FindMin(num,10,&minPos)?/*找最小值及其所在下标位置*/printf("Max=%d,Position=%d,Min=%d,Position=%d\n",maxValue,maxPos,minValue,minPos)?)/*函数功能:求n个数中的最大值及其所在下标位置函数入口参数:整型数组num,存储n个整数,整型变量n,表示数组元素个数函数出口参数:整型指针变量pMaxPos,指向的地址单元存储最大值在数组中的下标位置函数返回值:最大值*/intFindMax(intnum[],intn,int*pMaxPos)12/20inti,max?max=num[0]?/*假设num[0]为最大*/*pMaxPos=0?/*假设最大值在数组中的下标位置为0*/for(i=1?i<n?i++)(if(num[i]>max)(max=num[i]?*pMaxPos=i?}}returnmax?}/*函数功能:求n个数中的最小值及其所在下标位置函数入口参数:整型数组num,存储n个整数,整型变量n,表示数组元素个数函数出口参数:整型指针变量pMinPos,指向的地址单元存储最小值在数组中的下标位置函数返回值:最小值*/intFindMin(intnum[],intn,int*pMinPos)(inti,min?min=num[0]?/*假设num[0]为最小*/*pMinPos=0?/*假设最小值在数组中的下标位置为0*/for(i=1?i<10?i++)(if(num[i]<min)(min=num[i]?*pMinPos=i?}}returnmin?}3.将5个字符串从小到大排序后输出。#include<stdio.h>voidmain(void){inti?char*pcolor[5]={"red","blue","yellow","green","purple"}?voidfsort(char*color[],intn)?fsort(pcolor,5)?for(i=0?i<5?i++)printf("%s",pcolor[i])?}voidfsort(char*color[],intn)13/20{intk,j?char*temp?for(k=1?k<n?k++)for(j=0?j<n?k?j++)if(strcmp(color[j],color[j+1])>0){temp=color[j]?color[j]=color[j+1]?color[j+1]temp?}}4.编写一个能对任意mxn阶矩阵进行转置运算的函数Transpose。。#include<stdio.h>#defineROW3#defineCOL4voidTranspose(int(*a)[COL],int(*at)[ROW],introw,intcol)?voidInputMatrix(int(*s)[COL],introw,intcol)?voidPrintMatrix(int(*s)[ROW],introw,intcol)?main(){ints[ROW][COL]?/*s代表原矩阵*/intst[COL][ROW]?/*st代表转置后的矩阵*/printf("Pleaseentermatrix:\n")?InputMatrix(s,ROW,COL)?/*输入原矩阵,s指向矩阵s的第0行,是行指针*/Transpose(s,st,ROW,COL)?/*对矩阵s进行车专置,结果存放于st中*/printf("Thetransposedmatrixis:\n")?PrintMatrix(st,COL,ROW)?/*输出转置矩阵,*st指向st的第0行,是行指针*/}/*函数功能:对任意row行col列的矩阵转置函数入口参数:指向一维整型数组的指针变量a,指向单元存放转置前的矩阵元素整型变量row,矩阵的行数即二维整型数组的行数整型变量col,矩阵的列数即二维整型数组的列数函数出口参数:指向一维整型数组的指针变量at,指向单元存放转置后的矩阵元素函数返回值:无*/voidTranspose(int(*a)[COL],int(*at)[ROW],introw,intcol){inti,j?for(i=0?i<row?i++){for(j=0?j<col?j++){*(*(at+j)+i)=*(*(a+i)+j)?}14/20)voidInputMatrix(int(*s)[COL],introw,intcol)/*输入矩阵元素*/(inti,j?for(i=0?i<row?i++)(for(j=0?j<col?j++)(scanf("%d”,*(s+i)+j)?/*这里*(s+i)+j等价于&s[i][j]*/))}voidPrintMatrix(int(*s)[ROW],introw,intcol)/*输入矩B$元素*/(inti,j?for(i=0?i<row?i++)(for(j=0?j<col?j++)(printf("%d\t",*(*(s+i)+j))?/*这里*(*(s+i)+j)等价于s[i][j]*/}printf("\n")?}}第九章习题答案一、选择题1?5BDDAC6?10BCADC二、填空题structDATAd={2006,10,1}?sizeof(structnode)person[i].sex4.13431(1)structnode*(2)*s(3)p三、编程题.定义一个能正常反映教师情况的结构体teacher,包含教师姓名、性别、年龄、所在部门和薪水;定义一个能存放两人数据的结构体数组tea,并用如下数据初始化:{{Mary:,W?40,,Computer?,1234},{Andy:',M?55,.English?,1834}};要求:分别用结构体数组tea和指p输出各位教师的信息,写出完整定义、初始化、输出过程。15/20#include<stdio.h>structteacher{charname[8]?charsex?intage?chardepartment[20]?floatsalary?}?structteachertea[2]={{"Mary",'W,40,"Computer",1234},{"Andy",'M',55,"English”,1834}}?main(){inti?structteacher*p?for(i=0?i<2?i++)printf("%s,\t%c,\t%d,\t%s,\t%f”,tea[i].name,tea[i].sex,tea[i].age,tea[i].department,tea[i].salary)?for(p=tea?p<tea+2?p++)printf("%s,\t%c,\t%d,\t%s,\t%f",p?>name,p?>sex,p?>age,p?>department,p?>salary)?}.定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。#include<stdio.h>struct{intyear?intmonth?intday?}date?main(){intdays?printf(I'hputyear,month,day:")?scanf(%d,%D,%d”,&date.year,&date.month,&date.day)?switch(date.month){case1:days=date.day?break?days=date.day+31?break?days=date.day+59?break?days=date.day+90?break?days=date.day+120?break?daysdate.day+31?break?days=date.day+181?break?days=date.day+212?break?daysdate.day+243?break?daysdate.day+273?break?days=date.day+304?break?16/20case12:daysdate.day+334?break?)if((date.year%40&&date.year%100!=0||date.year%4000)&&date.month>3)days+=1?printf(\n%d/%disthe%dthdayin%d.",date.month,date.day,days,date.year)?)3.构建简单的手机通讯录,手机通讯录包括信息(姓名、年龄、联系电话),要求实现新建、查询功能。假设通信录最多容纳#include<stdio.h>#include<string.h>/*手机通讯录结构定义*/structfriends_list{charname[10]?intage?chartelephone[13]?)?50名联系人信息。/*姓名*//*年龄*//*联系电话*/intCount=0?/*定义全局变量Count,记录当前联系人总数*/voidnew_friend(structfriends_listfriends[])?voidsearch_friend(structfriends_listfriends[],char*name)?intmain(void){intchoice?charname[10]?structfriends_listfriends[50]?/*包含50个人的通讯录*/do{printf("手机通讯录功能选项:1:新建2:查询0:退出\n")?printf("请选择功能:")?scanf("%d",&choice)?switch(choice){case1:new_friend(friends)?break?case2:printf("请输入要查找的联系人名:")?scanf("%s",name)?search_friend(friends,name)?break?case0:break?)}while(choice!=0)?17/20printf("谢谢使用通讯录功能!\n")?return0?)/*新建联系人*/voidnew_friend(structfriends_listfriends[])(structfriends_listf?if(Count50){printf("通讯录已满!\n")?return?)printf("请输入新联系人的姓名:")?scanf("%s",)?printf("请输入新联系人的年龄:")?scanf("%d",&f.age)?printf("请输入新联系人的联系电话:")?scanf("%s",[telephone)?friends[Count]=f?Count++?)/*查询联系人*/voidsearch_friend(structfriends_listfriends[],char*name){inti,flag=0?if(Count0){printf("通讯录是空的!\n")?return?)for(i=0?i<Count?i++)if(strcmp(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数据库启动与关停的流程试题及答案
- 金属工艺品的商业模式探索考核试卷
- 稀土金属加工中的生产计划与生产调度执行方法考核试卷
- 艺术品拍卖法规解读与代理合规考核试卷
- 行政组织的变革与发展道路试题及答案
- 安全避雷针技术与网络保护试题及答案
- 网络技术实践中应避免的常见错误试题及答案
- 数据库在网络架构中的独特作用考题及答案
- 嵌入式产品设计与开发试题及答案
- 网络协议信息的有效管理试题及答案
- 医疗科研成果的转化与应用
- 歌曲《花非花》教案设计
- 2024年江西省中考生物试卷(含答案)
- 办公楼室内装饰工程施工设计方案技术标范本
- 执业医师法培训课件
- 新时代新型职业农民素养课件讲解
- 2024年无锡市滨湖区名小六年级毕业考试语文模拟试卷
- 校服供货服务方案
- 2024年咸阳市城市发展集团有限公司招聘笔试冲刺题(带答案解析)
- C6150车床主轴箱箱体加工工艺及夹具说明书
- 2023年电力安全生产工作规程
评论
0/150
提交评论