C语言程序设计:现代方法 第4章 课后习题答案

除书籍社区给出的题解外,其余为个人所解,仅供参考

第4章 表达式

练习题

  1. (a) 1 2
    (b) 0
    (c) 1
    (d) 0
  2. 自c99以后,一样
  3. (a) 1
    (b) -1
    (c) -1
    (d) 1
  4. (a) 3
    (b) -3
    (c) 3
    (d) -3
  5. 不可行
  6. 正确
  7. (a) 63 8
    (b) 3 2 1
    (c) 2 -1 3
    (d) 0 0 0
  8. (a) 12 12
    (b) 3 4
    (c) 2 8
    (d) 6 9
  9. (a) 0 2
    (b) 4 11 6
    (c) 0 8 7
    (d) 3 4 5 4
  10. (a) 6 16
    (b) 6 -7
    (c) 6 23
    (d) 6 15
  11. ++i
  12. (a) ((a * b) - (c * d)) + e
    (b) ((a / b) % c) / d
    (c) (((- a) - b) + c) - (+d)
    (d) ((a * (-b)) / c) - d
  13. (a) i=3, j=2
    (b) i=0, j=2
    (c) i=1, j=2
    (d) i=1, j=3

编程题

  1.   int n;
      printf("Enter a two-digit number: ");
      scanf("%d", &n);
    
      printf("The reversal is: %d%d\n", n % 10, n / 10);
    
  2.  int n;
     printf("Enter a three-digit number: ");
     scanf("%d", &n);
    
     printf("The reversal is: %d%d%d\n", n % 10, (n / 10) % 10, n / 100);
    
  3.   int i, j, k;
      printf("Enter a three-digit number: ");
      scanf("%d%d%d", &i, &j, &k);
    
      printf("The reversal is: %d%d%d\n", i, j, k);
    
  4.  int n;
     printf("Enter a number between 0 and 32767: ");
     scanf("%d", &n);
    
     printf("The reversal is: %d%d%d%d%d\n", n/4096%8, n/512%8, n/64%8, n/8%8, n%8);
    
  5.  unsigned long long upc;
     int d, i1, i2, i3, i4, i5, j1, j2, j3, j4, j5,
         first_sum, second_sum, total;
     printf("Enter the first 11 digits of a UPC: ");
     scanf("%llu", &upc);
    
     d = upc / 10000000000;
     i1 = upc / 1000000000 % 10;
     i2 = upc / 100000000 % 10;
     i3 = upc / 10000000 % 10;
     i4 = upc / 1000000 % 10;
     i5 = upc / 100000 % 10;
    
     j1 = upc / 10000 % 10;
     j2 = upc / 1000 % 10;
     j3 = upc / 100 % 10;
     j4 = upc / 10 % 10;
     j5 = upc % 10;
    
     first_sum = d + i2 + i4 + j1 + j3 + j5;
     second_sum = i1 + i3 + i5 + j2 + j4;
     total = 3 * first_sum + second_sum;
    
     printf("Check digit: %d\n", 9 - ((total - 1) % 10));
    
  6.  // 注意数据类型范围
     unsigned long long int ean;
     int c1, c2, c3, d, i1, i2, i3, j1, j2, j3, j4, j5,
         first_sum, second_sum, total;
     printf("Enter the first 12 digits of a EAN: ");
     scanf("%llu", &ean);
    
     c1 = ean / 100000000000;
     c2 = ean / 10000000000 % 10;
     c3 = ean / 1000000000 % 10;
     d  = ean / 100000000 % 10;
     i1 = ean / 10000000 % 10;
     i2 = ean / 1000000 % 10;
     i3 = ean / 100000 % 10;
     j1 = ean / 10000 % 10;
     j2 = ean / 1000 % 10;
     j3 = ean / 100 % 10;
     j4 = ean / 10 % 10;
     j5 = ean % 10;
    
     first_sum = c2 + d + i2 + j1 + j3 + j5;
     second_sum = c1 + c3 + i1 + i3 + j2 + j4;
     total = 3 * first_sum + second_sum;
    
     printf("Check digit: %d\n", 9 - ((total - 1) % 10));
    
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值