您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > C语言课后习题答案(第1-8章)
第1章C语言概述一、简答题1.(1)语言简洁、紧凑,使用方便、灵活;(2)运算符丰富;(3)具有丰富的数据类型;(4)具有结构化的控制语句;(5)语法限制不太严格,程序设计自由度大;(6)C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接访问硬件;(7)生成目标代码质量高,程序执行效率高;(8)用C语言写的程序可移植性好,基本上不作修改就能用于各种型号的计算机和各种操作系统。2.顺序结构,分支结构,循环结构3.所谓算法就是为解决一个问题而采取的方法和步骤。算法的特性:有穷性、确定性、输入、输出、可行性。表示算法的方式:(1)用自然语言表示;(2)用流程图表示;(3)用N—S流程图表示;(4)用伪代码表示;(5)用计算机语言表示。二、算法1.瓶子A里盛有醋瓶子B里盛有酱油那一个空瓶C将A中的醋倒入C将B中的酱油倒入A将C中的醋倒入B2.输入一个数放在a中max=a以下步骤重复9次:输入一个数放在a中如果amax,max=b打印max的值3.如果abtemp=aa=bb=temp如果catemp1=atemp2=ba=cb=temp1c=temp2否则如果cbtemp=bb=cc=temp打印a,b,c的值4.i=1sum=0以下程序循环100遍:sum=sum+ii=i+1打印sum的值5.如果(n除以3的余数为0并且n除以5的余数为0)n能够同时被3和5整除否则n不能够同时被3和5整除6.i=101以下语句循环50遍:j=2flag=1当j(i除以2的整数部分)时循环以下语句:如果i除以j的余数为零flag=0退出该循环如果flag=1打印i的值i=i+17.如果mntemp=mm=nn=tempi=nj=1做以下循环,直到m能够被i/j整除:如果i能够被j整除并且m能够被i/j整除i/j即是m和n的最大公约数跳出循环否则j=j+1打印i/j的值8.data=b*b—4*a*c如果data>0否则如果data=0x1=x2=—b/2否则无实数解三、编程题1.main(){printf(“##############################\n”);printf(“Howdoyoudo?\n”);printf(“##############################\n”);}2.main(){adatabx2)(1adatabx2)(2inta,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“sum=%d”,a+b+c);}第二章数据类型与表达式一、单项选择题1.B2.C3.A4.A5.D6.B7.B8.A9.C10.D二、写出下列程序的运行结果1.aabbccabcAN2.ab97983.9,11,9,104.a=2,b=3,c=25.s1=2.500000s2=3三、编程题main(){charc1='c',c2='h',c3='i',c4='n',c5='a';c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf(%c%c%c%c%c\n,c1,c2,c3,c4,c5);}第三章顺序程序设计选择题1)B2)D3)D4)A5)B6)A7)B8)A9)D10)D11)C12)D13)A填空题1)b2)2613)2521374)abc5)5.0,4,c=36)3编程题#definepi3.1415926main(){floath,r,l,sv,sz;printf(“请输入圆的半径r,圆柱高h:\n”);scanf(“%f,%f”,&r,&h);l=2*pi*r;s=pi*r*r;sv=3.0/4.0*pi*r*r*r;sz=pi*r*r*h;printf(“圆周长为:l=%6.2f,圆面积为:s=%6.2f\n”,l,s);printf(“求体积为:sv=%6.2f,圆柱体积为:sz=%6.2f\n”,sv,sz);}2、main(){floatc,f;printf(“请输入一个华氏温度:\n”);scanf(“%f”,&f);c=(5.0/9.0)*(f-32);printf(“摄氏温度为:%6.2f\n”,c);}第四章循环程序设计一、选择题1.D2.D3.D4.C5.D6.A7.B8.B9.A10.D.11.B12.A13.B14.C15.C16.C17.D18.B19.D20.D21.A二、填空题1.5858582.03.204.89215.20,06.67.1,3,28.Year%400==0year%100!=0count++三、编程题1.main(){longa;scanf(“%ld”,&a);if(a=10000&&a=99999)printf(“这是个五位数”);elseif(a=1000&&a=9999)printf(“这是个四位数”);elseif(a=100&&a=999)printf(“这是个三位数”);elseif(a=10&&a=99)printf(“这是个二位数”);elseif(a=0&&a=9)printf(“这是个一位数”);elseprintf(“输入错误”);}2.main(){inta;intg,s,b;//个位、十位、百位printf(水仙花数有:\n);for(a=100;i=999;a++){g=a%10;s=a/10%10;b=a/100;if(a==g*g*g+s*s*s+b*b*b)printf(%d,a);}printf(\n);}4、main(){inti,n;printf(inputn:);scanf(%d,&n);printf(\n%d=,n);for(i=2;i=n;i++){while(i!=n)if(n%i==0){printf(%d*,i);n/=i;}elsebreak;}printf(%d\n,n);}5、#include“stdio.h”main(){charc;intw,x,y,z;w=x=y=z=0;while((c=getchar())!=’\n’){if((c’a’&&c’z’)||(c’A’&&c’Z’))w++;elseif(c==’’)x++;elseif(c’0’&&c’9’)y++;elsez++}printf(“英文字母个数:%d\n”,w);printf(“空格个数:%d\n”,x);printf(“数字个数:%d\n”,y);printf(“其他字母个数:%d\n”,z);}6、main(){floath=100,t;intj;for(j=1;j10;j++){t=t/2;h+=(t*2);}printf(“共经过:%f米\n”,h);printf(“第十次反弹%f米\n”,t);}第五章数组一、单项选择题1.B2.A3.C4.C5.D6.B7.C8.B9.C10.B二、写出下列程序的运行结果1.S=3682.*************************3.S1=18S2=104.!margorP5.数字0的出现次数是:3数字1的出现次数是:2数字2的出现次数是:2数字3的出现次数是:2数字4的出现次数是:0数字5的出现次数是:1数字6的出现次数是:1数字7的出现次数是:1数字8的出现次数是:1数字9的出现次数是:1三、编程题1.#includestdio.hmain(){inta[11];inti,j,t;printf(input10number:\n);for(i=1;i11;i++)scanf(%d,&a[i]);printf(\n);for(i=1;i=9;i++)for(j=1;j=10-i;j++)if(a[j]a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}printf(thesortednumberis:\n);for(i=1;i11;i++)printf(%4d,a[i]);}2.#includestdio.hmain(){inta[11],i,b;printf(imput10sortednumber:\n);for(i=0;i10;i++)scanf(%d,&a[i]);printf(inputaninteger:\n);scanf(%d,&b);for(i=9;i=0&&a[i]b;i--)a[i+1]=a[i];a[i+1]=b;printf(sortednumbers:\n);for(i=0;i11;i++)printf(%5d,a[i]);}3.#includestdio.hmain(){inta[5],i,j,t;printf(input5integer:\n);for(i=0;i5;i++)/*输入5个整数*/scanf(%d,&a[i]);for(i=0,j=4;ij;i++,j--)/*逆序存放*/{t=a[i];a[i]=a[j];a[j]=t;}for(i=0;i5;i++)/*逆序存放后重新输出*/printf(%5d,a[i]);}4.#includestdio.hmain(){inti,j,a[10][10]={{1},{1,1}};for(i=2;i10;i++)/*给二维数组每个元素赋值*/{a[i][0]=1;for(j=1;j=i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];}for(i=0;i10;i++)/*输出二维数组*/{for(j=0;j=i;j++)printf(%-5d,a[i][j]);printf(\n);}}5.#includestdio.hmain(){inta[3][4],i,j,max,row,col;printf(input3*4matrix:\n);for(i=0;i3;i++)/*输入3*4矩阵*/for(j=0;j4;j++)scanf(%d,&a[i][j]);max=a[0][0];row=0;col=0;for(i=0;i3;i++)/*寻找矩阵中的最大值及其行列号*/for(j=0;j4;j++)if(maxa[i][j]){max=a[i][j];row=i,col=j;}printf(\n数组中最大的数是%d,其行号是%d,列号是%d\n,max,row,col);}6.#defineN3#defineM4#includestdio.hmain(){inta[N][M],i,j,k,max,row,col;printf(input%d*%dmatrix:\n,N,M);for(i=0;iN;i++)/*输入二维矩阵*/for(j=0;jM;j++)scanf(%d,&a[i][j]);for(i=0;iN;i++)/*求鞍点*/{max=a[i][0];row=i;col=0;for(j=1;jM;j++)/*求矩阵中每一行的最大值及其所行列号*/if(maxa[i][j]){max=a[i][j];col=j;}for(k=0;kN;k++)/*判断每一行的最大值在其所在列是否最大*/if(a[k][col]max)break;if(k==N)/*得到鞍点*/{printf(thepointis%d,row=%d,col=%d\n,max,row,col);break;}}if(i==N)/*没有鞍点*/printf(nopoint\n);}7.#includestdio.hmain(){intnum=0,word=0;/*word=0表示未出现单词,如出现单词就置word为1.num用来统计单词个数*/charc;printf(pleaseinputastring:\n);while((c=getchar())!='\n')if(c=='')word=0;elseif(word==0){word=1;num++;}printf(Thereare%dwordsintheline\n,num);}8.#includestdi
本文标题:C语言课后习题答案(第1-8章)
链接地址:https://www.777doc.com/doc-2908577 .html