我想从ASCII表中从33-47和-58循环到64和91到96,然后全部显示在一起,但是我认为我做错了。我该如何解决?
我正在将Windows 8和代码块用作IDE
int main()
{
for(int i=33; i<=47 ;i++){
for(int j=58; j<=64;j++){
for(int z=91; z<=96;z++){
std::cout << (char)z;
}
}
}
return 0;
}
循环完成后,应显示为
!“ ##%&'()* +,-。/ :; <=>?@ [] ^ _`{|}〜
答案 0 :(得分:5)
您将这些循环嵌套的方式将在循环1的每个迭代中运行整个循环2,而循环2的每个迭代将在整个循环3中运行。
由于只需要一个输出字符串,因此可以通过三个单独的循环来实现所需的功能。
$conn = new mysqli("localhost", "root", "", "admin");
if ($conn->connect_error) {
die('Connect Error (' . $conn->connect_errno . ') ' . $conn->connect_error);
}
$result = $conn->query("SELECT * FROM users where username = '$username' and password = '$password'")
or die ("Failed to query database " .$conn->error);
if ($row = $result->fetch_array()) {
echo "login success!!! Welcome " .$row['username'];
}
else {
echo "Failed to login!";
}
希望此页面可以为for循环嵌套https://www.tutorialspoint.com/cplusplus/cpp_nested_loops.htm
提供更详尽的说明答案 1 :(得分:4)
让我们退后一步...
典型的for循环如下所示(有关详细信息,请参考cppreference):
for ( init; condition; increment) {
loop-body
}
等效于:
{
init;
while(condition) {
loop-body
increment
}
}
放入循环体中的 所有都会重复执行,直到条件为false
(即while
为true
)为止。例如
for (int i= start; i < stop; ++i) foo(i);
函数foo
将被调用(stop-start)
次。
您的代码
要查看代码的实际作用,可以添加一些cout
int main() {
for(int i=33; i<=47 ;i++){
for(int j=58; j<=64;j++){
for(int z=91; z<=96;z++){
std::cout << "i = " << i;
std::cout << "j = " << j;
std::cout << "z = " << z;
}
}
}
}
或使用调试器。
嵌套循环
要清楚:您不需要将循环嵌套在代码中,(嵌套)循环通常是不需要的。话虽如此,您可以使用嵌套循环的一个随机示例是打印*
int height = 5;
int width = 5;
for (int i=0; i<height; ++i) {
for (int j=0; j<width; ++j) {
std::cout << "*";
}
std::cout << "\n";
}
环路?
我想从33-47和-58循环到64,从91循环到ASCII 96 表格,然后一起显示
只要做一件事情
for (char c=33; c<48; c++) { std::cout << c; }
for (char c=58; c<65; c++) { std::cout << c; }
for (char c=91; c<97; c++) { std::cout << c; }
无循环
循环完成后,应该这样显示
!“ ##%&'()* +,-。/ :; <=>?@ [] ^ _`{|}〜
目前还不清楚为什么要循环播放。如果要打印这些字符,可以通过
进行打印std::cout << "!\"#$%&'()*+,-./:;<=>?@[]^_`{|}~\n";
请注意,您必须隔开"
(即在前面放置\
)。
循环
如果您确实编写了循环,请尝试避免使用幻数。而是使用start
/ stop
或height
/ width
和33
/ 48
中给数字起有意义的名称。如果可以,请使用迭代器代替索引。 Range-based for loops甚至允许您忽略迭代器,如
std::string outp = "!\"#$%&'()*+,-./:;<=>?@[]^_`{|}~";
for (auto letter : outp) std::cout << letter;
答案 2 :(得分:2)
您正在处理三个值范围,因此希望循环遍历这些范围。对于每个范围,您都希望循环遍历该范围内的值。
您可以这样做:
int main()
{
std::vector<std::pair<int, int>> v{{33, 47}, {58, 64}, {91, 96}};
for (auto p : v)
{
for (int i = p.first; i <= p.second; i++)
{
std::cout << static_cast<char>(i);
}
}
return 0;
}