C语言程序设计(第5版)习题解答-第3章

第三章

  1. 计算10年后国民生产总值与现在相比增长多少百分比
    代码如下
#include <stdio.h>
#include <math.h>

int main()
{
    float p, r;
    int n = 10;
    r = 0.07;
    p = pow(1 + r, n);
    printf("p = %f\n", p);
    return 0;
}
eturn 0;
}

  1. 5种存款方法利息的计算
    代码如下
#include <stdio.h>
#include <math.h>

float profit(int n, float p)
{
    float result = (1 + p * n);
    return result;
}
int main()
{
    float r5 = 0.03, r3 = 0.0275, r2 = 0.021, r1 = 0.015, r0 = 0.0035;
    float p = 1000;
    float p1, p2, p3, p4, p5;
    p1 = p * profit(5, r5);
    p2 = p * profit(2, r2) * profit(3, r3);
    p3 = p * profit(3, r3) * profit(2, r2);
    p4 = p * pow(1 + r1, 5);
    p5 = p * pow(1 + r0 / 4, 4 * 5);
    printf("p1 = %f\n", p1);
    printf("p2 = %f\n", p2);
    printf("p3 = %f\n", p3);
    printf("p4 = %f\n", p4);
    printf("p5 = %f\n", p5);
    return 0;
}
  1. 购房贷款计算
    代码如下
#include <stdio.h>
#include <math.h>

int main()
{
    int d = 300000, p = 6000;
    float r = 0.01, m;
    m = log10(p/(p-d*r))/log10(1+r);
    printf("m=%6.1f\n", m);
    return 0;
}
  1. 分析下面的程序
    代码如下
#include <stdio.h>
int main()
{
    char c1=97, c2=98;
    printf("c1 = %c, c2 = %c\n", c1, c2);
    printf("c1 = %d, c2 = %d\n", c1, c2);
    return 0;
}

输出结果为

c1 = a, c2 = b
c1 = 97, c2 = 98

修改程序后,输出结果为

c1 = ? c2 = ?
c1 = -59, c2 = -58

这是由于字符型char是作为signed char类型处理,以%c格式符输出时,有效范围是0~127;用%d格式输出时,用补码形式输出。

  1. 用下面的scanf函数输入数据
#include <stdio.h>
int main()
{
    int a, b;
    float x, y;
    char c1, c2;
    scanf("a=%d b=%d",&a, &b);
    scanf("%f%e", &x, &y);
    scanf("%c%c", &c1, &c2);
    return 0;
}

在输入x,y后应紧接着输入字符c1,c2,中间不能有空格

  1. 译码
    代码如下
#define _USE_MATH_DEFINES
#include <stdio.h>
#include <math.h>
int main()
{
    char c1 = 'C', c2 = 'h', c3 = 'i', c4 = 'n', c5 = 'a';
    // 用原字母后面第4个字母代替原来的字母
    c1 = c1 + 4;
    c2 = c2 + 4;
    c3 = c3 + 4;
    c4 = c4 + 4;
    c5 = c5 + 4;
    printf("%c%c%c%c%c\n", c1, c2, c3, c4, c5);
    return 0;
}
  1. 计算圆
    代码如下
#include <stdio.h>
int main()
{
    float h, r, l, s, sq, vq, vz;
    printf("radius = ");
    scanf("%f", &r);
    printf("height = ");
    scanf("%f", &h);
    l = 2 * M_PI * r;
    s = M_PI * r * r;
    sq = 4 * M_PI * r * r;
    vq = M_PI * r * r * r;
    vz = M_PI * r * r * h;
    printf("l = %f\n", l);
    printf("s = %f\n", s);
    printf("sq = %f\n", sq);
    printf("vq = %f\n", vq);
    printf("vz = %f\n", vz);
    return 0;
}
  1. 编程序
    代码如下
#include <stdio.h>
int main()
{
    char c1, c2;
    c1 = getchar();
    c2 = getchar();
    printf_s("print with putchar:");
    putchar(c1);
    putchar(c2);
    printf_s("\n print with printf:");
    printf("%c%c", c1, c2);
    return 0;
}

连续使用两个getchar()需要连续输入两个字符,c1c2可定义为整型;使用printf函数配合格式符%d即可输出ASCII码;char类型占一个字节,int占4个字节,在有效范围内可代替。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值