文档章节

谭浩强《C程序设计》书后习题 第九章

北风其凉
 北风其凉
发布于 2014/08/30 22:34
字数 872
阅读 22
收藏 0

最近要复习一下C和C++的基础知识,于是计划把之前学过的谭浩强的《C程序设计》和《C++程序设计》习题重新做一遍。

编译环境为:操作系统32位Win7,编译工具VC++6.0

第八章:预处理命令

9.1)定义一个带参数的宏,实现两参数的值互换

#include<stdio.h>

#define Swap(x,y) int temp = x; x = y; y = temp;

void main()
{
    int x, y;
    scanf("%d%d", &x, &y);

    printf("交换前:");
    printf("x=%d;y=%d\n", x, y);
    
    Swap(x,y);

    printf("交换后:");
    printf("x=%d;y=%d\n", x, y);
}

9.2)输入两个整数,求它们相除的余数

#include<stdio.h>

#define Mod(x,y) x % y

void main()
{
    int x, y;
    scanf("%d%d", &x, &y);

    //printf中用连续的两个百分号输出一个百分号
    printf("x=%d;y=%d;x%%y=%d\n", x, y, Mod(x,y));
}

9.3)定义一个带参数的宏,通过海伦公式计算三角形面积

#include<stdio.h>
#include<math.h>

#define p(a,b,c) (a+b+c)/2.0
#define area(a,b,c) sqrt(p(a,b,c)*(p(a,b,c)-a)*(p(a,b,c)-b)*(p(a,b,c)-c))

void main()
{
    double a, b, c;
    scanf("%lf%lf%lf", &a, &b, &c);
    printf("三边边长:%lf %lf %lf\n", a, b, c);
    printf("面积:%lf\n", area(a,b,c));
}

9.4)定义宏LEAP_YEAR(year),判断某年year是否为闰年

#include<stdio.h>

#define LEAP_YEAR(year) (year%400)?((year%100)?((year%4)?0:1):0):1

void main()
{
    int year;
    scanf("%d", &year);
    if(LEAP_YEAR(year))
    {
        printf("year %d is a leap year\n", year);
    }
    else
    {
        printf("year %d is a not leap year\n", year);
    }
}

9.6)设计实数输出格式,实数用 %6.2f 格式输出

#include<stdio.h>

#define _N_ "\n"
#define _F_ "%6.2f"
#define _F1_ _F_ _N_
#define _F2_ _F_ _F_ _N_
#define _F3_ _F_ _F_ _F_ _N_

void main()
{
    float x = 1, y = 2, z = 3;

    printf(_F1_, x);
    printf(_F2_, x, y);
    printf(_F3_, x, y, z);
}

9.7)设计所需的各种输出格式,放到format.h中

format.h中代码

#define NL "\n"

#define D "%d"
#define D2 "%d %d"
#define D3 "%d %d %d"
#define D4 "%d %d %d %d"
#define D5 "%d %d %d %d %d"

#define O "%o"
#define X "%x"
#define U "%u"
#define C "%c"
#define S "%s"

#define F "%f"
#define F2 "%f %f"
#define F3 "%f %f %f"
#define F4 "%f %f %f %f"
#define F5 "%f %f %f %f %f"

#define E "%e"
#define G "%g"

#define LF "%lf"
#define LF2 "%lf %lf"
#define LF3 "%lf %lf %lf"
#define LF4 "%lf %lf %lf %lf"
#define LF5 "%lf %lf %lf %lf %lf"

程序代码

#include<stdio.h>

#include"format.h"

void main()
{
    int x = 1, y = 2, z = 3;
    printf("输出3个整数");
    printf(D3 NL, x, y, z);

    float a = 1.0, b = 2.0, c = 3.0, d = 4.0;
    printf("输出4个浮点数");
    printf(F4 NL, a, b, c,d);
}

9.8)分别用函数和带参数的宏,从3个数中找出最大的数

#include<stdio.h>

//通过宏比较大小
#define max1(x,y,z) x>y?(x>z?x:z):(y>z?y:z)

//通过函数比较大小
int max2(int x, int y, int z)
{
    return x > y ? (x > z ? x : z) : (y > z ? y : z);
}

