C++ Primer Plus 代码学习解析(第六章 6.6-6.8)

6.6 more_and.cpp

#include <iostream>
const char* qualify[4] =       // an array of pointers*/
{                               // to strings
    "10,000-meter race.\n",
    "mud tug-of-war.\n",
    "masters canoe jousting.\n",
    "pie-throwing festival.\n"
};
int main()
{
    using namespace std;
    int age;
    cout << "Enter your age in years: ";
    cin >> age;
    int index;

    if (age > 17 && age < 35)
        index = 0;
    else if (age >= 35 && age < 50)
        index = 1;
    else if (age >= 50 && age < 65)
        index = 2;
    else
        index = 3;

    cout << "You qualify for the " << qualify[index];
    // cin.get();
    // cin.get();
    return 0;
}
  1. 与上述简单的&&条件不同,本代码添加了if_else条件判断,与&&相结合,在不同的年龄段分别有不同的结果
  2. 最终结果不同导致显示储存在指针数组中不同的文字

6.7 not.cpp

#include <iostream>
#include <climits>
bool is_int(double);
int main()
{
    using namespace std;
    double num;

    cout << "Yo, dude! Enter an integer value: ";
    cin >> num;
    while (!is_int(num))    // continue while num is not int-able
    {
        cout << "Out of range -- please try again: ";
        cin >> num;
    }
    int val = int(num);    // type cast
    cout << "You've entered the integer " << val << "\nBye\n";
    // cin.get();
    // cin.get();
    return 0;
}

bool is_int(double x)
{
    if (x <= INT_MAX && x >= INT_MIN)   // use climits values
        return true;
    else
        return false;
}
  1. 本代码讲了逻辑运算符!的使用,在之前也用过很多次,在该代码中需要注意的有以下几点
  2. 首先是布尔型(bool)变量,它的值只有 真 (true) 和假 (false)两种。
  3. 之后则是符号常量INT_MAX 和 INT_MIN表示int的取值范围
  4. 该程序使用while来拒接无效输入
  5. 确定为有效输入后,使用 int val = int (num)将其赋给一个int变量

6.8 cctypes.cpp

#include <iostream>
#include <cctype>              // prototypes for character functions
int main()
{
    using namespace std;
    cout << "Enter text for analysis, and type @"
        " to terminate input.\n";
    char ch;
    int whitespace = 0;
    int digits = 0;
    int chars = 0;
    int punct = 0;
    int others = 0;

    cin.get(ch);                // get first character
    while (ch != '@')            // test for sentinel
    {
        if (isalpha(ch))         // is it an alphabetic character?
            chars++;
        else if (isspace(ch))    // is it a whitespace character?
            whitespace++;
        else if (isdigit(ch))    // is it a digit?
            digits++;
        else if (ispunct(ch))    // is it punctuation?
            punct++;
        else
            others++;
        cin.get(ch);            // get next character
    }
    cout << chars << " letters, "
        << whitespace << " whitespace, "
        << digits << " digits, "
        << punct << " punctuations, "
        << others << " others.\n";
    // cin.get();
    // cin.get();
    return 0;
}
  1. 该代码演示了函数软件包cctypes(ctype.h) 的用法
  2. 函数isalpha(ch),如果ch是一个字母,则返回一个非零值,代码生效, chars++,如果不是,则返回零
  3. 同样,函数isspace(ch),如果ch是一个空格,则返回一个非零值,代码生效,whitespace++,如果不是,则返回零
  4. 剩下的同理,isdigit(ch)表示数字,ispunct(ch)表示标点符号,。等
  5. 最后进行统计,用@作为结尾标识符

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值