C Primer plus 第四章

复习题:

1.

程序无法继续工作,输入的内容由名字变成姓与名之后,scanf函数只能读取姓(中国习惯),名被保留在了缓冲区,导致第二个输入的体重无法读取,只能去读取缓冲区的名,名不是十进制的整数,导致程序无法正常工作。

2.

a.He sold the painting for $2.34.
b.Hi!
c.His Hamlet was funny without being vulgar.
has 42 characters.
d.Is 1.20e+003 the same as 1201.00?

3.

使用\”。
更改之后:printf(“\”%s\”\n has %d characters.\n”, Q, strlen(Q))

4.

更改之后的代码:
#include

5.

printf("The copy of %c sells for %0.2f./nThat is %% %0.0f of list./n.", BOOK, cost, percent);

6.

a. %d
b. %4X
c. %1.3f
d.%12.2e
e. %-30c

7.

a. %15lu
b. %#4x
c. %-12.2E
d. %+10.3f
e. %8.8s

8.

a. %6.4d
b. %*0
c. %2c
d. %+0.2f
e. %-7.5s

9.

a. int a
scanf(“%d”, &a);
b. float b, c
scanf(“%f%E”, &b, &c);
c. char c[40]
scanf(“%s”, linguini);
d. char d[40]
int dd
scanf(“%s %d”, d, &dd);
e.int ee
scanf(“%s %d”, e, &ee);

10.

空格,制表符,换行符

11.

可以替换,但是预处理器无法分别。

编程练习

1.

#include <stdio.h>
int main(void)
{
    char name[20];
    char familyname[20];

    printf("What's your full name?\n");
    scanf("%s%s", name, familyname);
    printf("Your name is %s, %s.\n", name, familyname);
    return 0;
}

2.

#include <stdio.h>
#include <string.h>
int main(void)
{
    char name[20];
    int width;

    printf("Enter your name:\n");
    scanf("%s", name);
    printf("\"%s\"\n", name);
    printf("\"%20s\"\n", name);
    printf("\"%-20s\"\n", name);
    width = strlen(name)+ 3;
    printf("%*s\n", width, name);
    return 0;
}

3.

#include <stdio.h>
int main(void)
{
    float num;

    printf("Enter a number:\n");
    scanf("%f", &num);
    printf("a.The input is %0.1f or %0.1e.\n", num, num);
    printf("b.The input is %+.3f or %0.3E.\n", num, num);
    return 0;
}

4.

#include <stdio.h>
int main(void)
{
    float height;
    char name[20];

    printf("Enter your height(feet) and your name:\n");
    scanf("%f %s", &height, name);
    printf("%s, you are %f feet tall.\n", name, height);
    return 0;
}

5.

#include <stdio.h>
#include <string.h>
int main(void)
{
    char name[20], firstname[20];

    printf("Enter your full name:\n");
    scanf("%s %s", firstname, name);
    printf("%s %s\n", firstname, name);
    printf("%*d %*d\n", strlen(firstname), strlen(firstname), strlen(name), strlen(name));
    printf("%s %s\n", firstname, name);
    printf("%-*d% -*d\n", strlen(firstname), strlen(firstname), strlen(name), strlen(name));
    return 0;
}

6.

#include <stdio.h>
#include <float.h>
int main(void)
{
    double dou = 1.0/3.0;
    float doub = 1.0/3.0;

    printf("%0.4f %0.4f\n", dou, doub);
    printf("%0.12f %0.12f\n", dou, doub);
    printf("%0.16f %0.16f\n", dou, doub);
    printf("%d %d", FLT_DIG, DBL_DIG);
    return 0;
}

7.

#include <stdio.h>
#define L 3.785
#define KM 1.609
int main(void)
{
    float miles, gal, km, l;

    printf("Enter your miles and gal:\n");
    scanf("%f %f", &miles, &gal);
    printf("%0.1f\n", miles / gal);

    km = KM * miles;
    l = L * gal;
    printf("%0.1f\n", l / 100 * km);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值