加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【第九章 预处理】C语言练习题答案

(2011-06-13 20:16:38)
标签:

杂谈

分类: C语言教学

第九章  预处理

1. 单项选择题

1)【答】D

2)【答】C

3)【答】D

4)【答】D

5)【答】D

6)【答】D

7)【答】B

8)【答】B

9)【答】C

10)【答】D

2. 填空题

1)【答】a=9 a=9 a=11

2)【答】10

3)【答】x=93

4)【答】a=3,b=7,c=5

3.  编程题

1)编写一个宏定义AREA(a,b,c),用于求一个边长为abc的三角形的面积。其公式为:s=(a+b+c)/2

【解】对应的宏如下:

#define S(a,b,c) ((a+b+c)/2)

#define AREA(a,b,c) \

(sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c)))

2)编写一个程序,定义一个判断字符是大写字母的宏,一个判断字符是小写字母的宏以及实现大小写字母相互转换的宏,并将用户输入的一个字符串中的大小写字母互换。

【解】判断为大写字母的宏是isupper(c),判断为小写字母的宏是islower(c),将大写字母转换为小写字母的宏是tolower(c),将小写字母转换为大写字母的宏是toupper(c)。程序如下:

#include <stdio.h>

#define isupper(c) ((c)>='A' && (c)<='Z')

#define islower(c) ((c)>='a' && (c)<='z')

#define tolower(c) (isupper(c) ? ((c)+('a'-'A')):(c))

#define toupper(c) (islower(c) ? ((c)-('a'-'A')):(c))

main()

{

    char s[20];

    int i;

    printf("输入字符串:");

    scanf("%s",s);

    for (i=0;s[i];i++)

        if (isupper(s[i]))

            s[i]=tolower(s[i]);

        else if (islower(s[i]))

            s[i]=toupper(s[i]);

    printf("转换的结果:%s\n",s);

}

3)编写一个程序,用户输入一个字符串,可以原样输出,也可以逆序输出。使用条件编译的方法加以控制。

【解】程序如下:

#include <stdio.h>

#define CONVERSE

main()

{

    char str[50],*p=str;

    printf("输入一字符串:");

    scanf("%s",str);

    printf("输出结果:");

    #ifndef CONVERSE

        printf("%s\n",str);        

    #else

        while (*p++!='\0');        

        p-=2;

        while (p>=str)

            printf("%c",*p--);

        printf("\n");

    #endif

}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有