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小时内删除。