何钦铭版C语言第3章答案
C语言程序设计第3版何钦铭-颜-晖--循环结构

第4章循环结构【练习 4-1】在例 4-1 程序中,如果对 item 赋初值 0,运行结果是什么?为什么?如果将精度改为 10-3,运行结果有变化吗?为什么?解答:如果对item赋初值0,则程序运行结果是pi=0,因为item为0时不满足while 循环的执行条件,即不执行循环,故 pi 值为 0。
如果将精度改为 10-3,运行结果会有变化,因为精度改变意味着 while 循环的条件改变,精度变大使得while循环次数减少,必然影响到n的值。
【练习 4-2】运行例 4-2程序时,如果将最后一个输入数据改为-2,运行结果有变化吗?如果第一个输入数据是 -1,运行结果是什么?为什么?解答:如果将最后一个输入数据改为-2,运行结果没有变化,因为最后一个负数是一结束标志,不进行统计,故任意一个负数都可以。
如果第一个输入数据是-1,运行结果是:Grade averageis 0,因为第一个输入就是-1,则while循环条件不成立,不执行循环体。
【练习4-3】序列求和(1-1/4+1/7-1/10+1/13-1/16+…):输入一个正实数eps, 计算序列1-1/4+1/7-1/10+1/13-1/16+…的值,精确到最后一项的绝对值小于eps (保留6位小数)。
试编写相应程序。
解答:#include <stdio.h>#include <math.h>int main(void){int denominator, flag;double item, s,eps;printf(“Input eps:”);scanf(“%lf”,&eps);flag = 1;denominator = 1 ;item = 1.0;s = 0;while(fabs (item) >= eps) {item = flag * 1.0 / denominator;s = s + item;flag = -flag;denominator = denominator +3;}printf ( “s = %f\n”, s);return 0;}【练习4-4】如果将例4-3程序中的do-while语句改为下列while语句,会影响程序的功能吗?为什么?再增加一条什么语句,就可以实现同样的功能?while(number != 0){number = number / 10; count ++;}解答:会有影响,因为当输入数据 number 为 0时,上述 while 循环将不执行,count 值仍为 0,故输出为 0,不符合题目要求。
C语言程序设计课后各章节习题答案