void main()
{
    int a = 3, b = 4, c = 5;
    printf("max:%d\n", max1(a,b,c));
    printf("max:%d\n", max2(a,b,c));
}

9.10)输入一段字符串。使用条件编译,如果之前定义的宏CHANGE为1,则将字符串中所有英文字母顺序后移一位,如果是z则变成a;如果之前定义的宏CHANGE为0,则输出原字符串

#include<stdio.h>

#define CHANGE 1

void main()
{
    char s[100];
    gets(s);
    
#if CHANGE

    int counter = 0;
    while(s[counter] != '\0')
    {
        if(s[counter] == 'z')
        {
            s[counter] = 'a';
        }
        else if(s[counter] == 'Z')
        {
            s[counter] = 'A';
        }
        else if((s[counter] >= 'a' && s[counter] < 'z') ||
            (s[counter] >= 'A' && s[counter] < 'Z'))
        {
            s[counter]++;
        }
        counter++;
    }
    printf("加密后字符串为:%s\n", s);

#else
    
    printf("输入的字符串为:%s\n", s);

#endif

}

END

© 著作权归作者所有

共有 人打赏支持
北风其凉

北风其凉

粉丝 118
博文 498
码字总数 463468
作品 4
朝阳
程序员
私信 提问
《机器学习》(周志华)课后习题参考答案

目录: 周志华《机器学习》课后习题解答系列(二):Ch1 - 绪论 周志华《机器学习》课后习题解答系列(三):Ch2 - 模型评估与选择 周志华《机器学习》课后习题解答系列(四):Ch3 - 线性模...

kchai31
2018/01/04
0
0
《趣学Python编程》习题总结

上周买了本书叫《趣学Python编程》(英文名:Python for kids),昨天看完后把书后面的题都做了下。由于第1、2章没有习题,第13章及之后都是描写实例的章节,因此这个总结性的文章中只包含了...

北风其凉
2014/12/01
0
0
【上海】想找个C|C++的编程工作,情况有点特殊,没有工作机会也欢迎指点一二

本人不是IT相关专业毕业,所有编程知识都是自学,目前拿得出手的有一个“ 软件设计师 证书”,2012年11月份考的,2013年1月31日成绩公布(合格),估计这几天就发证了。 语言方面:C语言和C...

毋忆典藏
2013/03/29
738
8
C语言书籍资料汇总

我汇总出自己收藏的C语言方面的书籍资料,方便后期使用,或许你也用的到。 以下内容,有链接的都可以下载。 一、书籍 元老级别的书籍: C程序设计语言.pdf (c语言之父) C Primer plus 第5...

BjarneCpp
2017/11/06
0
0
算法-第四版习题索引汇总

算法-第四版习题索引汇总 持续更新中。。。 第一章 基础 算法-第四版-1.1 基础编程模型-习题索引汇总 算法-第四版-1.2 数据抽象-习题索引汇总 算法-第四版-1.3 背包、队列和栈-习题...

himayan46
2016/09/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java单例模式学习记录

在项目开发中经常能遇见的设计模式就是单例模式了,而实现的方式最常见的有两种:饿汉和饱汉(懒汉)。由于日常接触较多而研究的不够深入,导致面试的时候被询问到后有点没底,这里记录一下学习...

JerryLin123
昨天
3
0
VSCODE 无法调试

VSCODE 无法调试 可以运行 可能的原因: GCC 的参数忘了加 -g

shzwork
昨天
4
0
理解去中心化 稳定币 DAI

随着摩根大通推出JPM Coin 稳定币,可以预见稳定币将成为区块链落地的一大助推器。 坦白来讲,对于一个程序员的我来讲(不懂一点专业经济和金融),理解DAI的机制,真的有一点复杂。耐心看完...

Tiny熊
昨天
4
0
5.线程实现

用于线程实现的Python模块 Python线程有时称为轻量级进程,因为线程比进程占用的内存少得多。 线程允许一次执行多个任务。 在Python中,以下两个模块在一个程序中实现线程 - _thread 模块 th...

Eappo_Geng
昨天
6
0
ServiceLoader

创建一个接口文件在resources资源目录下创建META-INF/services文件夹在services文件夹中创建文件,以接口全名命名创建接口实现类 内容me.zzp.ar.d.PostgreSQLDialectme.zzp.ar.d.Hype...

Cobbage
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部