C语言第三章答案
C语言程序设计第二版第三章课后习题程序源码详细答案

C语言程序设计第二版第三章课后习题程序源码详细答案(1)判断输入的3位正整数是否是水仙花数;#includeint main(void){int n;printf("请输入一个三位正整数:\");scanf("%d",&n);int a,b,c;a=n%10;b=(n/10)%10;c=n/100;int w;w=a*a*a+b*b*b+c*c*c;if(w==n){printf("yes \");}else{printf("no \");}return 0 ;}(2)判断任意字符,小写改为大写。
#includeint main(void){char ch;ch=getchar();if(ch>='A'&&ch<='Z'){putchar(ch);printf("\");}else{ch=ch-32;putchar(ch);printf("\");}return 0;}(3)计算字母序号。
输入大写或者小写字母,输出他们对应的字母表序号。
#includeint main(void){char ch;printf("请输入一个字符:\");ch=getchar();int n;if(ch>='A'&&ch<='Z'){n=ch-'A';printf("%d\",n);}else if(ch>='a'&&ch<='z'){n=ch-'a';printf("%d\",n);}else{printf("输入错误请重新启动输入\",n);}return 0;}(4)输入一个年份,判断是否是闰年#includeint main(void){int n;printf("请输入一个年份:\");scanf("%d",&n);if((n%4==0&&n%100!=0)||(n%400==0)) {printf("闰年\");}else{printf("非闰年\");}return 0;}(5)计算某年某月有多少天#includeint main(void){int n;printf("请输入一个年份:");printf("\");scanf("%d",&n);if((n%4==0&&n%100!=0)||(n%400==0)){printf("闰年\");int y;printf("请输入一个月份:");printf("\");scanf("%d",&y);if(y==1||y==3||y==5||y==7||y==8||y==10||y==12) {printf("31天\");}else if(y==4||y==6||y==9||y==11){printf("30天\");}else{printf("29天\");}}else{printf("平年\");int y;printf("请输入一个月份:");printf("\");scanf("%d",&y);if(y==1||y==3||y==5||y==7||y==8||y==10||y==12) {printf("31天\");}else if(y==4||y==6||y==9||y==11){printf("30天\");}else{printf("28天\");}}return 0;}(6)根据百分制成绩分等级#includeint main(void){int n;scanf("%d",&n);printf("等级评定为:");if(n>=90)printf("A\");else if(n>=80&&n<=89)printf("B\");else if(n>=70&&n<=79)printf("C\");else if(n>=60&&n<=69)printf("D\");else if(n<=59)printf("E\");return 0;}(7)计算员工收入#includeint main(void){float h=1500;printf("本月基本工资:%.2f元\",h); printf("请输入本月销售额度:"); float n;scanf("%f",&n);if(n<=10000){float x;x=n*5/100;printf("本月销售提成:%.2f元\",x); printf("本月总工资:%.2f元\",x+h); }else if(n>=10000&&n<=50000) {float x;x=(n-10000)*3/100+10000*5/100; printf("本月销售提成:%.2f元\",x); printf("本月总工资:%.2f元\",x+h); }else{float x;x=(n-50000)*2/100+(50000-10000)*3/100+10000*5/100; printf("本月销售提成:%.2f元\",x);printf("本月总工资:%.2f元\",x+h);}return 0;}。
c语言教程答案

}
12 输入三角形的边长,求三角形面积(面积=sqrt(s(s-a)(s-b)(s-c)),s=(a+b+c)/2)。 ቤተ መጻሕፍቲ ባይዱ
答
#include"math.h" /*由于程序中使用了开平方函数sqrt(),所以需要包含数学头文件*/
int a1,a2;
char c1,c2;
若要求输入a1、a2、c1和c2的值,正确的输入函数调用语句是___。
答 scanf("%d,%d,%c,%c",a1,a2,c1,c2);
7 输入两个整型变量a、b的值,输出下列算式以及运算结果___。
a+b、a-b、a*b、a/b、(float)a/b、a%b
area=PI*r*r;
printf("l=%f\tarea=%f\n",l,area);
}
9 输入任意一个3位数,将其各位数字反序输出(例如输入123,输出321)。
答
main()
{
int x,y;
printf("Input number:");
scanf("%d",&x);
分析:执行了case 1: 和case 3: 中的代码。同时case 1:语句中的{ }是可以取消的。
6 以下两条 if 语句可合并成一条 if 语句,即___。
if(a<=b) x=1;
else y=2;
if(a>b)printf("***y=%d\n", y);
C语言 第三章 顺序结构程序设计期末测试习题与答案

B.scanf(“%dV%dV%d”,&a,&b,&c);
C.scanf(“%d,%d,%d”,&a,&b,&c);
D.scanf(“%2d%3d%4d”,a,b,c);
参考答案:C
5、若int a,b; double x;
以下不合法的scanf函数调用语句是( )。
参考答案:C
17、以下程序段的输出结果是
int a=1234;
printf("a=%2d\n",a);
A.提示出错、无结果
B.a=34
C.a=1234
D.a=12
参考答案:C
18、下列关于printf()函数说法错误的是( )。
A.printf()函数是库函数,必须使用#include命令将其包含进来
printf(" %d %d\n",(++x ,y++),z+2);}
运行该程序的输出结果是( )。
A.4 2
B.33
C.4 3
D.3 4
参考答案:B
24、下列程序的输出结果是( )。
main()
{ double d=3.2; int x ,y ;
x=1.2 ; y=(x+3.8)/5.0;
printf("%d \n", 7.3);}
A.3
B.3.07
C.0
D.3.2
参考答案:C
25、以下程序的输出结果是( )。
main( )
{
inmp;&!b||!c;
C语言第3章作业参考答案

int main()
{
char a;
printf("请输入一个字符:");
scanf("%c",&a);
printf("三个字符分别是:%c,%c,%c\n",a+1,a,a-1);
printf("对应的ASCII码值分别是:%d,%d,%d\n",a+1,a,a-1);
vq=3.0/4.0*pi*r*r*r; //计算圆球体积vq
vz=pi*r*r*h; //计算圆柱体积vz
printf("圆周长为: l=%6.2f\n",l);
printf("圆面积为: s=%6.2f\n",s);
printf("圆球表面积为: sq=%6.2f\n",sq);
printf("圆球体积为: v=%6.2f\n",vq);
{
float h,r,l,s,sq,vq,vz;
float pi=3.1415926;
priscanf("%f,%f",&r,&h); //要求输入圆半径r和圆柱高h
l=2*pi*r; //计算圆周长l
s=r*r*pi; //计算圆面积s
sq=4*pi*r*r; //计算圆球表面积sq
printf("圆柱体积为: vz=%6.2f\n",vz);
return 0;
}
补充习题
(1)输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)
#include <stdio.h>
第3章习题参考答案(c语言教材)

第3章课后习题参考答案一、选择题题号 1 2 3 4 5 6 7 8 9 10 答案 C B D A B A A C A A 题号11 12 13 14 15 16 17 18 19答案 A B D D B A B D C二、填空题1)12)20083)b4)2615)25 21 37三、编程题1.编写程序。
计算输出球的表面积S和体积V。
球半径r在程序运行时由键盘输入。
#include "stdio.h"#define PI 3.14159void main( ){float r, S, V;printf ("请输入圆的半径(r):") ;scanf("%f", &r ) ;S = 4 * PI * r * r ;V = ( 4.0/ 3.0) * PI * r * r * r ; //还可写成4/3.0或4.0/3; 但不能写成4/3,因为4/3值为1 printf ("r =%6.2f, S=%6.2f, V=%6.2f \n", r, S, V ) ;}2. 编写程序。
计算输出正方形外接圆的面积S。
正方形边长a在程序运行时由键盘输入。
#include "stdio.h"#include "math.h"#define PI 3.14159void main( ){float a, r, S;printf ("请输入正方形的边长(a):") ;scanf("%f", &a ) ;r = sqrt(2) * a / 2 ; //计算正方形外接圆的半径S = PI * r * r ; //计算正方形外接圆的面积printf ( "S=%6.2f \n", S ) ;}/*注:以上面积计算公式,也可使用:S=PI*a*a/2因为:S=PI*(sqrt(2)*a/2)* (sqrt(2)*a/2)=PI*a*a/2这样就不用调用求平方根函数sqrt()了。
数据结构(C语言版)第三章习题解答