main()
{
float x,y,d;
printf("Input x,y:");
scanf("%f,%f",&x,&y);
d=sqrt((x-2)*(x-2)+(y-2)*(y-2));
if(d>1)printf(ntf("inside");
}
12有一函数
x-1 -5<x<0
y= x x=0
x+1 0<x<8
编写一程序,要求输入x的值,输出y的值。分别用不嵌套的if语句,嵌套的if语句,switch语句编写。
答使用不嵌套的if语句程序如下:
main()
{
int x,y;
printf("Input x:");
scanf("%d",&x);
答main()
{
int x,a,b,c;
printf("Input number:");
scanf("%d",&x);
a=x/100;/*变量a中记录x的百倍数字*/
b=x/10%10;/*变量b中记录x的十位数字*/
c=x%10;/*变量c中记录x的个位数字*/
if(a*a*a+b*b*b+c*c*c==x)
if(m==2)
d=28+f;
else
d=31-(m==4)+(m==6)+(m==9)+(m==11);
printf("%d-%d is %d days.\n",y,m,d);
c语言程序设计 谭浩强版 何钦铭颜晖版习题答案全集

c语言程序设计谭浩强版何钦铭颜晖版习题答案全集【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++)/*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}-----------------------------------------------------------------------------【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 全部课后习题答案

3. /*输入一个学生的数学成绩,低于 60,输出“Fail” ,否则,输出“Pass” 。*/ #include<stdio.h> void main() { double mark; //输入数序成绩 printf(" Input a mark:\n"); scanf("%lf", &mark);
5. /*输入 4 个整数 n, 输出最小值。*/ #include<stdio.h> void main() { int a,b,c,d, min; //输入 4 整数 printf(" Input number of integers n:\n"); scanf("%d%d%d%d", &a,&b,&c,&d);
s ( s a )( s b)( s c), where s
abc 2
源程序: #include<stdio.h> #include<math.h> void main() { double a, b, c, s, area, perimeter; //输入三条边 a,b,c printf(" Input three edges a b c:"); scanf("%lf%lf%lf", &a,&b,&c); //判断 a b c 是否构成三角形 if(a+b>c || a+c>b || b+c>a) { perimeter =a+b+c; s =perimeter/2; area =sqrt( s*(s-a)*(s-b)*(s-c) ); printf(“ area=%.2f, parameter=%.2f \n”, area, parameter); } else printf("These sides do not correspond to a valid triangle. \n"); }
C语言程序设计 (何钦铭 ) 高教版 第2版 课后习题答案

2-13 编写程序,输入一个正整数 n,求 i 1 。
i
1
解答: #include <stdio.h> int main(void) { int i, n; double sum; scanf("%d", &n); sum = 0; for(i = 1; i <= n; i++) sum = sum + 1.0 / i; printf("sum = %.6f\n", sum);
18
2-4 编写程序,求华氏温度 150° F 对应的摄氏温度(计算公式同例 2-3)。 解答: #include <stdio.h> int main(void) { int celsius, fahr; fahr = 150; celsius = 5 * (fahr – 32) / 9; printf("fahr = %d, celsius = %d\n", fahr, celsius); return 0; } 2-5 算 术 表 达 式 5*(fahr-32)/9 能 改 写 成 5(fahr-32)/9 吗 ? 为 什 么 ? 如 果 将 其 改 写 为 5/9*(fahr-32),会影响运算结果吗? 解答: 5(fahr-32)/9 不是合法的 C 表达式,因为不能省略运算符*;5/9*(fahr-32)的值为 0。 2-6 一个物体从 100 米的高空自由落下,编写程序,求它在前 3 秒内下落的垂直距离。设重 力加速度为 10m/s2。 解答: #include <stdio.h> int main(void) { double height; height = 0.5 * 10 * 3 * 3; printf("height = %.2f\n", height); return 0; } 2-7 输入提示和输入语句的顺序应该如何安排?例 2-5 中, scanf("%d%d%lf", &money, &year, &rate) 能 改 写 为 scanf("%d%lf%d", &money, &year, &rate) 吗 ? 为 什 么 ? 能 改 写 为 scanf("%d%lf%d", &money, &rate, &year) 吗?如果可以,其对应的输入数据是什么? 解答: 输入提示在前,输入语句在后。 不能改写为 scanf("%d%lf%d", &money, &year, &rate),因为%lf 与整型变量 money 不匹 配,%d 与浮点型变量 rate 不匹配。 与 scanf("%d%lf%d", &money, &rate, &year)对应的输入数据为:1000 0.025 3 2-8 编写程序,输入华氏温度,输出对应的摄氏温度,计算公式同例 2-3。 解答: #include <stdio.h> int main(void) { int celsius, fahr;
C语言第3章课后习题答案PPT课件

}2020/10/13
4
谢谢您的指导
THANK YOU FOR YOUR GUIDANCE.
感谢阅读!为了方便学习和使用,本文档的内容可以在下载后随意修改,调整和打印。欢迎下载!
汇报人:XXXX 日期:20XX年XX月XX日
5
printf("x=%3d,y=2*x+1=%d\n",x,y);
}
else
/*若x≥10*/
{ y=3*x+2;
printf("x=%3d,y=3*x+2=%d\n",x,y);
}
}
2020/10/13
2
程序如下: #include <stdio.h>
【习题3-13】答案
void main( )
printf("total=%f",money);
} 2020/10/13
3
【习题3-14】方法1
#include<stdio.h>
void main()
{ char chr;
char password;
chr=getchar();
password=chr+6;
if(chr<=90)
{ if(password>90)
password=(password%91)+'A';
else
password=password%91;
}
else
{ if(password>=123)
password=(password%123)+'a';
else
password=password%123;
c语言答案第三章

第三章计习题解答3.1 用C语言描述下列命题。
(1) a小于b或小于c。
(2) a和b都大于c。
(3) a和b中有一个小于c。
(4) a是非正整数。
(5) a是奇数。
(6) a不能被b整除。
(7) 角A在第一或第三象限。
(8) a是一个带小数的正数,而b是一个带小数的负数。
[解答](1)a<b || a<c(2)a>c && b>c(3)a<c && b>=c || a>=c && b<c(4)a==(int)a && a<=0(5)a%2==1(6)a%b!=0(7)0<fmod(A,2*PI) && fmod(A,2*PI)<PI/2 || PI<fmod(A,2*PI) && fmod(A,2*PI)<3*PI/2(其中PI=3.14159265为圆周率)(8)a-(int)a>0 && b-(int)b<03.2 写出下列表达式的值。
(1) 1<4 && 4<7(2) 1<4 && 7<4(3) !(2<=5)(4) !(1<3)||(2<5)(5) !(4<=6) && (3<=7)[解答](1) 1 (2) 0 (3) 0 (4) 1 (5) 03.3 若x=3,y=z=4,求下列表达式的值。
(1) (z>=y>=x)? 1:0(2) z>=y && y>=x[解答](1) 0 (2) 13.4 若x=3,y=2,z=1,求下列表达式的值。
(1) x<y? y:x(2) x<y? x++:y++(3) z+=(x<y?x++:y++)[解答](1) 3 (2) 2 (3) 33.5 写出下面程序段的输出结果。
《C语言程序设计》-何钦铭

《C语⾔程序设计》-何钦铭第⼀章引⾔1.2 程序与程序设计语⾔冯 · 诺依曼模型的存储程序概念:将程序与数据共同存储结构化的程序设计⽅法:将复杂程序划分为若⼲个相互独⽴的模块(⼀个模块可以是⼀条语句、⼀段程序或⼀个函数等)使完成每个模块的⼯作变得单纯⽽明确,在设计⼀个模块时不受其他模块的牵连。
同时,通过现有模块积⽊式的扩展就可以形成复杂的、更⼤的程序模块或程序1.3 C语⾔的发展历史与特点C语⾔的特点:(拥有底层操作能⼒)1.结构化语⾔2.易于移植3.简洁紧凑,使⽤⽅便灵活4.强⼤的处理能⼒5.⽣成的⽬标代码质量⾼,运⾏效率⾼第⼆章⽤C语⾔编写程序2.3 计算分段函数#include <stdio.h> //编译预处理指令程序运⾏时,⾸先从main函数开始运⾏%f指定输出时保留6位⼩数,%.2f则指定输出时保留2位⼩数循环体语句只能是⼀条语句(如果循环体语句由多条语句组成,必须⽤⼤括号把他们括起来,变成⼀条复合语句)整型数据的输出格式控制说明%md,指定了数据的输出宽度为m(包括符号位)。
若数据的实际位数(含符号位)⼩于m,左端补空格;若⼤于m,按实际位数输出实型数据的输出格式控制说明 %m.nf,指定了输出浮点型数据时保留n位⼩数,且输出宽度是m(包括符号位和⼩数点)。
若数据的实际位数(含符号位)⼩于m,左端补空格;若⼤于m,按实际位数输出f是针对浮点型数据⽽⾔,若输出数据为整型,则%m.nf应改为%md赋值运算符左边只能是⼀个变量第三章分⽀结构ch = getchar() //从键盘输⼊⼀个字符,并赋值给变量chputchar(输出参数); //输出参数是字符型变量或字符型常量第四章循环结构else和 if 的匹配准则:else与最靠近它的、没有与别的 else 匹配过的匹配do-while语句:循环条件需要在循环体中明确,且⾄少会执⾏⼀次循环体do {循环体语句} while (表达式);//判断⼀个数是否为素数#include <stdio.h>int main() {int i,m;printf("Enter a number:");scanf("%d", &m);for(i=2;i<=m/2;i++)if(m%i==0)break; //若m能被某个i整除,则m不是素数,提前结束循环if(i>m/2 && m!=1) //若循环正常结束,说明m不能被任何⼀个i整除printf("%d is a prime number! \n", m);elseprintf("No! \n");return 0;}break语句强制循环结束,不再执⾏循环体中位于其后的其他语句,break语句应该和if语句配合使⽤,即条件满⾜时,才执⾏break跳出循环;否则若break⽆条件执⾏,意味着永远不会执⾏循环体中break后⾯的其他语句continue语句:跳过循环体中continue后⾯的语句,继续下⼀次循环,continue语句⼀般也需要与if语句配合使⽤break语句和continue语句的区别在于,break结束循环,⽽continue跳过后⾯语句继续循环。
C语言程序设计 (何钦铭 颜晖 著)课后习题答案 浙江科学技术出版社

习题参考答案 习题一 1./*在C语言中,下列标识符中哪些是合法的,哪些不合法?”*/合法:total, _debug, Counter1, begin_不合法:Large&Tall2. /*写出流程图,求1~100中能被6整除的所有整数之和*/3./*写出源程序,求1~100中能被6整除的所有整数之和”。
*/#include<stdio.h>void main(){int sum=0, i;for(i=1; i<=100; i++)if( i%6==0) sum =sum+i;sum);printf(“sum=%d”,}4./*画流程图,判别整数n是否是素数*/习题参考答案 习题十1.选择题(1) A(2) C(由于p指向x, 等式p≡&x, *p≡x成立. 故&*p≡&x≡p)(3) B (int c[]={1, 7, 12}; → c[0]=1, c[1]=7, c[2]=12. 而k=c, 即k指向数组c的首元素c[0]。
printf(“…”, *++k); 输出参数*(++k)的值是*(k+1), 即c[1] )(4) D (对字符数组只能在定义的同时赋初值,但不能在定义之后再用‘=’赋值)(5) D(*p[3]是由3个整型指针组成的数组,p是数组名,代表该数组的基地址,是地址常量,不能对p赋值,故A,C错。
*p代表p[0]这个指针,a[0]是普通整型变量,两者不应互相赋值,故B错。
p[0]=&a[0]或p[0]=a,都是正确的,作用是令p[0]这个指针指向数组a的首元素a[0])(6) D ( 指针数组元素p[3]是一个指针,指向a[3*3]=a[9], 即*p[3]==a[9] 而二维数组元素p[3][2]= *(p[3]+2)=*(&a[9]+2)=*(&a[11])=a[11])2./*写输出结果*/(1) 3,2,5 # 3,3,4 #注: z是全局变量,它在p()中有效,但在main()中另有与它同名的局部变量,所以在main()中无效。
《C语言程序设计》第4版何钦铭、颜晖主编课后习题答案

《C语⾔程序设计》第4版何钦铭、颜晖主编课后习题答案第2章 ⽤C语⾔编写程序Page 0201#include<stdio.h>//练习2-32int main(void)3{4 int i,j,k;5 for(int i=1;i<=4;i++)//第i⾏6 {7 for(int j=1;j<=i-1;j++)//j个空格8 {9 printf(" ");10 }11 for(k=1;k<=5-i;k++)//k个*12 {13 printf("* ");14 }15 printf("\n");16 }1718 return 0;19}Page 0231#include<stdio.h>2int main(void)3{4 int f,c;//练习2-55 f=150;6 c=5*(f-32)/9;//或者是c=5/9.0*(f-32)||c=5.0/9*(f-32),但不可以是5/9,会得到0.因为:两个整型数据做除法运算,结果⼀定是整数。
7 printf("华⽒温度%d对应的摄⽒温度为%d.\n",f,c);89 printf("\n");1011 /*计算物体⾃由下落的距离(练习2-6)*/12 int h,g,t;13 t=3;//下落时间14 g=10;//重⼒加速度 10m/s^215 h=g*t*t/2;16 printf("⼀个物体从100⽶的⾼空⾃由下落,前3秒内下落的距离为:%d⽶.\n",h);1718 return 0;19}20Page 0292#include<math.h>3int main(void)4{5 /*计算摄⽒温度(练习2-8)*/6 double c,f;7 printf("输⼊华⽒温度:");8 scanf("%lf",&f);9 c=5*(f-32)/9.0;10 printf("华⽒温度%.2lf对应的摄⽒温度为%.3lf\n",f,c);1112 printf("\n");1314 /*整数四则运算(练习2-9)*/15 int x,y,z_1,z_2,z_3;16 double z_4;17 printf("输⼊两个正整数x,y:");18 scanf("%d %d",&x,&y);19 z_1=x+y;20 z_2=x-y;21 z_3=x*y;22 z_4=x/y;23 printf("%d和%d的和为%d,差为%d,积为%d,商为%lf\n",x,y,z_1,z_2,z_3,z_4); 2425 printf("\n");2627 /*计算分段函数(判断x是否不为0)(练习2-10)*/28 double x_1,y_1;29 printf("输⼊x_1:");30 scanf("%lf",&x_1);31 if(x_1!=0)32 y_1=1/x_1;33 else y_1=0;34 printf("输⼊%.2lf时,对应的y值为%.1lf\n",x_1,y_1);3536 printf("\n");3738 /*计算分段函数(判断x是否⼩于0)(练习2-11)*/39 double x_2,y_2;40 printf("输⼊x_2:");41 scanf("%lf",&x_2);42 if(x_2<0)43 y_2=pow(1+x_2,2)+2*x_2+1/x_2;44 else y_2=sqrt(x_2);45 printf("输⼊%.2lf时,对应的y值为%.2lf\n",x_2,y_2);464748 printf("\n");4950 return 0;51}Page 0372int main(void)3{4 int i,n,flag;//例2-85 double t,sum;6 printf("输⼊⼀个正整数n:");7 scanf("%d",&n);8 sum=0;9 flag=1;10 for(i=1;i<=n;i++)11 {12 t=flag*(1.0/(2*i-1));13 sum+=t;14 flag=(-1)*flag;1516 }17 printf("sum=%lf\n",sum);1819 printf("\n");2021 /*求1+1/2+···的前n项和(练习2-13)*/22 int n_1,j;23 double sum_1=0;24 printf("Enter n_1(n_1>=0):");25 scanf("%d",&n_1);26 for(j=1;j<=n;j++)27 {28 sum_1+=1.0/j;29 }30 printf("sum_1=%.2lf\n",sum_1);3132 printf("\n");3334 /*求1+1/3+1/5+···的前n项和(练习2-14)*/35 int n_2,k;36 double sum_2;37 printf("Enter n_2:");38 scanf("%d",&n_2);39 for(k=1;k<=n_2;k++)40 {41 sum_2+=1.0/(2*k-1);42 }43 printf("sum_2=%.2lf\n",sum_2);4445 printf("\n");4647 /*求1-1/4+1/7-1/10+···的前n项和(练习2-15)*/48 int n_3,m,flag_1=1;49 double sum_3=0;50 printf("Enter n_3:");51 scanf("%d",&n_3);52 for(m=1;m<=n;m++)53 {54 sum_3+=flag_1*1.0/(3*m-2);55 flag_1=flag_1*(-1);56 }57 printf("sum_3=%.2lf\n",sum_3);5859 return 0;60}Page 0402#include<math.h>3int main(void)4{5 int n,i;6 double power;7 printf("Enter n:");8 scanf("%d",&n);9 printf("2的乘⽅表:\n");10 for(i=0;i<=n;i++)11 {12 power=pow(2,i);13 printf("2的%d次⽅为%.0lf\n",i,power);14 }1516 printf("\n");1718 /*3的乘⽅表(练习2-17)*/19 int m,j;20 double power_1;21 printf("Enter m:");22 scanf("%d",&m);23 for(j=0;j<=m;j++)24 {25 power_1=pow(3,j);26 printf("pow(3,%d)=%.lf\n",j,power_1);27 }2829 return 0;30}1#include<stdio.h>//练习2-182double fact(int n)3{4 int i;5 double product;6 product=1;7 for(i=1;i<=n;i++)8 {9 product*=i;10 }1112 return product;13}14int main(void)15{16 int n,m,i;17 double result_1,result_2,result_3,c;18 printf("输⼊两个正整数m和n(m<=n):");19 scanf("%d %d",&m,&n);20 for(i=0;i<=n;i++)21 {22 result_1=fact(i);23 }24 for(i=0;i<=m;i++)25 {26 result_2=fact(i);27 }28 for(i=0;i<=n-m;i++)29 {30 result_3=fact(i);31 }32 c=result_1/(result_2*result_3);33 printf("c=%.lf",c);3435 return 0;36}。
C语言程序设计(何欣铭、颜晖 第2版)课后习题答案

解答: #include <stdio.h> int main(void) { int flag, i, n, denominator; double item, sum; scanf("%d", &n); sum = 0; flag = 1; denominator = 1; for(i = 1; i <= n; i++){ item = flag * 1.0 / denominator; sum = sum + item; flag = -flag; denominator = denominator + 3; } printf("sum = %.3f\n", sum); return 0; } 2-16 编写程序,输入两个正整数 m 和 n,计算 m! + n!。 解答: #include "stdio.h"
22
int main(void) { int i, m, n; double fm, fn; scanf("%d%d", &m, &n); fm = 1; for(i = 1; i <= m; i++) fm = fm * i; fn = 1; for (i = 1; i <= n; i++) fn = fn * i; printf("%d! + %d! = %.0f\n", m, n, fm+fn); return 0; } 2-17 执行下列程序段后,sum 的值是 for (i = 1; i <= 10; i++){ sum = 0; sum = sum + i; } 解答:sum 的值是 10。 。
C语言程序设计(高教版何钦铭主编)课后答案

前7章绝大部分都有。
水平有限(只学了3三个月),仅供参考。
/*计算2^i的前n项和*/#incl ude<s tdio.h>#i nclud e<mat h.h>int m ain(v oid){in t i,n;do ublesum;prin tf("E ntern:");sca nf("%d",&n);s um=0;for(i=1;i<=n;i++){su m=sum+pow(2,i);}print f("su m=%.0f\n",sum);ret urn 0;}/*输入若干个学生的成绩,计算平均分,并统计个等级成绩的个数。
成绩分为5个等级:分别为A(90~100)、B(80~89)、C(70~79)、D(60~69)、E(0~59)*/#in clude<stdi o.h>int m ain(v oid){in t gra de,A,B,C,D,E,n;dou ble t otal;pri ntf("Enter grad e:\n");s canf("%d",&grad e);A=B=C=D=E=0;t otal=0;n=0;while(grad e>=0){i f(gra de<=59)E++;el se if(grad e<=69)D++;els e if(grade<=79)C++;else if(g rade<=89)B++;elseA++;n++;tot al=to tal+g rade;sc anf("%d",&grade);}if(n==0){p rintf("gra de av erage=0\n");print f("A=0\nB=0\nC=0\nD=0\nE=0\n");}else{p rintf("gra de av erage=%.2f\n",t otal/n);prin tf("A=%d\n B=%d\nC=%d\nD=%d\nE=%d\n",A,B,C,D,E);}ret urn 0;}/*输入职工的月薪sala ry,输出应交的个人所得税ta x*/#inclu de<st dio.h>int main(void){int s alary;do ubletax;prin tf("E ntersalar y:");sca nf("%d",&s alary);i f(sal ary<=850)tax=0;elseif(sa lary<=1350)t ax=5.0*(sa lary-850)/100;else if(s alary<=2850)tax=10.0*(salar y-850)/100;el se if(sala ry<=5850)tax=15.0*(sal ary-850)/100;elsetax=20.0*(sal ary-850)/100;print f("ta x=%.2f\n",tax);ret urn 0;}/*计算1-2/3+3/5-4/7+5/9-6/11+…*/#i nclud e<std io.h>intmain(void){i nt i,n,fz,fm,fl ag; /*fz分子,fm分母,flag符号*/doubl e ite m,sum; /*item是第n项的值,sum存放计算结果*/print f("En ter n:");scan f("%d",&n);fz=fm=f lag=1;su m=0;for(i=1;i<=n;i++){ite m=1.0*flag*fz/f m;sum=s um+it em;fz++;f m=fm+2;flag=-flag;}prin tf("s um=%.2f\n",sum);re turn0;}/*输出21世纪所有的闰年。
C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第三章 课后答案

total=total+score;
}
printf("The average score is %.2f.\n",total/n);
printf("The numbers of passing is %d.\n",num);
}
练习3-10
#include <stdio.h>
ch=getchar();
switch(ch){
case 'A':printf("The score is between 90--100.\n");break;
case 'B':printf("The score is between 80-- 89.\n");break;
case 'C':printf("The score is between 70-- 79.\n");break;
printf("The numbers of grade C(70~79) is %d.\n",numc);
printf("The numbers of grade D(60~69) is %d.\n",numd);
printf("The numbers of grade E(0~59) is %d.\n",nume);
else if(score<=100)numa++;
total=total+score;
}
printf("The average score is %.2f.\n",total/n);
c语言程序设计何钦铭第二版

