首页 语言课后题编程答案

语言课后题编程答案

举报
开通vip

语言课后题编程答案C语言课后题编程答案所有章节的课后习题的选择题和填空题大家必须熟练掌握,编程题掌握到第九章即可。希望大家通过课后的编程题熟悉典型的编程算法,掌握基本的编程思路,注意编程细节。第3章3-17编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。#include<>main(){inth,m;h=560/60;m=560%60;printf(“560分钟可转换成%d小时%d分钟”,h,m);}程序总结:(1)只要在程序中用到系统提供的库函数,必须把库函数所在的头文件用#include命令包含进来。否则库函数的使用...

语言课后题编程答案
C语言课后题编程答案所有章节的课后习题的选择题和填空题大家必须熟练掌握,编程题掌握到第九章即可。希望大家通过课后的编程题熟悉典型的编程算法,掌握基本的编程思路,注意编程细节。第3章3-17编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。#include<>main(){inth,m;h=560/60;m=560%60;printf(“560分钟可转换成%d小时%d分钟”,h,m);}程序 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf :(1)只要在程序中用到系统提供的库函数,必须把库函数所在的头文件用#include命令包含进来。否则库函数的使用无效。输入输出库函数的头文件是:;数学函数的头文件是:;字符处理函数的头文件是:;字符串处理函数的头文件是:。(2)注意C语言中的“/”和“%”两种运算符。“/”的运算结果取决于两操作数的类型。比如:1/2=0(与数学中不同,结果与操作数的类型一致,所以结果只取商值),2=(除之前2要自动类型转换成,因为只有同类型的操作数才能进行除运算),1/=,=。“%”的两个操作数都必须是整数。(3)printf(“560分钟可转换成%d小时%d分钟”,h,m);printf第一个 参数 转速和进给参数表a氧化沟运行参数高温蒸汽处理医疗废物pid参数自整定算法口腔医院集中消毒供应 要尽量详细,这样可以提高输出结果的可读性,恰当好处的添加提示性信息,可以提高程序的质量。(4)inth,m;变量起名要有艺术性,尽量做到见名知意。3-18编写程序,输入两个整数,1500和350,求出它们的商和余数并进行输出。#include<>main(){inta,b,m,n;printf(“请输入两个整数:\n”);scanf(“%d%d”,&a,&b);m=a/b;n=a%b;printf(“%d除以%d商%d余%d”,a,b,m,n);}程序总结:(1)printf(“请输入两个整数:\n”);这是一个提示信息,避免用户在看到黑屏后不知所措。(2)scanf(“%d%d”,&a,&b);scanf的功能是用户要通过键盘输入数据,赋值给各输入项。注意每个输入项前面必须要加&符号。%d与输入项的个数要一致,类型要匹配。%d与int一致,%f与float对应,%lf与double匹配,%c与char对应。3-19编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。#include<>main(){doublea,b,c,x;printf(“请输入三个双精度数:\n”);scanf(“%lf%lf%lf”,&a,&b,&c);x=(a+b+c)/3;x=x*10;x=x+;x=(int)x;x=x/10;printf(“x=%.1lf”,x);}程序总结:(1)doublea,b,c,x;和scanf(“%lf%lf%lf”,&a,&b,&c);有直接联系,%lf与输入项a,b,c在定义时所用的类型double一致。(2)%.1lf,.1的意思是结果仅保留小数点后一位小数。3-20编写程序,读入三个整数给a、b、c,然后交换他们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给a,然后输出a,b,c。#include<>main(){inta,b,c,t;printf(“请输入三个整数:\n”);scanf(“%d%d%d”,&a,&b,&c);printf(“交换之前:a=%d,b=%d,c=%d”,a,b,c);t=a;a=c;c=b;b=t;printf(“交换之后:a=%d,b=%d,c=%d”,a,b,c);}程序总结:交换两个变量的值和三个变量的值,都需要借助另外一个变量。第4章4-21若a的值小于100,请将以下选择结构改写成由switch语句构成的选择结构。if(a<30)m=1;elseif(a<40)m=2;elseif(a<50)m=3;elseif(a<60)m=4;elsem=5;#include<>main(){inta;printf(“entera(a<100):\n”);scanf(“%d”,&a);printf(“a=%d\n”,a);switch(a/10){case0:case1:case2:printf(“m=1\n”);break;case3:printf(“m=2\n”);break;case4:printf(“m=3\n”);break;case5:printf(“m=4\n”);break;default:printf(“m=5\n”);}}程序总结:选择结构的实现除了使用if语句以外,还可以使用switch语句来实现。switch后的表达式和case后的标号的类型要一致,switch后的表达式直接决定了switch语句体的执行入口。执行完入口的case语句后,依次顺序往下执行,直到遇到break语句就彻底跳出switch语句体,转去执行switch语句体后的语句。default语句可有可无,位置无所谓,当switch后的表达式和所有case后的标号都不一致时,转去执行default语句,然后依次顺序执行default语句后其他的switch语句,直到遇到break语句,则彻底跳出switch语句体。break语句可出现在循环语句体和switch语句体内,目的是彻底跳出循环体和switch语句体。case和其后的标号之间必须要加空格。4-22编写程序,输入一位学生的生日(年:y0、月m0、日d0),并输入当前的日期(年:y1、月m1、日d1),输出该生的实际年龄。#include<>main(){inty0,m0,d0,y1,m1,d1,age;printf(“输入一位学生的生日:\n”);scanf(“%d%d%d”,&y0,&m0,&d0);printf(“输入当前日期:\n”);scanf(“%d%d%d”,&y1,&m1,&d1);age=y1-y0;if(m1main(){intx,y;printf(“请输入一个整数:\n”)scanf(“%d”,&x);y=x%2;if(y==0)printf(“%d是一个偶数!\n”,x);elseprintf(“%d是一个奇数!\n”,x);}程序总结:y=x%2;这是判断一个数是奇数还是偶数的一贯表示方式。计算机中的等号是双等号,与数学中的等号不一样。4-24编写程序,输入a,b,c三个数,打印出最大者。 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 一:#include<>main(){inta,b,c,max;printf(“请输入三个数:\n”);scanf(“%d%d%d”,&a,&b,&c);if(a>b){if(a>c)max=a;elsemax=c;}else{if(b>c)max=b;elsemax=c;}printf(“max=%d”,max);}程序总结:利用if-else的嵌套,可求出一组数的最大值和最小值。在if-else的嵌套中,要格外注意if和else的配对问题。配对的原则是:从最后一个else开始,寻找与其配对的if,找的原则是离else最近的还没有配对的if就是该else的配对对象。if和else的配对一旦出问题,输出结果全错。方法二:#include<>main(){inta,b,c,t;printf(“请输入三个数:\n”);scanf(“%d%d%d”,&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf(“最大值为:%d”,c);}程序总结:方法一利用if-else的嵌套来进行程序设计,极易容易出错。而方法二采用三个if语句的并列来实现,同样可以求出最大值。方法二算法分析:第一个if语句结束后,b中保存a和b中的较大值;第二个if语句结束后,c中保存a和c中的较大值;第三个if语句结束后,c中保存b和c中的较大值;三次比较后,c中的值就是三个数中最大的。现实生活中,交换两盆水必须要借助第三个盆子;在程序设计中,要想实现两个变量中值的交换,就必须借助第三个变量。4-25对于以下函数:Y=x(-5 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 输入x的值,输出y的值。分别用:(1)不嵌套的if语句(2)嵌套的if语句(3)if-else语句(4)switch语句(1)#include<>main(){intx,y;printf(“请输入x的值:\n”);scanf(“%d”,&x);if(x==0)y=x-1;if(x>-5&&x<0)y=x;if(x>0&&x<10)y=x+1;printf(“y=%d\n”,y);}(2)#include<>main(){intx,y;printf(“请输入x的值:\n”);scanf(“%d”,&x);if(x>-5)if(x<0)y=x;if(x>0)if(x<10)y=x+1;if(x==0)y=x-1;Printf(“y=%d\n”,y);}(3)#include<>main(){intx,y;printf(“请输入x的值:\n”);scanf(“%d”,&x);if(x>-5&&x<0)y=x;elseif(x==0)y=x-1;elsey=x+1;Printf(“y=%d\n”,y);}(4)#include<>main(){intx,y,i;printf(“请输入x的值:\n”);scanf(“%d”,&x);if(x>-5&&x<0)i=1;if(x==0)i=2;if(x>0&&x<10)i=3;switch(i){case1:y=x;printf(“x=%d,y=%d\n”,x,y);break;case2:y=x-1;printf(“x=%d,y=%d\n”,x,y);break;case3:y=x-1;printf(“x=%d,y=%d\n”,x,y);}}程序总结:对于这个程序设计我建议大家采用第一种方法,因为第一种方法是大众化的思路,鉴于上机考试是机器阅卷,希望大家不要在上机试题上展现自己的个性。大家可以在平常练习中,尝试多种方法解决同一问题,这样可以通过一个程序设计,巩固多个知识点。第5章5-17编写程序,求1-3+5-7+…-99+101的值。方法一:#include<>main(){ints,n,t,j;s=0;n=1;t=1;j=1;while(n<=101){s=s+t;n+=2;j=-j;t=j*n;}printf(“1-3+5-7+…-99+101=%d”,s);}程序总结:(1)循环结构可用循环语句来实现,循环语句有三种:while,do-while,for,循环语句的使用场合是:数之间有规律可循并且是重复执行某项操作。(2)本程序设计是正负数交替求和,所以必须单独定义一个变量,通过每次乘以-1,来实现正负交替。本题中的j就扮演了这个角色。(3)while语句简介:功能是可实现循环结构。While与其后的括号之间无空格,括号里的表达式只要是合法的表达式即可,不过关系表达式最为常见。While的管辖范围是紧跟在其后的一条“C语句”(可以是单纯的一条C语句,也可以是用花括号括起来的复合语句)。程序设计最忌讳死循环,所以说循环体中必须要有使while后表达式为假的趋势,这样才能正常的跳出循环体,从而避免死循环的出现。方法二:#include<>#include<>main(){inta,b,c,s;a=1;b=1;c=1;s=0;while(fabs(c)<=101){s+=c;b+=2;a=-a;c=a*b;}printf(“1-3+5-7+…-99+101=%d”,s);}程序总结:若程序中用到了数学函数,就必须把#include<>加上。5-18编写程序,求e的值,e≈1+1/1!+1/2!+1/3!+1/4!+…(1)用for循环,计算前50项。(2)用while循环,要求直至最后一项的值小于10的-6次方。(1)方法一:#include<>main(){intm,n;floate=,i=,t;for(n=1;n<=50;n++){m=n;for(t=;m>=1;m--)t=t*m;i=1/t;e=e+i;}printf(“e=%f”,e);}程序总结:for(t=;m>=1;m--)t=t*m;实现的是阶乘的求法。方法二:#include<>main(){floata,b,c,e;e=;a=;c=0;for(b=;b<50;b++){e+=c;c=(a*b);a=a*b;}printf(“e=%f”,e);}程序总结:c=a*b;a=a*b;这两句是阶乘的另一种实现方法。此算法的设计思路是:1!*2=2!,2!*3=3!,3!*4=4!……后一项的分母是前一项分母再乘以一个有规律的数。(2)#include<>main(){floata=,b=,c=,e=;while(c>=1e-6){e+=c;b++;c=(a*b);a=a*b;}printf(“e=%f\n”,e);}程序总结:1乘以10的-6次方,在C语言中表示为1e-6。5-19编写程序,输出从公元2000年至3000年所有闰年的年号,每输出10个年号换一行,判断公元年是否为闰年的条件是:(1)公元年数如能被4整除,而不能被100整除,则是闰年。(2)公元年数能被400整除也是闰年。#include<>main(){inti,j=0;for(i=2000;i<=3000;i++){if(i%4==0&&i%100!=0||i%400==0){printf(“i=%d”,i);j++;}if(j%10==0)printf(“\n”);}printf(“\n”);}程序设计:(1)inti,j=0;这条语句中的j=0非常必要,因为j的作用就是累计闰年的个数,在所有的程序设计中,具有累计功能的变量都需要初始化为零。否则随机数会来捣乱,从而导致最后累计结果的无意义。(2)if(j%10==0)这是换行的一贯表示形式。(3)语句printf(“\n”);在程序的最后出现两次,这两次的作用是不一样的,前者实现的是每10个闰年换行一次。后者的功能是让黑屏上的pressanykeytocontinue乖乖换行,从而提高程序输出结果的可读性。5-20编写程序,打印以下图形:*************************#include<>main(){inti,j,k;for(i=3;i>=0;i--){for(k=1;k<=i;k++)Printf(“”);for(j=0;j<7-i*2;j++)printf(“*”);printf(“\n”);}for(i=4;i<7;i++){for(k=4;k<=i;k++)printf(“”);for(j=3;j<=15-i*2;j++)printf(“*”);printf(“\n”);}}程序总结:类似图形的设计是有规律可循的,比如此题:空格的个数从上往下依次是3、2、1、0、1、2、3,星号的个数从上往下依次是1、3、5、7、5、3、1,并且上下两部分是对称的。本题中for循环的控制条件很难想出来,大家只要把这个题记住就可以,到时候稍微变一下型就可以。第6章6-19请编写程序,输入一行字符(用回车结束),输出每个字符以及与之对应的ASCII代码值,每行输出三对。#include<>main(){intn=0;charc;while((c=getchar())!=’\n’){n++;printf(“ASCII=%d,c=%c”,c,c);if(n%3==0)printf(“\n”);}putchar(‘\n’);}程序总结:字符型数据在内存中保存的是与之相对应的ASCII码值。大家要牢记的ASCII代码值有:数字字符’0’的ASCII值是48,字符‘a’的ASCII值是65,字符‘A’的ASCII值是97,字符‘’的ASCII值是32,这4个特殊字符的ASCII值必须记住。其他的只要在它们的基础上递推就可以。在printf和scanf中所用到的%后的字母,取决于输入输出项在定义时所用的关键字。Int与%d对应,float与%f对应,double与%lf对应,char与%c对应,longint与%ld对应,shortint与%hd对应。本题中的语句charc;和printf(“ASCII=%d,c=%c”,c,c);貌似与(2)中讲的理论相冲突,其实是可行的,由于字符型数据在内存中保存的是与之相对应的ASCII码值,ASCII码值都是整型数,所以char既可以与%c对应,也可以与%d对应。(4)注意语句while((c=getchar())!=’\n’)中括号的用法,很多同学容易把(c=getchar())外的这层括号忘掉,变成while(c=getchar()!=’\n’),由于!=的优先级要高于=,所以导致运算顺序的改变,最终引起结果的错误。(5)putchar(‘\n’);的功能仍然是让黑屏上的pressanykeytocontinue乖乖换行,从而提高程序输出结果的可读性。与printf(“\n”);是完全等价的。(6)getchar()的功能是等待用户从键盘输入一个字符到内存,它的功能决定了它的写法必须是赋给一个字符型的内存变量,如本题的c=getchar()。6-20请编写程序,输入一行数字字符(用回车结束),每个数字字符的前后都有空格。请编程,把这一行中的数字转换成一个整数。例如,若输入(代表Enter键):2483,则输出整数:2483。#include<>main(){charch,inti=0;while((ch=getchar())!=’\n’)if(ch>=’0’&&ch<=’9’)i=i*10+ch-‘0’;printf(“%d”,i);putchar(‘\n’);}程序总结:(1)ch>=’0’&&ch<=’9’不能写成’0’<=ch<=’9’。数字字符转换成相应的数字,程序实现为:ch=ch-‘0’;大写字母转换成小写字母,程序实现为:ch=ch-‘A’+’a’;小写字母转换成大写字母,程序实现为:ch=ch-‘a+’A’。(2)while((c=getchar())!=’\n’){if(ch>=’0’&&ch<=’9’)i=i*10+ch-‘0’;}红色标记的这对儿花括号是完全没有必要的,因为if(ch>=’0’&&ch<=’9’)和i=i*10+ch-‘0’是一体的,是一条语句。而while恰恰只需要对这一条语句负责,而不是对多条语句负责,所以花括号是多余的。(3)大家要格外注意i=i*10+ch-‘0’;这条语句,这条语句是本程序的一大亮点。6-21请编写程序统计输入的行数,用!号结束输入,!号所在的行不计入行数。#include<>main(){charch;inti=0;while((ch=getchar())!=’!’);if(ch==’\n’)i++;printf(“%d”,i);putchar(‘\n’);}程序总结:本程序是要统计输入的行数,其实就是统计’\n’出现的次数。6-22请编写程序统计输入的一行中小写字母的个数。#include<>main(){charch;inti=0;while((ch=getchar())!=’\n’)if(ch>=’a’&&ch<=’z’)i++;printf(“%d”,i);putchar(‘\n’);}程序总结:ch>=’a’&&ch<=’z’不能写成’a’<=ch<=’z’。6-23请编写输出以下图案的程序,图案的行数由输入的整数值确定(每行中字符之间没有空格)。ABBBCCCCCDDDDDDDEEEEEEEEE#include<>main(){inti,j,k,m,n;charch;printf(“Entern:\n”);scanf(“%d”,&n);for(i=1;i<=n;i++){ch=’A’+i-1;m=2*i-1;for(k=n;k>=i;k--)putchar(“”);for(j=1;j<=m;j++)putchar(ch);printf(“\n”);}}第7章7-15编写函数intmymod(inta,intb)用以求a被b除之后的余数。intmymod(inta,intb){ints;s=a%b;returns;}程序总结:函数定义分为两部分,函数首部和函数体。结合本题,函数首部是intmymod(inta,intb),函数体是花括号内的所有语句。intmymod(inta,intb)中的int是函数的返回值类型,return后的表达式是函数的返回值,所以int类型的 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 写,是根据return后表达式的类型而定的,必须要保证两处的一致性。要是函数体中没有return语句,或是只有return这个单词,其后没有表达式,则认定为该函数没有返回值。那么函数首部中int就要改写成void。要是函数首部省略函数的返回值类型,写成mymod(inta,intb)的形式,并不表示该函数没有返回值,而是系统默认该函数的返回值为int类型。intmymod(inta,intb)中的mymod是函数名,只要符合标识符的命名规则即可,尽量做到见名知义。intmymod(inta,intb)中的a,b是该函数的两个形参。形参的个数取决于题目的实际需要,形参前的类型名一定不能少。returns;语句的功能是把该被调用函数得到的结果返回调用函数。用return语句只能带回一个数据。要想返回多个数据,必须用到后面的知识点:传址。%(取余运算符)是双目运算符,其左右的两个运算符必须都是整型数。7-16编写函数,根据整型形参n的值,计算如下公式的值:1-1/2+1/3-1/4+1/5-1/6+1/7……floatres(intn){inti=1;floate=0,m,j;for(j=;j<=n;j++){m=1/j;e+=i*m;i=-i;}returne;}程序总结:要注意m=1/j;中的1/j,若是把j的类型定义成int类型的,只要1和j(j大于1)进行整除运算,统统为0。只要把j的类型定义成float类型,这种情况即可避免。举例:1/2=0,而1/=,2=,=,运算结果的类型取决于两操作数中较大的类型,双目运算符在运算之前,首先要统一两操作数的类型(统一的原则请参看附录5)。7-17编写函数,根据整型形参m的值,计算如下公式的值:t=1-1/2*2-1/3*3-……floatfun(intm){floati,t=1,n;for(n=2;n<=m;n++){i=-1/(n*n);t+=i;}returnt;}7-18编写函数用以求表达式x*x-5x+4的值,x作为参数传送给函数,调用此函数求:y1=2*2-5*2+4y2=(x+15)*(x+15)+4y3=sinx*sinx-5*sinx+4y1的值为;x为时,y2的值为,y3的值为doublefun(doublex){doubley;y=x*x-5*x+4;returny;}第8章8-17请编写函数,其功能是对传送过来的两个浮点数求出和值与差值,并通过形参传送回调用函数。Voidfun(floata,floatb,float*m,float*n){*m=a+b;*n=a-b;}程序总结:本题的要求是在调用函数中传递两数到被调用函数,在被调用函数中求出和值和差值,然后传送到调用函数。显然return语句无能为力,因为return语句仅能返回一个数据。像这样涉及到多个数据的传递的必须要用到传址运算。8-18请编写函数,对传送过来的三个数选出最大数和最小数,并通过形参传回调用函数。voidfun(float*a,float*b,float*c){floatt;if(*a<*b){t=*a;*a=*b;*b=t;}if(*a<*c){t=*a;*a=*c;*c=t;}if(*b<*c){t=*b;*b=*c;*c=t;}}程序总结:本函数的设计思路是:在被调用函数中利用指针远程遥控,把三个数按从大到小的顺序排好,然后在调用函数中输出最大数a和最小数c。第9章9-27输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数。用下标为0的元素统计字符’0’的个数,下标为1的元素统计字符’1’的个数,….#include<>main(){charch;intnum[10]={0};printf(“请输入一行字符:\n”);while((c=getchar())!=’\n’)if(ch>=’0’&&ch<=’9’)num[ch-‘0’]+=1;for(i=0;i<10;i++)printf(“num[%d]=%d\n”,i,num[i]);}程序总结:(1)ch>=’0’&&ch<=’9’,注意这个表达式的写法。千万不能写成’0’<=ch<=’9’。(2)intnum[10]={0};因为num数组的功能是累加,所以在累加之前必须要清零。(3)注意语句num[ch-‘0’]+=1;进一步巩固数字字符转化为数字的算法:ch=ch-‘0’。9-28编写函数,对具有10个整数的数组进行如下操作:从下标为0的元素开始直到最后一个元素,依次向前移动一个位置。输出移动后的结果。#include<>voidmove(int*w,intn){inti;for(i=n-1;i<10;i++)w[i]=w[i+1];}main(){inta[10],n,i;printf(“给数组a赋值:\n”);for(i=0;i<10;i++)scanf(“%d”,a[i]);printf(“请输入n(0#defineM100intfun(int*p,int*q,intn){inti,s=0;for(i=0;ia[i])p=i;if(p!=j){t=a[j];a[j]=a[p];a[p]=t;}}}第九章的其他编程题难度较大,不做要求。
本文档为【语言课后题编程答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥10.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
飞龙在天
暂无简介~
格式:doc
大小:47KB
软件:Word
页数:0
分类:
上传时间:2021-03-03
浏览量:12