谭浩强 《C程序设计》 第三版 第五章习题答案 (修正)

第五章习题答案

5.1 所谓关系运算实际上是比较运算,例如a>3是一个关系表达式,大于号是一个关系运算符,如果a的值是5,则满足给定的”a>3”条件,因此关系表达式的值“真“。。。

用逻辑运算符将关系表达式或逻辑表达式连接起来的式子就是逻辑表达式。

5.2 C语言编译系统在表示逻辑运算结果时,以数值1代表“真“,以0代表”假“,但在判断一个量是否为”真“时,以0代表”假“,以非0代表”真“,即将一个非零的数值认作为”真“。

5.3

0  1  1  0  1

5.4

//practice 5.4

void main()

{

         int a,b,c,t,max;

         scanf("%d%d%d",&a,&b,&c);

         max=a;

         if(max<b)

         {

                   t=max;

                   max=b;

                   b=t;

         }

         if(max<c)

         {

                   t=max;

                   max=c;

                   c=t;

         }

         printf("%2d/n",max);

}

void main()

{

         int a,b,c,temp,max;

         scanf("%d%d%d",&a,&b,&c);

         temp=(a>b)?a:b;

         max=(temp>c)?temp:c;

         printf("%3d/n",max);

}

//practice 5.5

void main()

{

         double x,y;

         scanf("%lf",&x);

         if(x-1<1e-6)

         {

            y=x;   

         }

         else if( x-1>=1e-6 && x-10<1e-6)

         {

                   y=2*x-1;

         }

         else if( x-10>=1e-6)

         {

                   y=3*x-11;

         }

         printf("%3lf/n",y);

}

//practice 5.6

void main()

{

         double score;

         char grade;

         printf("请输入成绩:/n");

         scanf("%lf",&score);

         while(score>100 || score<0)

         {

                   printf("/n 输入有误,请重新输入:/n");

                   scanf("%lf",&score);

         }

         switch((int)score/10)

         {

         case 9:grade='A';break;

         case 8:grade='B';break;

         case 7:grade='C';break;

         case 6:grade='D';break;

         default:grade='E';

         }

         printf("输入的成绩是%lf,相应的等级是%c/n",score,grade);

}

//pra 5.7

//第一种方法

void main()

{

         int num,i;

         char str[200]; 

         sprintf(str,"%d",num);    

         printf("the size of the integer is %d/n",strlen(str));

         puts(str);

         putchar('/n');

         i=strlen(str)-1;

         while(i>=0)

         {

                   putchar(*(str+i));

                   i--;

         }

    putchar('/n');

}*/

//第二种方法

//pra 5.7

void main()

{

         int num,size;

         int indiv,ten,hundred,thousand,ten_thousand;

         scanf("%d",&num);

         while(num>99999 || num<=0)

         {

                   printf("/n输入有误,请重新输入:/n");

                   scanf("%d",&num);

         }

         if(num>9999)

         {

                   size=5;

         }

         else if(num>999)

         {

                   size=4;

         }

         else if(num>99)

         {

                   size=3;

         }

         else if(num>9)

         {

                   size=2;

         }

         else

         {

                   size=1;

         }

         printf("size=%2d/n",size);

    printf("每位数字为:/n");

         ten_thousand=num/10000;

         thousand=num%10000/1000;

         hundred=num%10000%1000/100;

         ten=num%10000%1000%100/10;

         indiv=num%10000%1000%100%10;

         switch(size)

         {

                   case 5:printf("%2d,%2d,%2d,%2d,%2d/n",ten_thousand,thousand,hundred,ten,indiv);

                            printf("反序为:/n");

                            printf("%2d,%2d,%2d,%2d,%2d/n",indiv,ten,hundred,thousand,ten_thousand);

                            break;

                   case 4:printf("%2d,%2d,%2d,%2d/n",thousand,hundred,ten,indiv);

                            printf("反序为:/n");

                            printf("%2d,%2d,%2d,%2d/n",indiv,ten,hundred,thousand);

                            break;

                   case 3:printf("%2d,%2d,%2d/n",hundred,ten,indiv);

                            printf("反序为:/n");

                            printf("%2d,%2d,%2d/n",indiv,ten,hundred);

                            break;

                   case 2:printf("%2d,%2d/n",ten,indiv);

                            printf("反序为:/n");

                            printf("%2d,%2d/n",indiv,ten);

                            break;

                   case 1:printf("%2d/n",indiv);

                            printf("反序为:/n");

                            printf("%2d/n",indiv);

                            break;

                   default :printf("ERROR/n");

         }

}

//pra 5.8

//IF 语句的写法

/*int main()

{

        

         double I;//Interest

         double J;//奖金

         printf("单位 万元 /n");

         scanf("%lf",&I);

         if(I<=10)

         {

                   J=10*0.1;

         }

         else if((I>10)&&(I<=20))

         {

             J=10*0.1+(I-10)*0.075;

         }

         else if((I>20)&&(I<=40))

         {

                   J=10*0.1+10*0.075+(I-20)*0.05;

         }

         else if((I>40)&&(I<=60))

         {

                   J=10*0.1+10*0.075+20*0.05+(I-40)*0.03;

         }else if((I>60)&&(I<=100))

         {

                   J=10*0.1+10*0.075+20*0.05+20*0.03+(I-60)*0.015;

         }

         else if(I>100)

         {

                   J=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(I-100)*0.01;

         }/

         printf("%2lf/n",J);

        

         return 0;

}*/

int main()

{

        

         double I;//Interest

         double J;//奖金

         int c;

         printf("单位 万元 /n");

         scanf("%lf",&I);

         c=(int)I/10;

         if(c>10)

         {

                   c=10;

         }

         switch(c)

         {

                   case 0:J=10*0.1;break;

                   case 1:J=10*0.1+(I-10)*0.075;break;

                   case 2:

                   case 3:J=10*0.1+10*0.075+(I-20)*0.05;;break;

                   case 4:

                   case 5:J=10*0.1+10*0.075+20*0.05+(I-40)*0.03;break;

                   case 6:

                   case 7:

                   case 8:

                   case 9:J=10*0.1+10*0.075+20*0.05+20*0.03+(I-60)*0.015;break;

                   case 10:J=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(I-100)*0.01;break;

                   default:printf("error/n");

         }        printf("%2lf/n",J);

         return 0;

}

5.9 此题就是两两排序。。。略

5.10

// 5.10

void main()

{

         double x,y;

         scanf("%lf%lf",&x,&y);

         if(fabs(x)>=1 && fabs(x)<=3 && fabs(y)>=1 && fabs(y)<=3)

         {

                   printf("height is 10/n");

         }

         else

         {

                   printf("height is 0/n");

         }

}

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值