c语言程序设计何钦铭第二版C语言程序设计是一门基础而重要的计算机编程课程,它为学习者提供了一种高效、灵活的编程工具。
何钦铭教授的《C语言程序设计》第二版,是众多编程教材中的佼佼者,以其深入浅出的讲解和丰富的实例,深受广大学生和教师的喜爱。
第一章:C语言概述C语言由丹尼斯·里奇(Dennis Ritchie)在20世纪70年代初开发,最初用于UNIX操作系统。
C语言以其简洁、高效、可移植的特点,成为系统编程和嵌入式编程的首选语言。
何钦铭教授在书中详细介绍了C 语言的发展历史、特点以及在现代编程领域的应用。
第二章:C语言基础本章深入讲解了C语言的基本语法,包括数据类型、变量声明、运算符和表达式等。
何教授通过实例代码,帮助读者理解C语言的基本概念,并强调了良好的编程习惯对于编写高质量程序的重要性。
第三章:控制语句控制语句是程序流程控制的核心。
何教授详细介绍了条件语句(if)、循环语句(for、while、do-while)以及选择语句(switch-case)的使用方法和应用场景,并通过实际问题引导读者掌握这些语句的逻辑结构。
第四章:函数函数是模块化编程的基础。
何教授在本章中讲解了函数的定义、声明、调用以及参数传递机制。
此外,还介绍了递归函数的概念和应用,以及如何通过函数实现代码复用和模块化。
第五章:数组数组是存储多个元素的集合,何教授在本章中详细讲解了一维数组和二维数组的声明、初始化和访问方法。
同时,还介绍了数组在排序、搜索等算法中的应用。
第六章:指针指针是C语言中一个强大的概念,它允许程序员直接操作内存地址。
何教授在本章中详细讲解了指针的基本概念、指针与数组的关系、指针的运算以及指针在函数中的应用。
第七章:结构体与联合体结构体和联合体是C语言中用于创建复杂数据类型的重要工具。
何教授在本章中介绍了如何定义和使用结构体和联合体,以及它们在数据组织和管理中的作用。
第八章:预处理指令预处理指令是C语言编译过程中的指令,用于控制编译器的行为。
C语言实验报告第3章答案