第三章习题解答1.分别写出对链栈的入栈和出栈操作的算法。
链栈的结点类型定义如下:Typedef struct stacknode {SElemtype data;struct stacknode *next;}stacknode, *linkstack;入栈操作:Status push( linkstack &S, SElemtype e){ p=(linkstack)malloc(sizeof(stacknode));If (!p) return ERROR;p->data=e;p->next=S;S=p;return OK;}出栈操作:Status pop(linkstack &S, SElemtype &e){ if (!S) return ERROR;p=s;s=p->next;free(p);return OK;}P24/3.15假设以顺序存储结构实现一个双向栈,即在一维数组的存储空间中存在着两个栈,它们的栈底分别设在数组的两个端点。
试编写实现这个双向栈tws的三个操作:初始化inistack(tws),入栈push(tws,i,x)和出栈pop(tws,i)的算法,其中i为0或1,用以分别指示设在数组两端的两个栈,并讨论按过程(正/误状态变量可设为变参)或函数设计这些操作算法各有什么优缺点。
双栈的结构类型定义如下:typedef struct{Elemtype *base[2];Elemtype *top[2];}BDStacktype; //双向栈类型栈的初始化操作:status Init_Stack(BDStacktype &tws,int m)//初始化一个大小为m的双向栈tws{ tws.base[0]=(Elemtype*)malloc(m*sizeof(Elemtype));tws.base[1]=tws.base[0]+m-1;tws.top[0]=tws.base[0];tws.top[1]=tws.base[1];return OK;}入栈操作:Status push(BDStacktype &tws,int i,Elemtype x) // x入栈,i=0表示低端栈,i=1表示高端栈{ if (tws.top[0]>tws.top[1]) return OVERFLOW;//注意此时的栈满条件if (i==0) *tws.top[0]++=x;elseif (i==1) *tws.top[1]--=x;else return ERROR;return OK;}出栈操作:Status pop(BDStacktype &tws, int i, Elemtype &x) // x出栈,i=0表示低端栈,i=1表示高端栈{ if (i==0){ if (tws.top[0]==tws.base[0]) return OVERFLOW;x=*--tws.top[0];}else if (i==1){ if (tws.top[1]==tws.base[1]) return OVERFLOW;x=*++tws.top[1];}else return ERROR;return OK;}P24/3.18试写一个判别表达式中开、闭括号是否配对出现的算法。
c语言第三章习题答案

