编程原理&使用C ++的实践 - 第04章'试试这个'练习

时间:2017-02-01 05:11:15

标签: c++

我对上面提到的书中的这个练习感到有点困惑 -

“字符'b'字符('a'+ 1)'c'字符(' a'+ 2)等。使用循环写出一个带有相应整数值的字符表:
一个97
b 98
c 99
...
z 122“

这本书已经过了循环,我读了一下,因为我仍然感到困惑,如何做到这一点,而不是单独列出每个值(我假设不是这一点),下一节是关于 for 循环。我想也许你可以以某种方式将字母表中的字母增加一个循环中的1(所以a - > b,b - > c等),但如果这确实可行,那么这本书还没有结束如何实现这一点。

先谢谢,我在业余时间独自完成这本书,所以我没有教授提出这样的问题,而且试试这个练习没有在Bjarne的网站上列出他们的答案。 / p>

6 个答案:

答案 0 :(得分:2)

只需写一个简单的循环:

for(auto c = 'a';c <= 'z' ;c++)
    cout<<c<<" "<<int(c)<<endl;

答案 1 :(得分:2)

本书指的是你可以迭代整数并在字符算术中使用控制变量来获取表格。例如,对于整数,您可以使用

迭代0到25的整数
#include<boost/asio.hpp>
#include<iostream>

int main() {
    boost::asio::io_service service;
    for (int i = 0; i < 10; i++) {
        service.post([i] {
            std::cout << i << std::endl;
        });
    }
    service.run();
    system("pause");
    return 0;
}

现在,您可以应用问题提示int i = 0; while (i <= 25) { cout << i << endl; i = i + 1; // or ++i } 来获得其余答案。我会让你解决这个问题。

答案 2 :(得分:2)

以下是我解决问题的方法:)

int main (void) {
  char c = 'a';

  while (c <= 'z')  {
    std::cout << c << "\t" << c - 0 << '\n'; // c - 0 is convertion to int without cast
    ++c;
  }   

  return 0;
}

答案 3 :(得分:1)

您可以这样做:

char ch = 'a';
for (int i = 0; i < 26; ++i)
    cout << (char)(ch + i) << " " << (ch + i) << endl;

这将生成您期望的输出。

答案 4 :(得分:0)

我添加了评论,以便您可以了解我的想法,也可以更新。

以下是Bjarne Stroustrup撰写的第4章尝试本练习的答案:使用C ++编写原理和实践:

    // Description- Try this exercise using a while statement to provide a series of characters from the ASCII code.
    #include "stdafx.h"
    #include "Std_lib_facilities.h"
    int main()

{
    int i = 96; // Beginning/initialisation of the integers which will be converted to char (s) in cout.

    while (i<122) // The limit for the while statement is the integer which will be safely converted to the last char.
    {
        cout << i + 1 << '\t'<< char (i+1)<<'\n'; ++i; // The first integer will be 1 plus the initial = 97. Then followed by a tab. 
                                                       // Then followed by the integer 97 being safely converted to an char using the ASCII.
                                                       // The while loop in the two comments is repeated till 122 is converted safely to z.

    }
}

答案 5 :(得分:0)

这是使用while循环的一种方法:

#include <iostream>


int main()
{
    int i = 0; //Initialize i to 0.

    while (i < 26) // 0 - 25.
    {
        int val = 'a' + i; // char('a' + 1), int('a' + 1). 
        std::cout << char(val) <<  "\t" << int(val) << std::endl;
        ++i; //Increments the while loop variable i
    }
    return 0;
}

输出:

a       97
b       98
c       99
d       100
e       101
f       102
g       103
h       104
i       105
j       106
k       107
l       108
m       109
n       110
o       111
p       112
q       113
r       114
s       115
t       116
u       117
v       118
w       119
x       120
y       121
z       122