3.2基础实验一、程序分析1.以下程序若输入’a’,则输入格式为:__c1=a____;运行结果为:___a,A↙_____。
#include<stdio.h>intmain( ){char c1,c2;scanf(“c1=%c”,&c1);c2=c1-32;printf(“%c,%c\n”,c1,c2);return 0;}2.以下程序如果使得a的值为2、b的值为3,则输入格式为:_a=2,b=3__;运行结果为:_2,3↙_。
#include<stdio.h>intmain( ){ int a,b;scanf(“a=%d,b=%d”,&a,&b);printf(“%d,%d\n”,a,b);return 0;}3.以下程序若输入12.3、7.6、1.1,则输入格式为:_12.3 7.6 1.1__;运行结果为:_aver=7.00___。
#include<stdio.h>intmain( ){ floata,b,c,d;scanf(“%f%f%f”,&a,&b,&c);d=(a+b+c)/3;printf(“aver=%.2f”,d);return 0;}二、程序填空1.输入一个四位整数,求各位数字之和(如1234,则结果为1+2+3+4=10)。
若输入3562,则运行结果为:___3+5+6+2=16↙____________。
#include <stdio.h>intmain( ){ int n,a,b,c,d,m;scanf(“%d”,&n);a=n%10;b=(n/10)%10;c=(n/100)%10;d=__n/1000________;m=__a+b+c+d________;printf(“%d+%d+%d+%d=%d\n ”, d,c,b,a,m);return 0;}2.给定一个华氏法表示的温度值,将其转换为摄氏法表示的温度,转换公式为则运行结果为:__f=64.00,c=17.78↙__。
《C语言程序设计》(第3版)-何钦铭-12章 chap03_分支结构

