程序设计基础教材1-5章答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《程序设计基础》习题参考答案与部分解析第1章C语言概述一、填空a)C源程序的基本单位是函数。b)一个C程序中至少应包括一个main函数。c)在C语言中,输出操作是有库函数printf()函数完成。二、单选题1、A2、C3、B解析:第1题答案:A。因为一个C程序总是从main函数开始执行的,而不论main函数在程序中的位置。且到main函数结束。第2题答案:C。因为main函数没有限制必须位于程序的最前面。C程序书写自由,一行内可写几个语句。在对一个C程序进行编译的过程中,无法检查注释当中的拼写错误。不过C语言本身并没有输入输出语句,输入输出是由函数完成的。第3题答案:B。因为一个C语言程序是由若干个函数组成的。但至少包含一个main函数,且main函数的位置不限。三、编程题1、编写一个输出“WelcometoC!”信息的小程序。解:程序如下#include“stdio.h”main(){printf(“WelcometoC!”);}2、已知三角形的三边长分别为3,4,5,试用海轮公式编程求其面积。海伦公式为:S△=,其中s=(a+b+s)/2;解:程序如下#include“math.h”#include“stdio.h”main(){inta,b,c;/*a,b,c3个整型变量表示三角形的3条边。*/floats,s1;/*s1作为面积变量,s作为中间变量是都应该是实形*/a=3;b=4;c=5;s=(a+b+c)/2.0;s1=sqrt(s*(s-a)*(s-b)*(s-c));/*sqrt函数完成开平方根功能。*/printf(“area=%f\n”,s1);}第2章程序设计基础知识一、单选题1、C2、A3、C4、A5、C6、C7、D8、C9、D10、A11、D12、A13、C14、C15、BA16、B17D解析:1.答案:C。这里考察的是用户标识符的定义。用户标识符由字母、数字、下划线组成。且必须以字母或下划线开头,区分大小写,且不能与C语言已有的32个关键字同名。由于选择不合法的用户标识符,A项的A、P_0、Do都是合法的用户标识符;B项的_A是合法的;D项的_123、temp、INT也都是合法的。只有C选项的标识符都是错误的用户标识符。2.答案:A。这里考察的是整型常量的概念。B项当中01a不正确,C项当中的0668不是正确的八进制常量,D项当中的2e5是float型常量。3.答案:C。这里考察的是字符常量的定义。字符常量是用单撇号括起来的单个字符或转义字符。所以答案是C。4.答案:A。字符变量只能包含一个字符。5.答案:C。这里考察的是转义字符的正确表示。C项的’074’是错误的转义字符,正确表示方法是’\074’。6.答案:C。字符变量只能包含一个字符,而C项的c=’yes’是错误的。7.答案:D。这里考察的是输入格式的控制。输入格式要与scanf语句中字符串格式相对应。8.答案:C。这里考察的是输出格式和字符对应的ASCII码值。’A’的ASCII码值是65,’Y’字符的ASCII码值是89。9.答案:D。这里考察输入格式和输出结果形式。由于输入格式不正确,所以输出的是不确定值。10.答案:A。这里考察的是标识符的特点区分大小写,变量sum和变量sUM是两个不同的变量,sum并没有参加运算,所以它的值不边仍然是7。11.答案:D。%运算符要求两边的运算数必须是整型。12.答案:A。这里考察的是复合赋值运算。a%=b+1;等价与a=a%(b+1);由于a=10,b=4;所以运算后a的值是0。13.答案:C。这里考察的是在变量定义类型是进行赋值操作。要求a,b,c都赋值为5,且为int类型。只有C正确。14.答案:C。这里考察的是类型的自动转换,只要有单精度类型或双精度类型参加运算,结果都是double(双精度)类型。15.答案:B,A。这里考察的是逻辑表达式的运算过程。表达式1&表达式2,若表达式1的值是0的话,结果就是0,表达式2就不参加运算。要注意:赋值表达式的值是左边赋值变量的值。所以答案为B,A。16.答案:B。这里考察的是逗号表达式运算过程是从第1个表达式开始运算,然后依次运行到最后一个表达式。逗号表达式的值是最后表达式的值,且注意逗号运算符优先级低于赋值运算符。所以表达式(a=2,b=5,b++,a+b)运算过程a=2—b=5—b++—a+b=8;结果是8。17.答案:D。这里考察的是条件表达式的结合性是从右向左。所以ka?k:cb?c:a;等价于ka?k:(cb?c:a);先运算cb?c:a;的值是1,然后计算ka?k:1;的值是1。二、填空题1、-32768-327672、字母,数字,下划线3、分号(;)4、30,155、186、07、-2648、79、010、111、y%2==112、xz||yz13、014、(x2&&x3)||x-1015、1三、编程题1、编写程序,输入一个长方形的二边长,输出其面积。解:程序如下#include“stdio.h”main(){inta,b,s;/*a,b作为长方形的两个边长,s为面积。*/printf(“请输入两个边长\n”);scanf(“%d%d”,&a,&b);s=a*b;printf(“Thearea:%d\n“,s);}2、设置半径为r=2.9,编程求圆周长和圆面积解:程序如下#include“stdio.h”#definePI3.14main(){floatr,L,S;L=2*PI*r;S=PI*r*r;printf(“L=%f,S=%f\n“,L,S);}3、输入一个华氏温度,输出相应的摄氏温度。二者的换算公式是:c=5/9(F–32),其中F表示华氏温度,c表示摄氏温度。解:程序如下#include“stdio.h”main(){floatc,F;printf(“请输入一个华氏温度:\n”);scanf(“%f”,&F);c=(float)5/9*(F-32);printf(“F=%f,c=%f\n”,F,c);}第3章程序设计初步一、单选题1、C2、C3、B4、B5、B解析:1.答案:C。这里考察的是if-else语句和表达式中有增量和减量的执行过程。if(m++5)printf(“%d\n”,m);elseprintf(“%d\n”,m++);先执行m5的值是0,然后执行m=m+1;得到m=6;由于m5的值是0所以执行else语句,应先输出m的值是6,然后m再自增一个单位变成7。2.答案:C。这里考察的是if语句的嵌套。根据else子句总是与之前最近的if语句配对来进行选择满足条件的答案。3.答案:B。这里也考察的是if语句的嵌套。同理:if(xy)if(y0)z=0;elsez+=1;等价与if(xy){if(y0)z=0;elsez+=1;}因此答案是B。4.答案:B。这里考察的是if语句的嵌套。根据else子句总是与之前最近的if语句配对。5.答案:B。由于B项:if(x=y)&&(x!=0)x+=y;if后的条件表达式没有用圆括号括起来。正确的是:if((x=y)&&(x!=0))x+=y;二、根据要求完成程序填空1、zyzxyx2、ch=‘A’&&ch=’Z’ch=ch-323、x0x/10y!=2三、编程题1、编写一个程序,要求用户从终端键入两个整数数值。检测这两个数,判定第一个数是否能被第二数整除,并在终端上显示相应的信息。解:程序如下#include“stdio.h”main(){inta,b;/*a为第一个数,b为第二个数*/printf(“Pleaseinputtwonumbers:\n”);scanf(“%d%d”,&a,&b);if(a%b==0)printf(“%d能被%d整除。\n”,a,b);elseprintf(“%d不能被%d整除。\n”,a,b);}2、有3个整数a,b,c,由键盘输入,输出其中最大的数。解:程序如下#include“stdio.h”main(){inta,b,c,max;printf(“Pleaseinputthreenumbers:\n”);scanf(“%d%d%d”,&a,&b,&c);if(ab)max=a;elsemax=b;if(maxc)max=c;printf(“Themaxis%d\n”,max);}3、给出一百分制成绩,要求输出成绩等级A、B、C、D、E。其中90分以上为A,80~89分为B,70~79为C,60~69为D,60分以下为E。解:程序如下#include“stdio.h”main(){floatscore;intgrade;printf(“Pleaseinputascore:\n”);scanf(“%f“,&score);grade=(int)score/10;switch(grade){case10:case9:printf(“gradeisA\n”);break;case8:printf(“gradeisB\n”);break;case7:printf(“gradeisC\n”);break;case6:printf(“gradeisD\n”);break;default:printf(“gradeisE\n”);}}4、新世纪百货进行打折促销活动,消费金额(P)越高,折扣(d)越大,标准如下:消费金额折扣P1000%100≤P2005%200≤P50010%500≤P100015%P≥100020%编程实现从键盘输入消费金额,输出折扣率和实付金额(f)。要求分别用if语句和switch语句实现。解:(1)用if语句编程实现如下#include“stdio.h”main(){floatP,d,f;printf(“输入消费金额:\n”);scanf(“%f”,&P);if(P100)d=0;if(P>=100&&P200)d=0.05;if(P>=200&&P500)d=0.10;if(P>=500&&P1000)d=0.15;if(P>=1000)d=0.20;f=P*(1-d);printf(“折扣是%f,则实付金额为%f\n”,d,f);}(2)用switch语句编程实现如下#include“stdio.h”main(){floatP,d,f;intc;printf(“输入消费金额:\n”);scanf(“%f”,&P);c=(int)P/100;switch(c){case0:d=0;break;case1:d=0.05;break;case2:case3:case4:d=0.10;break;case5:case6:case7:case8:case9:d=0.15;break;default:d=0.20;}f=P*(1-d);printf(“折扣是%f,则实付金额为%f\n”,d,f);}第4章循环结构程序设计一、单项选择1、A2、D3、C4、D5、B6、D7、B8、B二、按要求完成程序填空1、c!=’\n’c>=’0’&&c=’9’2、i%3==2&&i%5==3&&i%7==2j%5==03、i10j%3!=0三、编程题1、编程求n的阶乘(n由键盘输入)。解:程序如下#include“stdio.h”main(){intn,i;longfac;fac=1;printf(“Inputanumber:”);scanf(“%d”,&n);i=1;while(i=n){fac=fac*i;i++;}printf(“%d!is%ld\n”,n,fac);}2、计算1!+2!+3!+…+10!的值。解:方法一#include“stdio.h”main(){inti=1,j;doublefac,sum=0;while(i=10){j=1;Fac=1;while(j=i){fac=fac*j;j++;}sum=sum+fac;i++;}printf(“1!+2!+3!+…+10!=%.0f\n”,sum);}方法二:#include“stdio.h”

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功