欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    程序设计基础——C语言课后习题参考答案完整版.docx

    • 资源ID:28078714       资源大小:117.41KB        全文页数:52页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    程序设计基础——C语言课后习题参考答案完整版.docx

    课后习题1答案一、选择题1、A 2、D 3、C二、编程题1. #include <stdio.h>int main()printf("*n");printf("* Hello World! *n");printf("*n");return 0;2. #include <stdio.h>int main()printf(" *n");printf(" *n");printf(" *n");printf("*n");return 0;课后习题2答案一、选择题1-5、 DDBAB6-10、 DDABA11-15、CAABA16、 B二、填空题1、54,146,2552、字母,数字,下划线3、(换行字符)换行,(退格字符)移动到当前行的前一个位置,(反斜杠字符)产生反斜杠字符4、float,double,char5、(10101010)2,(00010000)26、(11111011)2,(373)8,(fb)167、0000000010011101, 0000000010011101,1000000010011001,1111111101100111课后习题3答案一、选择题1-5、 CB DACD6-10、 CCBAC11-15、CADDB16-17、CD二、填空题1、-162、12,43、m/100,m/10%10,m%104、(注:表示空格)12#12#3.1415926000#3.1415926000#5、55,A,B三、编程题1. #define PI 3.14#include <stdio.h>#include <math.h>int main()float r,s,l;scanf("%f",&r); /*输入圆的半径*/s= PI*r*r; /*计算圆的面积*/l=2*PI*r; /*计算圆的周长*/printf("r=%4.1f,s=%4.1f,l=%4.1fn",r,s,l);return 0;运行结果:3r= 3.0,s=28.3,l=18.82 #include <stdio.h>int main()float x,y,z,s,v;scanf("%f%f%f",&x,&y,&z); /*输入长方体的长、宽和高*/s=2*(x*y+x*z+y*z); /*计算长方体的表面积*/v=x*y*z; /*计算长方体的体积*/printf("Area=%.2f,Volume=%.2fn",s,v);return 0;运行结果:3 4 5Area=94.00,Volume=60.003#include <stdio.h>#include <math.h>int main()float x1,y1,x2,y2,x3,y3,a,b,c,p,s;/*输入3个顶点的坐标*/scanf("%f%f%f%f%f%f",&x1,&y1,&x2,&y2,&x3,&y3);/*求第一条边的长度*/a=sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);/*求第二条边的长度*/b=sqrt(x1-x3)*(x1-x3)+(y1-y3)*(y1-y3);/*求第三条边的长度*/c=sqrt(x2-x3)*(x2-x3)+(y2-y3)*(y2-y3);p=(a+b+c)/2;/*求三角形的面积*/s=sqrt(p*(p-a)*(p-b)*(p-c);printf("Area=%fn",s);return 0;运行结果:5 6 3 8 0 23Area=12.000013课后习题4答案一、选择题1-5、 CCCCC 6-8、 DBB二、填空题1、02、y%2或y%2=13、(x<0 && y<0 && z>0) | (x<0 && y>0 && z<0) | (x>0 && y<0 && z<0)4、05、x>2 && x<3 | x<-106、137、c=c+5c=c-218、a+b>c && a+c>b && b+c>aa=b && b=ca=b | a=c | b=c9、0.60000010、x>=0x<amin11、4-i2*i-112、#*#*#*13、a=16,y=60三、编程题1. #include <stdio.h>int main()int a,b,num;scanf("%d,%d",&a,&b); if(a*a+b*b>100)num=(a*a+b*b)/100;else num=a+b;printf("%d",num);return 0;运行结果:(1)测试数据一:3 47(2)测试数据二:9 512. #include <stdio.h>int main()int x;float y;scanf("%d",&x);if(x<=0)y=0;else if(x<=10)y=x;else if(x<=20)y=10;else if(x<40)y=-0.5*x+20;printf("%fn",y);return 0;3. #include<stdio.h>int main()int score;char grade;scanf("%d",&score); /*输入百分制成绩*/switch(score/10)case 10: case 9: grade='A' break;case 8: grade='B' break;case 7: grade='C' break;case 6: grade='D' break;default: grade='E'printf("%cn",grade);return 0;运行结果:96A4. #include<stdio.h>int main()int i;for(i=1;i<=99;i+)if(i*i%10=i | i*i%100=i)printf("%dn",i);return 0;运行结果:15625765. #include<stdio.h>int main()int n,i,j;printf("请输入行数:");scanf("%d",&n);/*外层循环控制输出的行数*/for(i=1;i<=n;i+)/*输出每行的空格*/for(j=1;j<=i-1;j+)printf(" ");/*输出每行的星号*/for(j=1;j<=2*n+1-2*i;j+)printf("*");/*输出换行符*/printf("n");return 0;6. #include<stdio.h> #define EPS 1E-7int main()int n;double x,an,sum;printf("input x:");scanf("%lf",&x);sum=0;an=1;n=1;dosum+=an; an*=(-x*x)/(n+1)*(n+2);n+=2;while(fabs(an)>=EPS);printf("sin(%.4lf)=%.4lfn",x,sum);return 0;课后习题5答案一、选择题1-5、 DABDC6-8、 DCB二、填空题1、j=2j>=02、Search Successful!The index is:53、j+=2ai>aj4、#&*&%三、编程题1.#include<stdio.h> #define N 30int main()int arrayN,i,j,sum=0;float arrAver6;for(i=0;i<N;i+)arrayi=2*(i+1);for(i=0;i<6;i+)/*按顺序求5个数的和*/for(j=0;j<5;j+)sum+=array5*i+j;/*求5个数的平均值*/arrAveri=sum/5.0;for(i=0;i<6;i+)printf("%.2f ",arrAveri);printf("n");return 0;运行结果:6.00 22.00 48.00 84.00 130.00 186.002.#include<stdio.h> #define M 5#define N 4int main()int arrMN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,0,0,0,0;int i,j;for(j=0;j<N;j+)for(i=0;i<M-1;i+)arrM-1j+=arrij;for(j=0;j<N;j+)printf("%d ",arrM-1j);printf("n");return 0;运行结果:28 32 36 403.#include<stdio.h>#define M 5#define N 4int main()int aMN;int i,j,maxj,count=0,flag;printf("请输入%d*%d阶矩阵A:n",M,N );for(i=0;i<M;i+)for(j=0;j<N;j+)scanf("%d",&aij); for(i=0;i<M;i+)maxj=0;for(j=1;j<N;j+)/*找到第i行中最大的那个元素的列下标*/if(aimaxj<aij)maxj=j;flag=1;/*定位第maxj列,看看aimaxj是否是该列中最小的那个元素 如果是不是,则flag为0;如果是,则flag保持为1*/for(j=0;j<M;j+)if(ajmaxj<aimaxj)flag=0;if(flag=1)count+;printf("第%d个鞍点:a%d%d=%dn",count,i,maxj,aimaxj);if(count=0)printf("没有鞍点"); return 0;4.#include<stdio.h>#define N 40int main() int i,j=0,iMax,max,count;char strN;char insertStr5='(','m','a','x',')'/待插入的多个字符“(max)”printf("输入一个字符串:");gets(str);/*用假设法求字符串str中最大的元素max和最大元素所在的下标iMax*/count=strlen(str);/*字符串str中字符元素的个数*/max=str0; /*假设字符串的第一个字符最大*/iMax=0; /*字符串中最大字符的下标置为0*/for(i=1;i<count;i+)if(stri>max)max=stri;/*字符串中最大的字符存放到max中*/iMax=i; /*字符串中最大的字符的下标存放到iMax中*/*字符串最大的字符后的字符依次往后移动5个字符*/for(i=count-1;i>iMax;i-)stri+5=stri;/*字符串最大的字符后插入字符串“(max)”*/for(i=iMax+1;i<=iMax+5;i+)stri=insertStrj;j+;/*新串的末尾加上0*/strcount+5='0'puts(str); return 0;运行结果:MyFriendMy(max)Friend5.#include<stdio.h>#define M 40#define N 20int main()char strAM,strBN,cntB,i=0,j=0;printf("请输入字符串a:");gets(strA);printf("请输入字符串b:");gets(strB);cntB=strlen(strB);/*找到a串的末尾*/while(strAi!='0')i+;if(cntB<5)/*将b串的所有字符都连接到a串末尾*/while(strBj!='0')strAi+j=strBj;j+;else/*将b串的前5个字符连接到a串末尾*/while(j<5)strAi+j=strBj;j+;/*新串的末尾加上串结束标志0*/ strAi+j='0'puts(strA); return 0;运行结果:(1)测试数据一:请输入字符串a:hubei请输入字符串b:wuhanhubeiwuhan(2)测试数据二:请输入字符串a:shanxi请输入字符串b:xianhubeiwuhan6.略7.#include <stdio.h>#define N 6int main()/*学生的学号数组*/char numN9="99077101","99077102","99077103","99077104","99077105","99077106",tmpNum9;/*学生的姓名数组*/char nameN8="张红","王建","王连","李立","刘虹","丁平",tmpName8;/*学生的四门课程数组*/int scoreN4=85,90,92,88,90,95,95,90,76,78,80,70,56,36,66,97,78,79,87,89,89,79,70,87,tmpScore;int sumN,i,j,k;float averN,tmpAver; /*学生平均分数组*/*求每个学生4门课程成绩的总分sum和平均分ave*/for(i=0;i<N;i+)sumi=0; /*每个学生4门课程成绩总分置0*/for(j=0;j<4;j+)sumi+=scoreij;averi=(float)sumi/4;/*用冒泡排序法将学生信息按升序排序*/for(i=1;i<N;i+)for(j=0;j<N-i;j+)if(averj>averj+1)/*交换平均成绩*/tmpAver=averj;averj=averj+1;averj+1=tmpAver;/*交换学号*/strcpy(tmpNum,numj);strcpy(numj,numj+1);strcpy(numj+1,tmpNum);/*交换姓名*/strcpy(tmpName,namej);strcpy(namej,namej+1);strcpy(namej+1,tmpName);/*交换成绩*/for(k=0;k<4;k+)tmpScore=scorejk;scorejk=scorej+1k;scorej+1k=tmpScore;/*按格式输出学生所有信息*/printf(" 学号t 姓名t 数学t 物理t 英语t计算机t平均成绩n");for(i=0;i<N;i+)printf("%st%st",numi,namei); /*输出学号和姓名*/for(j=0;j<4;j+)printf("%4dt",scoreij);/*输出4科成绩*/printf("%6.1fn",averi);/*输出平均分*/return 0;课后习题6答案一、选择题1-5、 DBADB6-10、 BABBB二、填空题1、0 2 4 6 8 10 12 14 16 180 2 4 6 8 10 12 14 16 182、8,173、10104、7三、编程题1#include <stdio.h>int F(int);int main()int a;printf("input a number:");scanf("%d",&a);if (F(a)=0)printf("不是水仙花数。n");elseprintf("是水仙花数。n");return 0;int F(int a)int b,c,d;b=a/100;/*百位*/c=a%100/10;/*十位*/d=a%10;/*个位*/if (a=b*b*b+c*c*c+d*d*d)return 1;elsereturn 0;2#include<stdio.h>#define N 30/*函数名:提取str数组中的数字字符,转换成数字存放到num数组中 函数参数:str为字符数组 num为整型数组返回值:num数组中数字的个数*/int fun(char str,int num)int i,f=0,n=0,j=0;for(i=0;stri!= '0'i+)/*遍历整个数组str元素 */if(stri>='0' && stri<='9') /*为数字字符*/numj=stri- '0' /*将数字字符转换为数字*/j+;return j; /*返回num数组中有多少个数字*/int main()char stringN;int numberN;int n,i;long sum=0;gets(string);n=fun(string,number);/*number数组中有n个数字元素*/*将number数组中的数字转换成整数值,存放到sum变量中*/sum=number0;for(i=1;i<n;i+) sum=sum*10+numberi; printf("%ldn",sum);return 0;3(1)递归程序#include <stdio.h>int half(int s,int a,int b,int key)int mid;if(a=b)if(key=sa)return (a);elsereturn (-1);elsemid=(a+b)/2;if(key<smid)return(half(s,a,mid-1,key);if(key>smid)return(half(s,mid+1,b,key);if(key=smid)return (mid); (2)非递归程序#include <stdio.h>int half(int s,int a,int b,int key)int left=0;int right=n-1;int middle;while(left<=right)middle=(left+right)/2;if (x=smiddle)return middle;else if (x>smiddle)left=middle+1;elseright=middle-1;return -1;课后习题7答案一、选择题1-5、 CBDCD6-10、 CBACA11-12、DC二、填空题1、302、12,10,10,123、*(p+5)4、*pp-str5、46、98768767、*(p+4*i+j)8、pij 或 *(*(p+i)+j) 或 (*(p+i)j9、pq<p+n*q>max*q<min三、程序设计题1.方法一:#include <stdio.h>#include <string.h>/*函数功能:将字符串str2逆序后放入字符串str1中 函数参数:字符串指针str1 字符串指针str2 函数返回值:void*/void strreverse(char *str1,char *str2)char *p1,*p2;int len2;/*获取str2所指向的字符串的长度*/len2=strlen(str2);p1=str1;p2=str2+len2-1;/*将str2所指向的字符串其逆序放入str1中*/while(p2>=str2)*p1=*p2;p1+;p2-;/*str1所指向的字符串的末尾增加串结束标志*/*p1='0'int main()char str120;char str220;scanf("%s",str2);strreverse(str1,str2);printf("逆序后的字符串为:%sn",str1);return 0;方法二:#include <stdio.h>#include <string.h>/*函数功能:将字符串str2逆序后放入字符串str1中 函数参数:字符串指针str1 字符串指针str2 函数返回值:void*/void strreverse(char *str1,char *str2)int len2,i;char tmp;/*获取str2所指向的字符串的长度*/len2=strlen(str2);/*将str2所指向的数组元素全部逆序*/for(i=0;i<len2/2;i+)tmp=*(str2+i);*(str2+i)=*(str2+len2-1-i);*(str2+len2-1-i)=tmp;/*将str2所指向的数组中的元素依次拷贝到str1所指向的数组中*/for(i=0;i<len2;i+)*str1+=*str2+;/*str1所指向的数组的末尾加0*/*str1='0'int main()char str120;char str220;scanf("%s",str2);strreverse(str1,str2);printf("逆序后的字符串为:%sn",str1);return 0;运行结果:abcdefg逆序后的字符串为:gfedcba2.方法一:#include <stdio.h>#include <stdio.h>/*函数功能:将书名按照由大到小的顺序排序 函数参数:书名的二维数组bookName 书的本数n 函数返回值:void*/void sort(char bookName8,int n)char tempName8; int i,j; for(i=1;i<=n-1;i+) /*冒泡法排序*/for(j=1;j<=n-i;j+)if(strcmp(bookNamej-1,bookNamej)>0)strcpy(tempName,bookNamej-1);strcpy(bookNamej-1,bookNamej);strcpy(bookNamej,tempName);/*函数功能:输出各字符串 函数参数:书名的二维数组bookName 书的本书n 函数返回值:void*/void print(char bookName8,int n)int i; for(i=0;i<n;i+)printf("%sn",bookNamei);int main()char name8="Java","C","PHP","HTML","Pascal"int n=5;sort(name,n); /*对字符串排序*/print(name,n); /*输出排序好的各字符串*/return 0;方法二:#include <stdio.h>#include <stdio.h>/*函数功能:将书名按照由大到小的顺序排序 函数参数:指针数组name 数组元素个数n 函数返回值:void*/void sort(char *name,int n)char* temp=NULL; int i,j; for(i=1;i<=n-1;i+) /*冒泡法排序*/for(j=1;j<=n-i;j+)/*namek是第k个字符串的起始地址*/if(strcmp(namej-1,namej)>0)temp=namej-1;namej-1=namej;namej=temp;/*函数功能:输出各字符串 函数参数:指针数组name 数组元素个数n 函数返回值:void*/void print(char *name,int n)int i; for(i=0;i<n;i+)printf("%sn",namei);int main()char *name="Java","C","PHP","HTML","Pascal"int n=5;sort(name,n); /*对字符串排序*/print(name,n); /*输出排序好的各字符串*/return 0;课后习题8答案一、选择题1-5、 ABDDD6-10、 CCCCA11-12、CC二、填空题1、(*b).day , b->day2、ex3、234、2002Shangxian5、char *data;struct link *next;6、struct list *next;int data;7、x.link=z;8、134319、(struct list *) malloc(sizeof(struct list);(struct list *)malloc(sizeof(struct list);return(h); 或 return h;10、break;pre->next=newp;newp->next=suc;三、编程题1. 难度系数:解题思路:用daytab数组存放非闰年和闰年各月份的天数。对于年year,判断其是否为闰年的条件为: leap=(year%4=0&&year%100!=0|year%400=0);用一个结构体类型date的变量dt存放用户输入的日期。程序如下:#include<stdio.h>/*数组daytab存放非闰年和闰年各月份的天数*/int daytab213=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;/*日期struct date结构体*/struct date int year;int month;int day;dt;/*函数功能:求指定日期是该年的第几天 函数参数:年year 月month 日day 函数返回值:整数第几天day*/int day_of_year(int year,int month,int day)int i,leap;/*是闰年leap=1,非闰年leap=0*/leap=(year%4=0&&year%100!=0|year%400=0);for(i=1;i<month;i+)day+=daytableapi;return day;/*函数功能:由年份year和天数yearday求月份pmonth和日号pday 函数参数:年份year 天数yearday 对应的月份pmonth 对应的日号pday 函数返回值:void*/void month_day(int year,int yearday,int *pmonth, int *pday)int i,leap;leap=(year%4=0&&year%100!=0| year%400=0);for(i=1;yearday>daytableapi;i+)yearday-=daytableapi;*pmonth=i;*pday=yearday;int main()int k,days;while(1) /*用户选择:起到菜单的作用*/printf("1:日期天数n2:年,天数日期n其他:退出n请选择:n");scanf("%d",&k);if(k=1)printf("输入日期(年 月 日):n");scanf("%d%d%d",&dt.year,&dt.month,&dt.day);printf("%d年%d月%d日是这一年的第%d天n",dt.year,dt.month,dt.day,day_of_year(dt.year,dt.month,dt.day);else if(k=2)printf("输入年份 天数:n");scanf("%d%d",&dt.year,&days);month_day(dt.year,days,&dt.month,&dt.day);printf("对应日期是%d年%d月%d日n",dt.year,dt.month,dt.day);else break;return 0;运行结果:2. 难度系数:算法设计:step 1 定义学生链表节点。step 2 参照教材中的程序8-7,定义创建链表函数create,显示链表节点数据信息函数display,释放链表所有节点内存函数destroy。其中创建链表函数create

    注意事项

    本文(程序设计基础——C语言课后习题参考答案完整版.docx)为本站会员(知****量)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开