C语言程序设计(第2版)课后习题答案
第一章
1.请参照本章例题,编写一个C程序,输出以下信息:
**************************
Very good!
**************************
解:
#include<stdio.h>
void main()
{
printf("**************************");
printf("\n");
printf("Very good!\n");
printf("\n");
printf("**************************");
}
2.编写一个C程序,输入a、b、c三个值,输出其中最大值。
解:
#include<stdio.h>
void main()
{
int a,b,c,max;
printf("请输入三个数a,b,c:\n");
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(max<b) max=b;
if(max<c) max=c;
printf("最大数为: %d",max);
forwarder是什么意思}
第二章
1.假如我国国民生产总值的年增长率为10%,计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式为P=(1+r)^n,r为年增长率;n为年数;P为与现在相比的百分比。
解:
#include<stdio.h>
#include<math.h>
void main()
{
double P, r=0.1, n=10;
P=pow((1+r), n);
printf("%lf\n", P);
}
3.请编程序将"China"译成密码,译码规律是用原来字母后面的第4个字母代替原来的字母。例如,字母"A"后面第4个字母是"E", "E"代替"A"。因此,"China"应译为"Glmre"。请
seajs怎么刷新本地缓存编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为'C'、'h'、'i'、'n'、'a',经过运算,使c1、c2、c3、c4、c5分别变为'G'、'l'、'm'、'r'、'e',并输出。
解:
#include <stdio.h>
void main()
{
char c1='C',c2='h',c3='i',c4='n',c5='a';
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
第三章
3.用下面的scanf函数输入数据,使a=3, b=7, x=8.5, y=71.82, c1='A', c2='a'。问在键盘上如何输入?
解:
#include<stdio.h>
void main()
{
int a, b; float x, y; char c1, c2;
scanf("a=%d, b=%d", &a, &b);
scanf(" x=%f, y=%e", &x, &y);
scanf(" c1=%c, c2=%c",&c1, &c2);
}
a=3, b=7
x=8.5, y=71.82
c1=A, c2=a
5. 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后2位数字。请编程序。
解:
#include<stdio.h>
void main()
{
float r,h,C1,Sa,Sb,Va,Vb;
scanf("%f,%f",&r,&h);
C1=2*3.14*r;
Sa=3.14*r*r;
Sb=4*Sa;
Va=4*3.14*r*r*r/3;
Vb=Sa*h; putchar函数
printf("C1=%.2f\n",C1);
printf("Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n",Sa,Sb,Va,Vb);
}
6. 输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9,输出要求有文字说明,取位2小数。
解:
#include<stdio.h>
void main()
{
float F,c;
scanf("%f",&F);
c=5*(F-32)/9;
printf("c=%.2f",c);
}
7. 编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。思考以下问题:
(1)变量c1、c2应定义为字符型或整形?或二者皆可?
(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?
(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:
char c1,c2;与int c1, c2; 是否无条件地等价?
解:
#include<stdio.h>
void main()
{
char c1,c2;
c1=getchar();
c2=getchar();
putchar(c1);putchar(‘\n');putchar(c2);putchar(‘\n');
}
#include<stdio.h>
void main()
{
char c1,c2;
c1=getchar();
c2=getchar();
printf("c1=%d c2=%d\n",c1,c2);
printf("c1=%c c2=%c\n",c1,c2);
}
第四章
3. 写出下面各逻辑表达式的值。设a=3,b=4,c=5。
(1) a+b>c&&b==c
(2) a||b+c&&b-c
(3) !(a>b)&&!c||1
(4) !(x=a)&&(y=b)&&0
(5) !(a+b)+c-1&&b+c/2
解:
(1) 0
(2) 1
(3) 1
(4) 0
(5) 1
5. 有3个整数a、b、c,由键盘输入,输出其中最大的数,请编程序。
解:
澳大利亚核潜艇#include<stdio.h>
void main()
{
int a,b,c,temp,max;
printf("请输入3个整数: ");
scanf("%d,%d,%d",&a,&b,&c);
temp=(a>b)?a:b;
max=(temp>c)?temp:c;
printf("3个整数的最大数是%d\n",max);
}
6. 给一个百分制成绩,要求输出等级'A'、'B'、'C'、'D'、'E'。90分以上为'A',80~90分为'B',70~79分为'C',60分以下为'D'。
解:
#include<stdio.h>
void main()
{
float score;
char grade;
printf("请输入学生成绩: ");
scanf("%f",&score);
while(score>100||score<0)
{ printf("\n输入有误,请重新输入: ");
scanf("%f", &score);
}
switch((int)(score/10))
{
case 10:
case 9: grade='A';break;
case 8: grade='B';break;
js合并两个数组case 7: grade='C';break;
case 6: grade='D';break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: grade='E';break;
}
multipleirp电脑蓝屏printf("成绩是%5.1f, 相应的等级是%c. \n",score,grade);
}
7. 给定一个不多于5位的正整数,要求:
(1)求出它是几位数;
(2)分别输出每一位数字;
(3)按逆序输出各位数字。例如原数为321,应输出123。
解:
#include <stdio.h>
void main()
{
long int num;
int indiv,ten,hundred,thousand,ten_thousand,place; /*分别代表个位、十位、百位、千位、万位和位数*/
printf("请输入一个整数(0~99999): ");
scanf("%ld",&num);
if (num>9999) place=5;
else if(num>999) place=4;
else if(num>99) place=3;
else if(num>9) place=2;
else place=1;
printf("place =%d\n", place);
ten_thousand=num/10000;
thousand=num/1000%10;
hundred=num/100%10;
ten=num%100/10;
indiv=num%10;
switch(place)
{ case 5: printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);
printf("\n反序数字为: ");
printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);
break;
case 4: printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);
printf("\n反序数字为: ");
printf("%d%d%d%d\n",indiv,ten,hundred,thousand);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论