2 #include <stdio.h> int main() {
double tax,rate,deduction; int salary;
printf("输入月薪(0<=月薪):"); scanf("%d",&salary); if(salary<=3500){
rate=0; deduction=0; } else if(salary<=5000){ rate=0.03; deduction=0; } else if(salary<=8000){ rate=0.1; deduction=105;
}else if(salary<=83500){ rate=0.3; deduction=5505;
} else{
rate=0.45; deduction=13505; }
tax=rate*(salary-3500)-deduction; printf("个人所得税=%.2lf\n",tax);
return 0;
第三章 1 #include <stdio.h> #include <math.h> void main() {
double area,permeter; double a,b,c,s; printf("输入三角形的三边长:"); scanf("%lf%lf%lf",&a,&b,&c); s=(a+b+c)/2.0; if(a+b>c&&a+c>b&&b+c>a){
}
4#include <stdio.h> int main() {
C语言练习题-第三章参考答案(已勘误)

C语言练习题-第三章参考答案(已勘误)C语言练习题---第三章1、有以下程序#include<stdio.h>main(){short c=124;c=c_______;printf(“%d\n”,C);}若要使程序的运行结果为248,应在下划线处填入的是A)>>2 B)|248 C)&0248 D)<<12、以下程序运行后的输出结果是2008。
#include<stdio.h>main(){int a=200,b=010;printf(”%d%d\n”,a,b);}3、有以下程序#include<stdio.h>main(){int x,y;Scanf(“%2d%ld”,&x,&y);printf(“%d\n”,x+y);}程序运行时输入:程序的运行结果是34579。
4、有以下程序#includeVoid main(){char a,b,c,d;scanf(”%c%c”,&a,&b);c=getchar(); d=getchar();printf(”%c%c%c%c\n”,a,b,c,d);}当执行程序时,按下列方式输入数据(从第一列开始,代表回车,注意:回车是一个字符)1234则输出结果是:()A、1234B、12C、12D、123 345、有以下程序,其中k的初值为八进制数#includemain(){int k=011;printf(”%d\n”,k++);}程序运行后的输出结果是D(A)12 (B)11 (C)10 (D)96、有以下程序(暂不做)#includevoid fun (char*c,int d){*c=*c+1;d=d+1;printf(”%c,%c,”,*c,d);}main(){char b=’a’,a=’A’;fun(&b,a); printf(”%c,%c\n”,b,a);}程序运行后的输出结果是AA)b,B,b,A B)b,B,B,A C)a,B,B,a D)a,B,a,B7、以下程序#include#define SUB(a) (a)-(a)main(){int a=2,b=3,c=5,d;d=SUB(a+b)*c;printf(”%d\n”,d);}程序运行后的结果是CA)0 B)-12 C)-20 D)108、有以下程序#includemain(){int a=2,b=2,c=2;printf(”%d\n”,a/b&c);}程序运行后的结果是CA)0 B)1 C)2 D)39、将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序拆分并输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章数据类型和表达式3.1 把数学算式或不等式表示成C++表达式1.2x 2.3.4.5.6.7.0(x(20 8.ax-by≠c9.4x+7y-2=3ab 10.(5同时3x+2≠0 11.age(55或者pay(820 12.place="江苏"同时sex="女" 13.'a'(ch('z'或者'A'(ch('Z'14.s[2]='0'同时(s[1]='x' 或者 s[1]='X')参考解答:1.2*x*(1+x*x/3.0)2.(1+exp(x))/(1-exp(x))3.(-b+sqrt(b*b-4*a*c))/(2*a)4.1/(pow(3,x)*log(2*x+k))5.pow(sin(x+PI/4),3)/(3+pow(cos(x-PI/4),3)) //其中PI常量为3.14159 6.1/7.0*pow((1+exp(x+1)),n)7.x>=0 && x<=208.a*x-b*y!=c9.4*x+7*y-2==3*a*b10.fabs((2*x*x+1)/(3*x+2))<=5 && (3*x+2!=0)11.age>=55 || pay>=82012.place=="江苏" && sex=="女"13.(ch>='a' && ch<='z') || (ch>='A' && ch<='Z')14.s[2]=='0' && (s[1]=='x' || s[1]=='X')3.2 根据题目要求编写程序1.已知一个三角形中三条边的长度分别为a、b和c,试编写一个程序利用计算公式求出三角形的面积,其中s=(a+b+c)/2,假定a、b和c的值由键盘输入,并确保任何两边的长度大于等于第三条边。
2.假定一所大学当年招生人数为3000人,若以后每年平均比上一年计划扩招10%,试编写一个程序计算出5年后将计划招生到多少人?3.已知有四个整数为a、b、c、d,试计算出它们的算术平均值和几何平均值。
4.已知x=,y=,试编写一个程序,根据从键盘上输入的a和b的值分别计算出x和y的值。
参考解答:1.#include<iostream.h> //支持输入/输出操作#include<stdlib.h> //支持exit()函数调用#include<math.h> //支持sqrt()函数调用void main(){double a,b,c;cout<<"输入三角形的3条边:";cin>>a>>b>>c;if(a<=0 || b<=0 || c<=0) {cout<<"数据有错! "<<'\n'; exit(1);}if(a+b<c || a+c<b || b+c<a) {cout<<"数据有错! "<<'\n'; exit(1);} double s=(a+b+c)/2;cout<<"三角形面积: "<<sqrt(s*(s-a)*(s-b)*(s-c))<<endl;}2.#include<iostream.h>#include<math.h>void main(){int n=5; //用n表示年数double x=0.1; //用x表示扩大招生的年增长率double y=3000*pow(1+x,n); //用y表示5年后招生人数cout<<"y="<<y<<endl;}3.#include<iostream.h>#include<math.h>void main(){int a,b,c,d;cout<<"输入4个整数:";cin>>a>>b>>c>>d;double v1,v2; //用v1和v2分别保存算术和几何平均值v1=(a+b+c+d)/4.0;v2=pow(a*b*c*d,0.25);cout<<"算术平均值:"<<v1<<endl;cout<<"几何平均值:"<<v2<<endl;}4.#include<iostream.h>#include<stdlib.h>#include<math.h>void main(){double a,b,x,y,temp;cout<<"输入a和b的值: ";cin>>a>>b;if(a+b==0){cout<<"分母为0!\n"; exit(1);}temp=2/(3*(a+b)); //用temp计算两个公式中公共部分的值x=temp*a*sin(a);y=temp*b*cos(b);cout<<"x="<<x<<", "<<"y="<<y<<endl;}3.3 填空题(补充)1.数据类型int、char、bool、float、double等的类型长度分别为、、、和。
2.短整型、标准整型和长整型的最简关键字分别为、和。
3.常数-4.205、1200和6.7E-9分别具有、和位有效数字。
4.数值常量46、0173和0x62对应的十进制值分别为、和。
5.字符常量'k'、'\n'、'\\'、'/052'和'\x66'对应的数值(即十进制的ASCII 码值)分别为、、、和。
6.字符串"It\'s\40an\40apple.\n"中包含有个字符。
7.枚举类型中的每个枚举值都是一个,它的值是一个,值的类型关键字为。
8.实数340.0和0.0527E8对应的规格化浮点数分别为和。
9.常数100、-25、3.62、1E5和-4.73f的数据类型分别为、、、和。
10.若x的值为10,则x+=5的值和运算后的的值相同,等于。
11.若x=5,y=10,则计算y*=++x表达式后,x和y的值分别为和。
12.若x=25,则计算y=x++表达式后,x和y的值分别为和。
13.假定x和ch分别为int型和char型,则sizeof(x)和sizeof(ch)的值分别为和。
14.假定x=64,y=88,则x<<2和y>>2的值分别为和。
15.假定x是一个逻辑量,则逻辑表达式x && true的值与的值相同,x||false的值也与的值相同。
16.假定x是一个逻辑量,则x && !x和x || !x的值分别为和。
17.假定x=10,则表达式(x<=10?20:30)的值为。
18.假定x=10.5,y= -4.6,则表达式floor(fabs(x+y))的值为。
19.表达式sqrt(81)和pow(6,3)的值分别为和。
20.随机函数rand()%20的值在至区间内。
21.数学算式(1+x)sin48(和axbex+1对应的算术表达式分别为和。
参考解答:1.4、1、1、4、82.short、int、long3.4、2、24.46、123、985.107、10、92、42、1026.157.符号常量、整数、int8.3.4E2、5.27E69.int、int、double、double、float10.x、1511.6、6012.26、2513.4、114.256、2215.x、x16.0、117.2018.519.9、21620.0、1921.(1+x)*sin(48*3.14159/180)、a*pow(x,b)*exp(x+1)3.4 指出表达式值的类型(补充)假定各表达式中所使用的变量a为int型,x为double型。
1.327 2.-1.5e63.42.0f4.48L 5.03726.0xabc7.1/3 8.1%39.1.0%310.a*3/x 11.a*(a+x)12.1+a*a13.a+=3 14.x*=215.'x'16.'x'+20 17.true 18.++a19.short(a) 20.bool(x)21.(unsigned int) (0256)22.x=a++ 23.sizeof(bool) 24.char(a+10)25.abs(x) 26.fabs(a)27.floor(x)28.ceil(a) 29.exp(4)+230.rand()31.rand()/100 32.floor(log(x))33.pow(a,4)34.a>10?x:sqrt(x) 35.a>100 36.x!=1037.a && x 38.a<1 || a>10 39.!x40.!(a==0)参考解答:1.int 2.double 3.float 4 5.int 6.int 7.int 8.int 9.double 10.double 11.double 12.int 13.int 14.double 15.char 16.int 17.bool 18.int 19.short 20.bool21.unsigned 22.double 23.int24.char25.int 26.double 27.double 28.doub 29.double 30.int 31.int 32.doub 33.double 34.double 35.bool36.bool37.bool 38.bool 39.bool 40.bool 3.5 求出各表达式的值(补充)假定各表达式中所使用的变量a、x和r分别为int、double和char型,它们的值分别为20、4.7和'a',并假定各表达式互不影响。