Input your number:38 Ok! you are right!
printf("Ok! you are right!\n");
else
if(yournumber > mynumber )
printf("Sorry! your number is bigger than my number!\n");
digit ++; else
input 10 characters: Reold 123?
other ++;
letter=5, digit=3, other=2
}
printf(“letter=%d,digit=%d,other=%d\n”, letter, digit, other);
#include <> int main(void) { int digit, i, letter, other;
例3-7 输入10个字符,统计 其中英文字母、数字字符
char ch;
和其他字符的个数。
digit = letter = other = 0;
printf(“Enter 10 characters: ");
printf( “It is a letter.\n”); else
printf(“It is not a letter.\n ”);
-1 <= x <= 1
0
-1
1
x
x >= -1 并且 x <= 1
x >= -1 && x <= 1
逻辑与 && 逻辑或 || 逻辑非 !
何钦铭版C语言第3章答案

1 x0 4.有一函数 y 0 x 0 ,以下程序段中错误的是 1 x 0
C
。
A.if(x > 0) y = 1; B.y=0; else if(x == 0) y = 0; if(x > 0) y = 1; else y = -1; else if(x < 0) y = -1; C.y = 0; D.if(x >= 0) if(x >= 0); if(x > 0) y = 1; if(x > 0) y = 1 ; else y = 0; else y = -1; else y = -1; 5.下列程序段的输出结果是 C 。 int main(void) { int a = 2, b = -1,c = 2; if(a < b) if(b < 0) c = 0; else c++; printf("%d\n",c); return 0; } A.0 B.1 C .2 D.3 6.下列程序段的输出结果是 A 。 int main(void) { int x = 1,a = 0,b = 0; switch(x) { case 0: b++; case 1: a++ case 2: a++;b++; } printf("a=%d,b=%d\n",a,b); return 0; } A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2 7. 在执行以下程序时, 为使输出结果为: t=4, 则给 a 和 b 输入的值应满足的条件是 int main(void) {
C.和之前与其最近的且不带else 的if 配对 D.和之前的第一个if 配对 3.下列叙述中正确的是 D 。 A.break 语句只能用于switch 语句 B.在switch 语句中必须使用default C.break 语句必须与switch 语句中的case 配对使用 D.在switch 语句中,不一定使用break语句
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if(c>='a' && c <= 'z' || c>='A' && c <= 'Z') letter++; else if(c>='0' && c <= '9') digit++; else if(c==' '||c=='\n') blank++; else other++; } printf("letter=%d,blank=%d,digit=%d,other=%d\n", letter, blank, digit, other); return 0; } 练习 3-5 输入一个年份 year,判断该年是否为闰年。判断闰年的条件是:能被 4 整除但 不能被 100 整除,或者能被 400 整除。 解答: # include <stdio.h> int main(void) { int year; printf("Enter year: "); scanf("%d", &year); if( (year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0) printf("It is a leap year\n"); else printf("It is not a leap year\n "); return 0; } 练习 3-6 在例 3-8 程序中,如果把 switch 语句中所有的 break 都去掉,运行结果会改变 吗?如果有变化,输出什么?为什么? 解答: 如果去掉所有的 break 语句,运行结果会改变,输出 price = 0.0 ,因为不管 choice 值与 其中某个常量表达式相等,当去掉 break 语句时,其后的所有语句段都将运行,故每次都将 执行到 price=0.0 语句为止。 练习 3-7 输入五级制成绩 (A-E) , 输出相应的百分制成绩 (0-100) 区间, 要求使用 switch 语句。例如,输入 A,输出 90-100。五级制成绩对应的百分制成绩区间为:A(90-100) 、 B(80-89) 、C(70-79) 、D(60-69)和 E(0-59) 。 解答: #include <stdio.h> int main(void) { char ch;
1 x0 4.有一函数 y 0 x 0 ,以下程序段中错误的是 1 x 0
C
。
A.if(x > 0) y = 1; B.y=0; else if(x == 0) y = 0; if(x > 0) y = 1; else y = -1; else if(x < 0) y = -1; C.y = 0; D.if(x >= 0) if(x >= 0); if(x > 0) y = 1; if(x > 0) y = 1 ; else y = 0; else y = -1; else y = -1; 5.下列程序段的输出结果是 C 。 int main(void) { int a = 2, b = -1,c = 2; if(a < b) if(b < 0) c = 0; else c++; printf("%d\n",c); return 0; } A.0 B.1 C .2 D.3 6.下列程序段的输出结果是 A 。 int main(void) { int x = 1,a = 0,b = 0; switch(x) { case 0: b++; case 1: a++ case 2: a++;b++; } printf("a=%d,b=%d\n",a,b); return 0; } A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2 7. 在执行以下程序时, 为使输出结果为: t=4, 则给 a 和 b 输入的值应满足的条件是 int main(void) {
45
改变else 和 if 的配对
例3-12 改写下列 if 语句,使 else 和第1个 if 配对。 if (x < 2) if (x < 1) y = x + 1; else y = x + 2; 每条语句的执行条件? if (x < 2){ if (x < 1) y = x + 1; } else y = x + 2; if (x < 2) if (x < 1) y = x + 1; else; else y = x + 2;
case 4: price=10.20; break; default: price=0; } printf("price=%0.2f\n", price); } } return 0; } 练习 3-9 请读者重新编写例 3-4 的程序,要求使用嵌套的 if - else 语句,并上机运行。 解答: #include <stdio.h> int main(void) { double x, y; scanf("%lf", &x); if (x >15){ y = 2.5 * x - 10.5; } else { if(x<0) y=0; else y=4*x/3; } printf("f(%.2f)=%.2f\n", x, y); return 0; } 练习 3-10 在例 3-12 中, 改写 if 语句前, y= x + 1;和 y= x + 2; 两条语句的执行条件是什么? 改写后呢? 解答: 改写前:y=x+1 的执行条件是 x<1; y=x+2 的执行条件是 1<=x<2。 改写后:y=x+1 的执行条件是 x<1; y=x+2 的执行条件是 2<=x。
3.3.2 习题参考答案
一.选择题 1.能正确表示逻辑关系:“a≥10 或 a≤0”的 C 语言表达式是 D 。 A.a >= 10 or a <= 0 B.a >= 0 | a <= 10 C.a >= 10 && a <= 0 D.a >= 10 || a <= 0 2.在嵌套使用if 语句时,C 语言规定else 总是 C 。 A.和之前与其具有相同缩进位置的if 配对 B.和之前与其最近的if 配对
C.和之前与其最近的且不带else 的if 配对 D.和之前的第一个if 配对 3.下列叙述中正确的是 D 。 A.break 语句只能用于switch 语句 B.在switch 语句中必须使用default C.break 语句必须与switch 语句中的case 配对使用 D.在switch 语句中,不一定使用break语句
printf("Input Grade: "); ch = getchar(); switch(ch){ case 'A': printf("%c 对应的百分制区间是 90-100\n",ch); break; case 'B': printf("%c 对应的百分制区间是 80-89\n",ch); break; case 'C': printf("%c 对应的百分制区间是 70-79\n",ch); break; case 'D': printf("%c 对应的百分制区间是 60-69\n",ch); break; case 'E': printf("%c 对应的百分制区间是 0-59\n",ch); break; default: printf("Invalid input\n"); } return 0; } 练习 3-8 查询水果的单价。有 4 种水果,苹果(apples) 、梨(pears) 、桔子(oranges)和葡 萄(grapes) ,单价分别是 3.00 元/公斤,2.50 元/公斤,4.10 元/公斤和 10.20 元/公斤。在屏 幕上显示以下菜单(编号和选项) ,用户可以连续查询水果的单价,当查询次数超过 5 次时, 自动退出查询;不到 5 次时,用户可以选择退出。当用户输入编号 1~4,显示相应水果的 单价(保留两位小数) ;输入 0,退出查询;输入其他编号,显示价格为 0。 [1] apples [2] pears [3] oranges [4] grapes [0] Exit 解答: #include <stdio.h> int main(void) { int ri; int choice; float price; for(ri=1; ri<=5; ri++){ printf("[1] apples\n"); printf("[2] pears\n"); printf("[3] oranges\n"); printf("[4] grapes\n"); printf("[0] Exit\n"); scanf("%d", &choice); if(choice==0) break; else { switch(choice){ case 1: price=3.00; break; case 2: price=2.50; break; case 3: price=4.10; break;
分支结构:
if-else语句